mock_platform.py 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. from __future__ import annotations
  2. from typing import Any
  3. from content_agent.integrations.douyin import RAW_AUTHOR_ID_KEY, RAW_CONTENT_ID_KEY
  4. class MockPlatformClient:
  5. """Deterministic platform client used before real Douyin access exists."""
  6. def search(self, query: dict[str, Any]) -> list[dict[str, Any]]:
  7. search_query_id = query["search_query_id"]
  8. if search_query_id == "q_001":
  9. return [
  10. {
  11. "content_discovery_id": "content_001",
  12. "search_query_id": search_query_id,
  13. "platform": "douyin",
  14. "platform_content_id": "7390000000000000000",
  15. "platform_content_format": "video",
  16. "description": "对比分析类人物故事观察",
  17. "platform_author_id": "MS4wLjABAAAA001",
  18. "author_display_name": "人物故事观察",
  19. "statistics": {"digg_count": 9000, "comment_count": 800, "share_count": 700},
  20. "tags": ["#人物故事"],
  21. "score": 72,
  22. "risk_level": "low",
  23. "availability": "available",
  24. "discovery_relation": "mock_pattern_matched",
  25. "discovery_start_source": "pattern_itemset",
  26. "previous_discovery_step": "search_query_direct",
  27. "content_metadata_source": "mock_platform_search",
  28. "platform_raw_payload": {
  29. RAW_CONTENT_ID_KEY: "7390000000000000000",
  30. "author": {RAW_AUTHOR_ID_KEY: "MS4wLjABAAAA001"},
  31. },
  32. },
  33. {
  34. "content_discovery_id": "content_099",
  35. "search_query_id": search_query_id,
  36. "platform": "douyin",
  37. "platform_content_id": "7390000000000000099",
  38. "platform_content_format": "video",
  39. "description": "缺少画像的低可信发现内容",
  40. "platform_author_id": "MS4wLjABAAAA099",
  41. "author_display_name": "未知作者",
  42. "statistics": {"digg_count": 12, "comment_count": 0, "share_count": 1},
  43. "tags": [],
  44. "score": None,
  45. "risk_level": "unknown",
  46. "discovery_relation": "mock_pattern_matched",
  47. "discovery_start_source": "pattern_itemset",
  48. "previous_discovery_step": "search_query_direct",
  49. "content_metadata_source": "mock_platform_search",
  50. "platform_raw_payload": {
  51. RAW_CONTENT_ID_KEY: "7390000000000000099",
  52. "author": {RAW_AUTHOR_ID_KEY: "MS4wLjABAAAA099"},
  53. },
  54. },
  55. ]
  56. return [
  57. {
  58. "content_discovery_id": "content_002",
  59. "search_query_id": search_query_id,
  60. "platform": "douyin",
  61. "platform_content_id": "7390000000000000001",
  62. "platform_content_format": "video",
  63. "description": "同主题延展发现内容",
  64. "platform_author_id": "MS4wLjABAAAA002",
  65. "author_display_name": "主题观察",
  66. "statistics": {"digg_count": 3000, "comment_count": 20, "share_count": 70},
  67. "tags": ["#基层治理"],
  68. "score": 55,
  69. "risk_level": "low",
  70. "availability": "available",
  71. "discovery_relation": "mock_pattern_matched",
  72. "discovery_start_source": "pattern_itemset",
  73. "previous_discovery_step": "search_query_direct",
  74. "content_metadata_source": "mock_platform_search",
  75. "platform_raw_payload": {
  76. RAW_CONTENT_ID_KEY: "7390000000000000001",
  77. "author": {RAW_AUTHOR_ID_KEY: "MS4wLjABAAAA002"},
  78. },
  79. }
  80. ]