adjust ai insight and seed data

This commit is contained in:
Alberto-Audrix committed 2026-09-18 11:34:07 +07:00
1 parent 68e0d1a0bb
commit a2b5b10977
18 files changed
+1835 -140

No files matched your search

@@ -15,6 +15,22 @@ class ResolveDashboardFieldsTests(SimpleTestCase):
def test_resolve_bw_from_bobot_avg_gram(self):
self.assertEqual(cp707._resolve_bw_grams({"bobot_avg_gram": 2100}), 2100.0)
def test_resolve_bw_treats_zero_as_missing(self):
self.assertIsNone(cp707._resolve_bw_grams({"bobot_avg_gram": 0}))
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})
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})
fcr = graded["analyses"]["fcr"]
self.assertEqual(fcr["status"], "unknown")
self.assertIn("tidak tersedia", fcr["message"].lower())
def test_resolve_bw_from_average_weight(self):
self.assertEqual(cp707._resolve_bw_grams({"averageWeight": 1950}), 1950.0)
@@ -79,7 +95,7 @@ class InsightPromptNamingTests(SimpleTestCase):
report_period="current",
context={"hari_ke": 48, "kandangId": 6, "cycleId": 99},
)
self.assertIn("untuk `Kandang 2`", prompt)
self.assertIn("untuk unit bernama `Kandang 2`", prompt)
self.assertNotIn("untuk kandang `Kandang 2`", prompt)
self.assertNotIn("id=", prompt)
self.assertNotIn('"kandangId"', prompt)
@@ -94,6 +110,30 @@ class InsightPromptNamingTests(SimpleTestCase):
self.assertIn("severity_label", rules)
class DuplicateKandangNameTests(SimpleTestCase):
def test_collapse_kandang_kandang(self):
from apps.operations.services.insight_service import collapse_duplicate_kandang
self.assertEqual(
collapse_duplicate_kandang(
"Kandang Kandang 2 mengalami mortalitas kumulatif sebesar 10.44%."
),
"Kandang 2 mengalami mortalitas kumulatif sebesar 10.44%.",
)
def test_sanitize_insight_narrative_fields(self):
from apps.operations.services.insight_service import sanitize_insight_narrative
fixed = sanitize_insight_narrative(
{
"kesimpulan": "Kandang Kandang 2 mortalitas tinggi.",
"insight": "Pantau kandang kandang 2 setiap hari.",
}
)
self.assertEqual(fixed["kesimpulan"], "Kandang 2 mortalitas tinggi.")
self.assertEqual(fixed["insight"], "Pantau kandang 2 setiap hari.")
class MortalityWordingConsistencyTests(SimpleTestCase):
def test_critical_mortality_has_explicit_severity_label(self):
result = cp707.analyze_mortality(9.49, 48)