| # 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 |
|
|
| ```text |
| 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_ids` dan `attention_mask` dengan 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_result` dan `mindcheck_history`). Data anonim dan tidak ada database cloud yang digunakan demi privasi. |
|
|