補齊 PChome AI 例外候選收據
Some checks failed
CD Pipeline / deploy (push) Has been cancelled

This commit is contained in:
ogt
2026-07-01 18:37:48 +08:00
parent 56d167f15a
commit b421e2b26d
2 changed files with 77 additions and 1 deletions

View File

@@ -378,11 +378,13 @@ def test_direct_mapping_candidate_decision_package_routes_candidates_to_machine_
)
decisions = package["decision_package"]["candidate_decisions"]
exception_receipts = package["decision_package"]["machine_review_exception_receipts"]
assert package["result"] == "DIRECT_MAPPING_CANDIDATE_DECISION_PACKAGE_READY"
assert package["summary"]["candidates_found_count"] == 2
assert package["summary"]["candidate_decision_count"] == 2
assert package["summary"]["auto_compare_decision_count"] == 1
assert package["summary"]["machine_review_decision_count"] == 1
assert package["summary"]["machine_review_exception_receipt_count"] == 1
assert package["summary"]["can_auto_persist_now_count"] == 0
assert decisions[0]["decision_id"].startswith("pchome-direct-mapping-candidate-")
assert decisions[0]["decision"] == "route_to_no_write_auto_compare_receipt"
@@ -394,6 +396,14 @@ def test_direct_mapping_candidate_decision_package_routes_candidates_to_machine_
assert decisions[0]["guardrails"]["manual_review_mode"] == "exception_only"
assert decisions[1]["decision"] == "route_to_machine_review_decision"
assert decisions[1]["failure_reasons"] == ["auto_compare_type_not_receipt_ready"]
assert exception_receipts[0]["receipt_id"].startswith("pchome-direct-mapping-exception-")
assert exception_receipts[0]["source_decision_id"] == decisions[1]["decision_id"]
assert exception_receipts[0]["failure_reasons"] == ["auto_compare_type_not_receipt_ready"]
assert exception_receipts[0]["next_machine_actions"] == [
"run_variant_bundle_discriminator",
"build_named_candidate_evidence_delta",
]
assert exception_receipts[0]["guardrails"]["writes_database"] is False
assert package["safety"]["executes_search"] is True
assert package["safety"]["writes_database"] is False
assert package["safety"]["persists_candidate"] is False
@@ -411,6 +421,7 @@ def test_ai_automation_readiness_makes_automation_visible_without_manual_primary
assert readiness["summary"]["waiting_candidate_count"] == 1
assert readiness["summary"]["primary_human_gate_count"] == 0
assert readiness["summary"]["ai_exception_count"] == 0
assert readiness["summary"]["machine_review_exception_receipt_count"] == 0
assert readiness["summary"]["manual_required_as_primary_flow_count"] == 0
assert readiness["automation_policy"]["primary_flow"] == "ai_controlled"
assert readiness["automation_policy"]["human_primary_flow"] is False
@@ -457,6 +468,7 @@ def test_ai_automation_readiness_reports_candidate_decisions_after_controlled_se
assert readiness["summary"]["waiting_candidate_count"] == 0
assert readiness["summary"]["auto_compare_decision_count"] == 1
assert readiness["summary"]["machine_review_decision_count"] == 0
assert readiness["summary"]["machine_review_exception_receipt_count"] == 0
assert readiness["summary"]["external_network_execute_count"] == 1
assert lanes["candidate_decision_package"]["status"] == "ready"
assert readiness["safety"]["executes_search"] is True