adamnwr/ml-insight-microservice
๐ง ML Insight Microservice (Capstone Project)
Microservice ini bertugas menganalisis pola belajar pengguna menggunakan Deep Learning dan Heuristic Rules. Service ini memberikan label gaya belajar (Fast, Consistent, Reflective) serta pesan motivasi yang dipersonalisasi.
๐ Perubahan Arsitektur (New Push Architecture)
Mulai versi 2.0, service ini menggunakan metode PUSH DATA. Backend Node.js bertanggung jawab untuk mengirimkan ("Push") data statistik ke service ini. ML Service tidak lagi melakukan request balik ke Backend/Database.
Flow: Backend (Node.js) โก๏ธ Kirim JSON (POST) โก๏ธ ML Service (Python) โก๏ธ Response Insight
๐ API Documentation
Dokumentasi interaktif (Scalar/OpenAPI) tersedia di:
- Local:
http://localhost:7860/docs - Production:
https://adamnwr-ml-insight-microservice.hf.space/docs
๐ Main Endpoint
`POST /api/predict/{user_id}`
Endpoint ini menerima paket data statistik, memprosesnya, dan mengembalikan profil belajar.
Request Headers
Request Body (JSON Payload)
Backend WAJIB mengirimkan struktur berikut:
{
"stats": {
"avg_study_duration_hours": 1.5, // Rata-rata durasi per modul (Jam)
"total_tutorial_completed": 15, // Jumlah materi selesai
"total_study_days": 5, // Jumlah hari aktif belajar
"consistency_score": 4.2, // Standar Deviasi aktivitas (0 = Sangat Konsisten)
"avg_exam_score": 85.0 // Rata-rata nilai ujian
},
"user_profile": {
"name": "Budi Santoso" // Nama user untuk sapaan personal
}
}Catatan: Jika ada field yang kosong/null, ML Service akan otomatis mengisinya dengan 0 (Zero Imputation) agar tidak crash.Response (Success - 200 OK)
{
"status": "success",
"data": {
"classification": "Consistent Learner",
"content": {
"title": "Sang Konsisten ๐",
"message": "Halo Budi Santoso, kekuatan utamamu adalah disiplin. Grafik belajarmu stabil...",
"action": "Pertahankan streak belajarmu!"
},
"meta": {
"ai_confidence": "98.50%",
"data_stability": "High",
"disclaimer": "Analisis ini menggunakan model statistik beta."
}
}
}Error Responses
400 Bad Request: JSON Body tidak memiliki objectstats.401 Unauthorized: Token tidak dikirim.403 Forbidden: Token salah.500 Internal Server Error: Terjadi kesalahan pada logika model.
๐ ๏ธ Instalasi & Menjalankan Lokal
- Clone Repository
git clone <repo_url>
cd ml-insight-microservice- Buat Virtual Environment
python -m venv venv
# Windows
venv\Scripts\activate
# Mac/Linux
source venv/bin/activate- Install Dependencies
pip install -r requirements.txt- Setup Environment Variables (.env) Buat file
.envdi root folder:
ML_SERVICE_TOKEN=ML_LearnInsight_A25- Jalankan Server
python app.py Server akan berjalan di http://0.0.0.0:7860.
๐ Struktur Proyek
.
โโโ artifacts/ # Model .keras dan Scaler .pkl
โโโ core/
โ โโโ ai_engine.py # Class untuk load model & predict
โ โโโ config.py # Konfigurasi & Threshold Bisnis
โโโ services/
โ โโโ insight_service.py # Logic Utama (Gatekeeper, Mapping, Storytelling)
โโโ app.py # Entry Point (Flask API Routes)
โโโ requirements.txt
โโโ README.md๐ง Logika Bisnis (Insight Logic)
Sistem ini menggunakan Gatekeeper Layers sebelum masuk ke Neural Network:
- Anti-Cheat: Jika durasi belajar
< 2 menit/materi, user ditandai sebagaiAnomaly. - Newcomer: Jika materi selesai
< 5, user ditandai sebagaiNewcomer(AI belum aktif). - AI Classification: Mengklasifikasikan user ke:
- Fast Learner: Cepat tapi perlu dicek pemahamannya.
- Consistent Learner: Stabil dan disiplin.
- Reflective Learner: Lambat tapi mendalam (teliti).
Capstone Project A25-CS242
