ai insight rework #2
This commit is contained in:
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())
|
||||
|
||||
Reference in new issue
Block a user