MindCheck / blueprint.md
MindCheck Bot
Deploy Next.js and Flask backend
8d3e440
|
Raw
History Blame Contribute Delete
5.24 kB

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