182 lines
4.4 KiB
Markdown
182 lines
4.4 KiB
Markdown
# Database Setup untuk Deteksi PMK
|
|
|
|
## Persyaratan
|
|
- MySQL Server berjalan (versi 5.7 atau lebih tinggi)
|
|
- Python 3.12.5 dengan semua dependencies terinstall
|
|
|
|
## Langkah Setup
|
|
|
|
### 1. Install MySQL Server (Jika belum)
|
|
|
|
#### Windows:
|
|
- Download dari https://dev.mysql.com/downloads/mysql/
|
|
- Ikuti installer wizard
|
|
- Default Port: 3306
|
|
- Default User: root
|
|
|
|
#### Linux (Ubuntu/Debian):
|
|
```bash
|
|
sudo apt-get install mysql-server
|
|
```
|
|
|
|
#### macOS:
|
|
```bash
|
|
brew install mysql
|
|
brew services start mysql
|
|
```
|
|
|
|
### 2. Configure Environment Variables
|
|
|
|
Copy `.env.example` ke `.env` dan update konfigurasi:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Edit `.env` dengan kredensial MySQL Anda:
|
|
|
|
```env
|
|
# MySQL Database Configuration
|
|
DB_HOST=localhost
|
|
DB_PORT=3306
|
|
DB_USER=root
|
|
DB_PASSWORD=your_password_here
|
|
DB_NAME=deteksi_pmk
|
|
|
|
# Flask Configuration
|
|
FLASK_SECRET=your-secret-key-here
|
|
```
|
|
|
|
**Penting:**
|
|
- `DB_HOST`: Alamat server MySQL (default: localhost)
|
|
- `DB_USER`: Username MySQL (default: root)
|
|
- `DB_PASSWORD`: Password MySQL (kosongkan jika tidak ada password)
|
|
- `DB_NAME`: Nama database yang akan dibuat
|
|
|
|
### 3. Setup Database
|
|
|
|
Jalankan script setup:
|
|
|
|
```bash
|
|
python setup_db.py
|
|
```
|
|
|
|
Script ini akan:
|
|
- Membuat database `deteksi_pmk`
|
|
- Membuat tabel-tabel yang diperlukan:
|
|
- `predictions` - Menyimpan hasil prediksi
|
|
- `diagnosis_history` - Menyimpan hasil diagnosis
|
|
|
|
### 4. Verify Database Connection
|
|
|
|
Anda bisa test koneksi dengan menjalankan:
|
|
|
|
```bash
|
|
python -c "from utils.mysql_db import get_engine; engine = get_engine(); print('✓ Database connected successfully!')"
|
|
```
|
|
|
|
### 5. Jalankan Aplikasi
|
|
|
|
```bash
|
|
python app.py
|
|
```
|
|
|
|
Aplikasi akan berjalan di: http://localhost:5000
|
|
|
|
## Database Schema
|
|
|
|
### Tabel: predictions
|
|
|
|
| Column | Type | Description |
|
|
|--------|------|-------------|
|
|
| id | INT PRIMARY KEY AUTO_INCREMENT | ID unik prediksi |
|
|
| original_filename | VARCHAR(255) | Nama file asli yang diupload |
|
|
| filename | VARCHAR(255) | Nama file yang disimpan |
|
|
| image_path | VARCHAR(500) | Path lengkap file |
|
|
| prediction | VARCHAR(50) | Hasil prediksi ('sehat' atau 'sakit') |
|
|
| confidence | FLOAT | Tingkat kepercayaan (0-100) |
|
|
| features | TEXT | JSON string dari fitur-fitur |
|
|
| timestamp | DATETIME | Waktu prediksi |
|
|
|
|
### Tabel: diagnosis_history
|
|
|
|
| Column | Type | Description |
|
|
|--------|------|-------------|
|
|
| id | INT PRIMARY KEY AUTO_INCREMENT | ID unik diagnosis |
|
|
| original_filename | VARCHAR(255) | Nama file asli yang diupload |
|
|
| filename | VARCHAR(255) | Nama file yang disimpan |
|
|
| image_path | VARCHAR(500) | Path lengkap file |
|
|
| diagnosis | TEXT | JSON string dari diagnosis details |
|
|
| severity | VARCHAR(50) | Tingkat keparahan ('ringan', 'sedang', 'berat') |
|
|
| confidence | FLOAT | Tingkat kepercayaan (0-100) |
|
|
| timestamp | DATETIME | Waktu diagnosis |
|
|
|
|
## Troubleshooting
|
|
|
|
### "MySQL not available at startup"
|
|
- Pastikan MySQL Server berjalan
|
|
- Periksa konfigurasi di file `.env`
|
|
- Pastikan password MySQL benar
|
|
|
|
### "Cannot import 'setuptools.build_meta'"
|
|
- Jalankan: `pip install --upgrade setuptools`
|
|
|
|
### "NumPy 2.x incompatibility"
|
|
- Sudah fixed dengan numpy<2 di requirements.txt
|
|
- Jalankan: `pip install "numpy<2"`
|
|
|
|
### Database tidak tersimpan di MySQL
|
|
- Periksa apakah MYSQL_AVAILABLE = True di terminal saat startup
|
|
- Cek file `.env` konfigurasi
|
|
- Jalankan `python setup_db.py` lagi untuk pastikan database terbuat
|
|
|
|
## Features yang Tersedia
|
|
|
|
### 1. Prediksi dengan Machine Learning
|
|
- Upload gambar (JPG, PNG, BMP)
|
|
- Deteksi PMK otomatis
|
|
- Confidence score tinggi
|
|
|
|
### 2. Riwayat Deteksi
|
|
- Lihat semua hasil deteksi yang tersimpan di database
|
|
- Filter berdasarkan hasil (Sehat/Sakit)
|
|
- Statistik real-time
|
|
|
|
### 3. Detail Riwayat
|
|
- Klik "Detail" di riwayat untuk melihat:
|
|
- Hasil lengkap prediksi
|
|
- Confidence score
|
|
- Fitur-fitur yang dianalisis
|
|
- Informasi file
|
|
|
|
### 4. Diagnosis Expertise System
|
|
- Berbasis rule-based system
|
|
- Memberikan diagnosis detail berdasarkan gejala
|
|
- Simpan hasil diagnosis ke database
|
|
|
|
## Data Storage Priority
|
|
|
|
1. **MySQL Database** (Utama)
|
|
- Real-time
|
|
- Queryable
|
|
- Backup terstruktur
|
|
|
|
2. **CSV Files** (Backup)
|
|
- Fallback jika MySQL error
|
|
- Di folder `results/`
|
|
|
|
## Tips
|
|
|
|
- Pastikan MySQL Server running sebelum startup aplikasi
|
|
- Reguler backup database MySQL Anda
|
|
- Gunakan password yang kuat untuk MySQL di production
|
|
- Ubah FLASK_SECRET di `.env` untuk production
|
|
|
|
## Support
|
|
|
|
Jika ada error, cek:
|
|
1. `setup_db.py` untuk initialize database
|
|
2. File `.env` konfigurasi
|
|
3. MySQL Server status
|
|
4. Requirements sudah terinstall dengan benar
|