# 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.