MIF_E31231708/cv_app/README.md

123 lines
2.3 KiB
Markdown

# ConfiVoice Mobile App
Folder `cv_app/` dipakai untuk aplikasi Flutter mobile.
Kode Flutter berada di:
```text
cv_app/mobile_app/
```
File lama Streamlit/API masih ada di folder ini untuk kompatibilitas, tetapi
struktur baru yang disarankan adalah:
```text
ml/ # API prediksi dan model machine learning
cv_web/ # Website admin
cv_app/ # Flutter mobile
```
## Menjalankan Flutter
```bash
cd cv_app/mobile_app
flutter pub get
flutter run
```
## Endpoint API
Jalankan API dari folder `ml/`:
```bash
cd ml
uvicorn api_app:app --host 0.0.0.0 --port 8000
```
Endpoint prediksi:
```text
POST /predict
```
Field multipart upload:
```text
file
student_name
```
Setiap prediksi dari Flutter akan disimpan ke database default:
```text
cv_web/data/confivoice.db
```
SQLite tetap database SQL, tetapi tidak perlu server database terpisah. Cocok
untuk menjalankan aplikasi lokal/TA.
Jika ingin melihat database lewat phpMyAdmin, gunakan mode MySQL/MariaDB:
1. Nyalakan MySQL dari XAMPP/MAMP/Laragon.
2. Buka phpMyAdmin.
3. Buat database bernama `confivoice`, atau biarkan API membuat database otomatis jika user MySQL punya izin `CREATE DATABASE`.
4. Install dependency:
```bash
cd cv_app
source .venv/bin/activate
pip install PyMySQL
```
5. Jalankan API dengan konfigurasi MySQL:
```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
python -m uvicorn api_app:app --host 0.0.0.0 --port 8000
```
Untuk MAMP, password root biasanya `root` dan port MySQL bisa `8889`:
```bash
export CONFIVOICE_MYSQL_PASSWORD=root
export CONFIVOICE_MYSQL_PORT=8889
```
Setelah prediksi dari Flutter, data akan masuk ke tabel:
```text
confivoice.prediction_results
```
Endpoint untuk melihat data:
```text
GET /predictions
GET /admin
```
Website admin dapat dibuka di:
```text
http://localhost:8001/admin
```
Jika memakai HP fisik, ganti `localhost` dengan IP komputer yang menjalankan API,
misalnya:
```text
http://192.168.1.6:8000/admin
```
## Catatan
- Folder `cv_app/` tidak berisi dataset utama.
- Folder `cv_app/` tidak berisi model utama.
- File upload diproses sebagai file sementara menggunakan `tempfile`.
- Audio non-WAV dikonversi otomatis ke WAV mono 22050 Hz menggunakan `pydub` dan `ffmpeg`.