mock_platform.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. from __future__ import annotations
  2. from typing import Any
  3. class MockPlatformClient:
  4. """Deterministic platform client used before real Douyin access exists."""
  5. def search(self, query: dict[str, Any]) -> list[dict[str, Any]]:
  6. query_id = query["query_id"]
  7. if query_id == "q_001":
  8. return [
  9. {
  10. "candidate_id": "c_001",
  11. "query_id": query_id,
  12. "aweme_id": "7390000000000000000",
  13. "desc": "基层干部贪腐警示案例",
  14. "author_sec_uid": "MS4wLjABAAAA001",
  15. "author_nickname": "警示故事",
  16. "statistics": {"digg_count": 1200, "comment_count": 80, "share_count": 300},
  17. "cha_list": ["#警示教育"],
  18. "score": 72,
  19. "age_50_plus_level": "medium",
  20. "risk_level": "low",
  21. "portrait_available": True,
  22. "pattern_recall": "matched",
  23. "category_or_element_binding": "matched",
  24. "candidate_relation": "mock_pattern_matched",
  25. "origin_source": "pattern_itemset",
  26. "immediate_source": "query_direct",
  27. },
  28. {
  29. "candidate_id": "c_099",
  30. "query_id": query_id,
  31. "aweme_id": "7390000000000000099",
  32. "desc": "缺少画像的低可信候选",
  33. "author_sec_uid": "MS4wLjABAAAA099",
  34. "author_nickname": "未知作者",
  35. "statistics": {"digg_count": 12, "comment_count": 0, "share_count": 1},
  36. "cha_list": [],
  37. "score": None,
  38. "age_50_plus_level": "missing",
  39. "risk_level": "unknown",
  40. "portrait_available": False,
  41. "pattern_recall": "matched",
  42. "category_or_element_binding": "matched",
  43. "candidate_relation": "mock_pattern_matched",
  44. "origin_source": "pattern_itemset",
  45. "immediate_source": "query_direct",
  46. },
  47. ]
  48. return [
  49. {
  50. "candidate_id": "c_002",
  51. "query_id": query_id,
  52. "aweme_id": "7390000000000000001",
  53. "desc": "同主题延展候选案例",
  54. "author_sec_uid": "MS4wLjABAAAA002",
  55. "author_nickname": "案例观察",
  56. "statistics": {"digg_count": 600, "comment_count": 20, "share_count": 70},
  57. "cha_list": ["#基层治理"],
  58. "score": 55,
  59. "age_50_plus_level": "medium",
  60. "risk_level": "low",
  61. "portrait_available": True,
  62. "pattern_recall": "matched",
  63. "category_or_element_binding": "matched",
  64. "candidate_relation": "mock_pattern_matched",
  65. "origin_source": "pattern_itemset",
  66. "immediate_source": "query_direct",
  67. }
  68. ]