test_v1_graph.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from content_agent.integrations.runtime_files import RUNTIME_FILENAMES
  2. from content_agent.run_service import RunService
  3. from content_agent.schemas import RunStartRequest
  4. from tests.p1_helpers import FakeQueryVariantClient, REAL_SOURCE_FIXTURE
  5. def test_v1_graph_generates_all_runtime_files(tmp_path):
  6. service = RunService(
  7. runtime_root=tmp_path / "runtime" / "v1",
  8. query_variant_client=FakeQueryVariantClient(),
  9. )
  10. state = service.start_run(
  11. RunStartRequest(platform_mode="mock", source=str(REAL_SOURCE_FIXTURE))
  12. )
  13. run_id = state["run_id"]
  14. assert state["status"] == "success"
  15. assert state["policy_run_id"].startswith("policy_run_")
  16. assert state["policy_bundle_id"] == "douyin_policy_bundle_v1"
  17. status = service.runtime.file_status(run_id)
  18. assert all(status[name] for name in RUNTIME_FILENAMES)
  19. final_output = service.read_json(run_id, "final_output.json")
  20. assert final_output["policy_run_id"] == state["policy_run_id"]
  21. # M3 受控变化: 画像门槛退役,改 Gemini 相关性 + 平台热度打分。mock 链默认 Gemini
  22. # 给 relevance 60,mock 平台内容热度均不足 → 三条都落 60-69 复看带(无进池/无拒)。
  23. assert final_output["summary"]["pooled_content_count"] == 0
  24. assert final_output["summary"]["review_content_count"] == 3
  25. assert final_output["summary"]["pending_content_count"] == 0
  26. assert final_output["summary"]["rejected_content_count"] == 0
  27. assert final_output["summary"]["effect_status_counts"] == {
  28. "success": 0,
  29. "pending": 3,
  30. "failed": 0,
  31. "rule_blocked": 0,
  32. }
  33. assert (
  34. final_output["policy"]["policy_bundle_hash"]
  35. == state["policy_bundle"]["policy_bundle_hash"]
  36. )
  37. assert final_output["walk_strategy"]["walk_strategy_version"] == "V1.0"