anoderb commited on
Commit
b87de83
·
1 Parent(s): bdef324

Fix database error: Data truncated for column 'stabilitas'

Browse files
Files changed (1) hide show
  1. backend/database.py +13 -2
backend/database.py CHANGED
@@ -208,6 +208,16 @@ def save_all_model_results(all_results: dict, best_meta: dict, komoditas_id: int
208
  # Insert each model result
209
  for model_name, metrics in all_results.items():
210
  is_best = 1 if model_name == best_name or f"{model_name}_Tuned" == best_name else 0
 
 
 
 
 
 
 
 
 
 
211
  conn.execute(text("""
212
  INSERT INTO model_ml (
213
  komoditas_id, nama_model, versi, deskripsi, file_path,
@@ -218,17 +228,18 @@ def save_all_model_results(all_results: dict, best_meta: dict, komoditas_id: int
218
  ) VALUES (
219
  :komoditas_id, :nama_model, '1.0', :deskripsi, '',
220
  :mape, :rmse, :mae, :r2_score, 0,
221
- '', 'otomatis', '',
222
  CURDATE(), CURDATE(), :is_active, NOW(), NOW()
223
  )
224
  """), {
225
  'komoditas_id': komoditas_id,
226
  'nama_model': model_name,
227
  'deskripsi': f"Model {model_name} untuk komoditas ID {komoditas_id}",
228
- 'mape': round(metrics.get('mape', 0), 4),
229
  'rmse': round(metrics.get('rmse', 0), 4),
230
  'mae': round(metrics.get('mae', 0), 4),
231
  'r2_score': round(metrics.get('r2', 0), 4),
 
232
  'is_active': is_best,
233
  })
234
 
 
208
  # Insert each model result
209
  for model_name, metrics in all_results.items():
210
  is_best = 1 if model_name == best_name or f"{model_name}_Tuned" == best_name else 0
211
+
212
+ # Hitung stabilitas sederhana untuk kolom ENUM agar tidak error
213
+ mape_val = metrics.get('mape', 0)
214
+ stabilitas_label = (
215
+ 'optimal' if mape_val < 2 else
216
+ 'baik' if mape_val < 5 else
217
+ 'cukup' if mape_val < 10 else
218
+ 'perlu_retrain'
219
+ )
220
+
221
  conn.execute(text("""
222
  INSERT INTO model_ml (
223
  komoditas_id, nama_model, versi, deskripsi, file_path,
 
228
  ) VALUES (
229
  :komoditas_id, :nama_model, '1.0', :deskripsi, '',
230
  :mape, :rmse, :mae, :r2_score, 0,
231
+ :stabilitas, 'otomatis', '',
232
  CURDATE(), CURDATE(), :is_active, NOW(), NOW()
233
  )
234
  """), {
235
  'komoditas_id': komoditas_id,
236
  'nama_model': model_name,
237
  'deskripsi': f"Model {model_name} untuk komoditas ID {komoditas_id}",
238
+ 'mape': round(mape_val, 4),
239
  'rmse': round(metrics.get('rmse', 0), 4),
240
  'mae': round(metrics.get('mae', 0), 4),
241
  'r2_score': round(metrics.get('r2', 0), 4),
242
+ 'stabilitas': stabilitas_label,
243
  'is_active': is_best,
244
  })
245