ai insight rework #2

This commit is contained in:
Alberto-Audrix committed 2026-10-01 13:23:45 +07:00
1 parent 9d76f54d33
commit e1987d6999
39 files changed
+2311 -830

No files matched your search

@@ -20,13 +20,13 @@ class ResolveDashboardFieldsTests(SimpleTestCase):
self.assertIsNone(cp707._resolve_bw_grams({"averageWeight": 0}))
def test_zero_bw_grades_as_unavailable_not_critical(self):
graded = grade_context({"hari_ke": 48, "bobot_avg_gram": 0, "fcr_terakhir": 1.7})
graded = grade_context({"hari_ke": 48, "bobot_avg_gram": 0, "fcr_terakhir": 1.7}, "berat_ayam")
bw = graded["analyses"]["bw"]
self.assertEqual(bw["status"], "unknown")
self.assertIn("tidak tersedia", bw["message"].lower())
def test_zero_fcr_grades_as_unavailable(self):
graded = grade_context({"hari_ke": 48, "fcr_terakhir": 0, "bobot_avg_gram": 2100})
graded = grade_context({"hari_ke": 48, "fcr_terakhir": 0, "bobot_avg_gram": 2100}, "fcr")
fcr = graded["analyses"]["fcr"]
self.assertEqual(fcr["status"], "unknown")
self.assertIn("tidak tersedia", fcr["message"].lower())
@@ -65,7 +65,7 @@ class ResolveDashboardFieldsTests(SimpleTestCase):
"kematian_kumulatif_ekor": 200,
"doc_in_ekor": 10000,
}
graded = grade_context(ctx)
graded = grade_context(ctx, "dashboard")
analyses = graded["analyses"]
self.assertIn("fcr", analyses)
self.assertIn("bw", analyses)
@@ -80,7 +80,7 @@ class MissingMetricsGradedAsUnknownTests(SimpleTestCase):
def test_missing_bw_and_mortality_emit_unknown_not_silent(self):
"""When fields are absent, graded facts must say unknown so the LLM cannot use standards as actuals."""
ctx = {"hari_ke": 48, "fcr_terakhir": 1.71}
graded = grade_context(ctx)
graded = grade_context(ctx, "dashboard")
self.assertEqual(graded["analyses"]["bw"]["status"], "unknown")
self.assertEqual(graded["analyses"]["mortality"]["status"], "unknown")
self.assertIn("tidak tersedia", graded["analyses"]["bw"]["message"].lower())
@@ -173,3 +173,41 @@ class MortalityWordingConsistencyTests(SimpleTestCase):
}
fixed = enforce_mortality_wording(parsed, graded)
self.assertEqual(fixed["kesimpulan"], parsed["kesimpulan"])
class FeedBalanceGradingTests(SimpleTestCase):
def test_grade_feed_balance_with_rebuild_context_fields(self):
ctx = {
"hari_ke": 34,
"saldo_awal_karung": 500,
"total_karung_masuk_iot": 1280,
"total_karung_dituang_iot": 1200,
"total_karung_keluar_iot": 50,
}
graded = grade_context(ctx, "hitung_karung")
feed = graded["analyses"]["feed_balance"]
self.assertEqual(feed["status"], "ok")
self.assertEqual(feed["balance_karung"], 530.0)
self.assertIn("saldo awal 500.0", feed["message"])
self.assertIn("masuk 1280.0", feed["message"])
def test_grade_feed_balance_with_scoped_derived_keys(self):
ctx = {
"hari_ke": 34,
"saldo_awal_karung": 200,
"karungMasuk_karung": 800,
"karungDituang_karung": 750,
"karungKeluar_karung": 0,
}
graded = grade_context(ctx, "hitung_karung")
feed = graded["analyses"]["feed_balance"]
self.assertEqual(feed["status"], "ok")
self.assertEqual(feed["balance_karung"], 250.0)
def test_grade_feed_balance_missing_emits_unknown(self):
ctx = {"hari_ke": 34}
graded = grade_context(ctx, "hitung_karung")
feed = graded["analyses"]["feed_balance"]
self.assertEqual(feed["status"], "unknown")
self.assertIn("tidak tersedia", feed["message"].lower())