MIF_E31231708/README.md

145 lines
2.6 KiB
Markdown

# ConfiVoice
Struktur utama project:
```text
confivoice3/
├── cv_app/ # Aplikasi Flutter mobile
├── ml/ # Machine learning, model, dataset, dan API prediksi
└── cv_web/ # Website admin untuk melihat data hasil prediksi siswa/i
```
## 1. Jalankan API Prediksi
API berada di folder `ml/`.
```bash
cd ml
../cv_app/.venv/bin/python -m uvicorn api_app:app --host 0.0.0.0 --port 8000
```
Endpoint penting:
```text
POST http://localhost:8000/predict
POST http://localhost:8000/predictions
GET http://localhost:8000/predictions
GET http://localhost:8000/model
```
`POST /predict` hanya menjalankan analisis dan menampilkan hasil di Flutter.
Data baru masuk database setelah pengguna menekan tombol `Simpan Hasil`, yang
mengirim data ke `POST /predictions`.
## 2. Jalankan Flutter Mobile
Flutter berada di folder `cv_app/mobile_app/`.
```bash
cd cv_app/mobile_app
flutter pub get
flutter run
```
Endpoint default emulator Android:
```text
http://10.0.2.2:8000/predict
```
Jika memakai HP fisik, ganti endpoint di menu `Model` menjadi IP komputer,
misalnya:
```text
http://192.168.1.6:8000/predict
```
## 3. Jalankan Website Admin
Admin berada di folder `cv_web/`.
```bash
cd cv_web
../cv_app/.venv/bin/python -m uvicorn app:app --host 0.0.0.0 --port 8001
```
Buka:
```text
http://localhost:8001/admin
```
## Database phpMyAdmin / MySQL
Struktur baru default memakai MySQL/MariaDB agar data bisa dicek lewat
phpMyAdmin.
1. Nyalakan MySQL dari XAMPP/MAMP.
2. Buka phpMyAdmin.
3. Jalankan API. Database dan tabel akan dibuat otomatis jika user MySQL punya
izin `CREATE DATABASE`.
Konfigurasi default:
```text
host: 127.0.0.1
port: 3306
user: root
password: kosong
database: confivoice
table: prediction_results
```
Jika setting MySQL kamu berbeda, pakai environment:
```bash
export CONFIVOICE_DB_DRIVER=mysql
export CONFIVOICE_MYSQL_HOST=127.0.0.1
export CONFIVOICE_MYSQL_PORT=3306
export CONFIVOICE_MYSQL_USER=root
export CONFIVOICE_MYSQL_PASSWORD=
export CONFIVOICE_MYSQL_DATABASE=confivoice
```
Untuk MAMP, biasanya port `8889` dan password `root`.
Schema SQL manual tersedia di:
```text
cv_web/schema_mysql.sql
```
Jika ada data SQLite lama yang mau dipindah ke MySQL:
```bash
cd ml
../cv_app/.venv/bin/python migrate_sqlite_to_mysql.py
```
SQLite lama, jika masih ada, berada di:
```text
cv_web/data/confivoice.db
```
## File Lama
Beberapa file lama di `cv_app/` masih dipertahankan agar command lama tidak
langsung rusak:
```text
cv_app/api_app.py
cv_app/app.py
cv_app/predict_app.py
cv_app/audio_utils_app.py
cv_app/database.py
```
Untuk struktur baru, gunakan:
```text
ml/api_app.py
cv_web/app.py
cv_app/mobile_app/
```