Сжать supplier-overlap ответы и detector utility gap

This commit is contained in:
2026-06-03 12:52:44 +03:00
parent fdd04abbde
commit ed44c6428a
6 changed files with 109 additions and 49 deletions
@@ -211,6 +211,33 @@ class DomainCaseLoopLeadHandoffTests(unittest.TestCase):
self.assertIn("first_line_not_direct_answer", detector_names)
self.assertNotIn("runtime_tokens_in_user_answer", detector_names)
def test_business_utility_gap_uses_known_surface_detectors(self) -> None:
candidates = dcl.build_detector_candidates(
{
"target_count": 1,
"acceptance_status": "partial",
"final_status": "partial",
"targets": [
{
"target_id": "inventory_supplier_overlap:step_04_supplier_items_on_stock",
"issue_code": "business_utility_gap",
"severity": "P2",
"evidence_paths": [
"artifacts/domain_runs/pack/scenarios/inventory_supplier_overlap/steps/step_04_supplier_items_on_stock/output.md"
],
}
],
}
)
detector_names = [item["detector"] for item in candidates["candidates"]]
self.assertIn("business_answer_too_verbose_output", detector_names)
self.assertIn("top_level_scaffold_before_answer", detector_names)
self.assertIn("runtime_tokens_in_user_answer", detector_names)
self.assertIn("limited_answer_without_next_action", detector_names)
self.assertNotIn("business_utility_gap_detector", detector_names)
def test_detector_results_gate_allows_pass_and_blocks_fail_or_review(self) -> None:
pass_ok, pass_reason = dcl.evaluate_detector_results_gate({"status": "pass"})
fail_ok, fail_reason = dcl.evaluate_detector_results_gate(