| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- from content_agent.run_service import RunService
- from content_agent.schemas import RunStartRequest
- from tests.p1_helpers import FakeQueryVariantClient, REAL_SOURCE_FIXTURE
- def _start_mock_run(tmp_path):
- service = RunService(
- runtime_root=tmp_path / "runtime" / "v1",
- query_variant_client=FakeQueryVariantClient(),
- )
- state = service.start_run(
- RunStartRequest(platform_mode="mock", source=str(REAL_SOURCE_FIXTURE))
- )
- assert state["status"] == "success"
- return service, state["run_id"]
- def test_rejected_content_is_visible_but_not_pooled(tmp_path):
- service, run_id = _start_mock_run(tmp_path)
- final_output = service.read_json(run_id, "final_output.json")
- content_ids = {asset["platform_content_id"] for asset in final_output["content_assets"]}
- reject_ids = {record["decision_target_id"] for record in final_output["reject_records"]}
- assert final_output["summary"]["rejected_content_count"] == len(final_output["reject_records"])
- assert reject_ids
- assert not reject_ids & content_ids
- assert final_output["validation_status"] == "pass"
- assert final_output["summary"]["run_path_complete"] is True
- assert final_output["summary"]["trace_complete"] is True
- def test_reject_records_carry_source_evidence_refs(tmp_path):
- service, run_id = _start_mock_run(tmp_path)
- final_output = service.read_json(run_id, "final_output.json")
- assert final_output["reject_records"][0]["source_evidence"]["source_post_id"]
- assert final_output["reject_records"][0]["source_evidence"]["discovered_platform_content_id"]
- assert service.validate_run(run_id)["status"] == "pass"
- def test_run_service_rewrites_final_output_with_final_validation_status(tmp_path):
- service, run_id = _start_mock_run(tmp_path)
- final_output = service.read_json(run_id, "final_output.json")
- validation = service.validate_run(run_id)
- assert validation["status"] == "pass"
- assert final_output["validation_status"] == validation["status"]
- assert final_output["summary"]["run_path_complete"] is True
- assert final_output["summary"]["trace_complete"] is True
- def test_final_output_carries_v4_explanation_records(tmp_path):
- service, run_id = _start_mock_run(tmp_path)
- final_output = service.read_json(run_id, "final_output.json")
- v4_decision_records = [
- record
- for record in final_output["decision_records"]
- if (record.get("scorecard") or {}).get("schema_version") == "v4_scorecard.v1"
- ]
- assert v4_decision_records
- for record in v4_decision_records:
- explanation = record["v4_explanation"]
- assert explanation["schema_version"] == "v4_decision_explanation.v1"
- assert explanation["scorecard_schema_version"] == "v4_scorecard.v1"
- assert explanation["query_relevance_score"] == record["scorecard"]["query_relevance_score"]
- assert explanation["platform_performance_score"] == record["scorecard"]["platform_performance_score"]
- assert explanation["score"] == record["score"]
- assert "allow_walk" in explanation
- assert "walk_gate_snapshot" in explanation
- v4_ids = {record["decision_id"] for record in v4_decision_records}
- section_records = (
- final_output["content_assets"]
- + final_output["review_records"]
- + final_output["reject_records"]
- )
- assert [
- record
- for record in section_records
- if record.get("decision_id") in v4_ids and record.get("v4_explanation")
- ]
|