MindCheck Blueprint
Dokumen ini menjelaskan struktur lengkap dan arsitektur dari repositori MindCheck. Aplikasi ini dibagi menjadi dua bagian utama: Frontend (Next.js) dan Backend (Flask + PyTorch).
π Struktur Repositori
NLP_AOL/
βββ NOTEBOOK&MODEL/
β βββ model.pt # π§ Model Weights: Hasil fine-tuning MPNet (multi-output regressor)
β βββ Copy_of_NLP_AOL.ipynb # π Jupyter Notebook: Berisi tahapan EDA, ekstraksi fitur DAIC-WOZ, training, dan evaluasi model
β
βββ backend/
β βββ app.py # βοΈ Flask API Server: Menjalankan model AI dan memproses teks input
β βββ requirements.txt # π¦ Python Dependencies: Daftar library untuk backend (torch, flask, transformers, dll)
β
βββ mindcheck-web/ # π₯οΈ Frontend Directory (Next.js)
β βββ node_modules/ # π¦ NPM Dependencies: Folder hasil instalasi library JavaScript/TypeScript (jangan dimodifikasi manual)
β βββ public/ # πΌοΈ Static Assets: Berisi gambar, icon, font, atau file statis lain yang dapat diakses publik
β βββ tailwind.config.ts # π¨ Konfigurasi Tailwind CSS (warna, font, breakpoint)
β βββ tsconfig.json # π οΈ Konfigurasi TypeScript
β βββ package.json # π Daftar dependencies JavaScript dan script npm (dev, build, start)
β β
β βββ src/
β βββ app/ # π£οΈ Next.js App Router
β βββ globals.css # π
Global CSS & Tailwind Directives
β βββ layout.tsx # π§© Root Layout: Struktur HTML utama yang menyelimuti semua halaman
β βββ page.tsx # π Landing Page (/)
β β
β βββ chat/
β β βββ page.tsx # π¬ Chatbot Interface (/chat): UI interaktif untuk wawancara 8 pertanyaan
β β
β βββ result/
β β βββ page.tsx # π Result Page (/result): Visualisasi skor PHQ-8, severity, dan rekomendasi
β β
β βββ history/
β β βββ page.tsx # π°οΈ History Page (/history): Menampilkan riwayat screening yang tersimpan di localStorage
β β
β βββ api/
β βββ predict/
β βββ route.ts # π API Proxy: Meneruskan request dari frontend Next.js ke backend Flask di port 8000
β
βββ README.md # π Dokumentasi utama proyek
βββ blueprint.md # πΊοΈ Dokumentasi struktur direktori (file ini)
βββ example_answers.md # π Skenario jawaban contoh untuk testing chatbot
π§© Penjelasan Komponen
1. π§ AI Model (NOTEBOOK&MODEL/model.pt)
Ini adalah core kecerdasan buatan dari aplikasi. Model ini dibangun menggunakan arsitektur sentence-transformers/all-mpnet-base-v2 yang telah di-finetune menggunakan dataset DAIC-WOZ.
Model menerima 2 bentuk input:
- Teks transkrip (di-tokenisasi menjadi
input_idsdanattention_maskdengan strategi pemotongan Head-Tail). - Fitur Non-Verbal (NV) berupa vektor 18 dimensi (rasio kata negatif, hitungan filler words, kecepatan bicara, dll).
Model ini bersifat Multi-Output Regressor, artinya ia langsung mengeluarkan 8 nilai prediksi secara bersamaan (satu untuk setiap item pertanyaan PHQ-8).
2. βοΈ Backend API (backend/)
Ditulis menggunakan Python dan Flask. Bertugas sebagai jembatan antara aplikasi web dan model AI.
- Membaca request JSON berisi 8 jawaban teks dari user.
- Menggabungkannya menjadi satu transkrip panjang.
- Melakukan tokenisasi dan ekstraksi fitur menggunakan fungsi
extract_nv_features. - Menjalankan inferensi model PyTorch.
- Mengembalikan response JSON berisi array skor, skor total, kategori depresi (Minimal - Severe), dan daftar kata negatif/filler yang terdeteksi.
- Berjalan di Port 8000 secara default untuk menghindari bentrok dengan port sistem operasi (seperti AirPlay macOS di port 5000).
3. π₯οΈ Frontend Web (mindcheck-web/)
Ditulis menggunakan Next.js 14 (App Router), TypeScript, dan Tailwind CSS.
/(Landing Page): Penjelasan aplikasi, edukasi tentang apa itu tes PHQ-8, dan instruksi cara kerja./chat(Screening Interface): Menyimulasikan wawancara klinis. User diwajibkan mengetik bebas untuk menjawab 8 pertanyaan terbuka. Terdapat sistem fallback scoring berbasis keyword & sentimen yang aktif otomatis jika backend AI sedang mati./api/predict(API Proxy): Membantu mengatasi masalah CORS. Frontend tidak menembak langsung ke Flask, melainkan menembak ke route internal Next.js ini, yang kemudian meneruskannya ke Flask (http://127.0.0.1:8000/predict).- Data Storage: Semua riwayat hasil prediksi disimpan secara lokal di browser menggunakan
localStorage(mindcheck_latest_resultdanmindcheck_history). Data anonim dan tidak ada database cloud yang digunakan demi privasi.