adjust ai insight and seed data
This commit is contained in:
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)
|
||||
|
||||
Reference in new issue
Block a user