TIFNGK_E41222722/DATABASE_SETUP.md

4.4 KiB

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:

Linux (Ubuntu/Debian):

sudo apt-get install mysql-server

macOS:

brew install mysql
brew services start mysql

2. Configure Environment Variables

Copy .env.example ke .env dan update konfigurasi:

cp .env.example .env

Edit .env dengan kredensial MySQL Anda:

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

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:

python -c "from utils.mysql_db import get_engine; engine = get_engine(); print('✓ Database connected successfully!')"

5. Jalankan Aplikasi

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