|
|
@@ -115,6 +115,54 @@ class PgEvidenceBuilderTest(unittest.TestCase):
|
|
|
self.assertIn("query_seed_points", evidence_pack)
|
|
|
self.assertIn("demand_scope", evidence_pack)
|
|
|
|
|
|
+ def test_demand_scope_platform_is_canonicalized(self):
|
|
|
+ self._patch_success()
|
|
|
+ result = build_evidence_pack(
|
|
|
+ 581,
|
|
|
+ {
|
|
|
+ "element_names": ["综合性腐败"],
|
|
|
+ "evidence_refs": {
|
|
|
+ "source_kind": "pattern_itemset",
|
|
|
+ "source_tool": "get_itemset_detail",
|
|
|
+ "itemset_ids": [1607313],
|
|
|
+ "source_post_id": "p1",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ trace_id="trace-test",
|
|
|
+ demand_task_id=1,
|
|
|
+ demand_content_id=1,
|
|
|
+ demand_scope={"platform": "票圈"},
|
|
|
+ )
|
|
|
+
|
|
|
+ self.assertTrue(result["success"])
|
|
|
+ self.assertEqual(result["evidence_pack"]["demand_scope"]["platform"], "piaoquan")
|
|
|
+
|
|
|
+ def test_defaults_to_piaoquan_scope_and_caps_query_seed_points(self):
|
|
|
+ with (
|
|
|
+ patch("examples.demand.evidence_pack_builder.query_execution_for_evidence", return_value=_execution()),
|
|
|
+ patch("examples.demand.evidence_pack_builder.query_itemset_evidence", return_value=[_itemset(matched_post_ids=["pq1", "pq2"])]) as itemset_evidence,
|
|
|
+ patch("examples.demand.evidence_pack_builder.query_itemset_items_with_categories", return_value=[_item()]),
|
|
|
+ patch("examples.demand.evidence_pack_builder.query_element_bindings_for_items", return_value=[_binding(matched_post_ids=["pq1"])]),
|
|
|
+ patch("examples.demand.evidence_pack_builder.query_case_ids_by_post_ids", return_value=[]),
|
|
|
+ patch("examples.demand.evidence_pack_builder.query_seed_points_for_sources", return_value=[]) as seed_points,
|
|
|
+ patch.dict("os.environ", {"DEMAND_QUERY_SEED_POINTS_TOP_K": "100"}),
|
|
|
+ ):
|
|
|
+ result = self._build(
|
|
|
+ {
|
|
|
+ "source_kind": "pattern_itemset",
|
|
|
+ "source_tool": "get_itemset_detail",
|
|
|
+ "itemset_ids": [1607313],
|
|
|
+ "source_post_id": "pq1",
|
|
|
+ }
|
|
|
+ )
|
|
|
+
|
|
|
+ self.assertTrue(result["success"])
|
|
|
+ self.assertEqual(result["evidence_pack"]["demand_scope"]["platform"], "piaoquan")
|
|
|
+ self.assertEqual(itemset_evidence.call_args.kwargs["platform"], "piaoquan")
|
|
|
+ seed_points.assert_called_once()
|
|
|
+ self.assertEqual(seed_points.call_args.kwargs["matched_post_ids"], ["pq1", "pq2"])
|
|
|
+ self.assertEqual(seed_points.call_args.kwargs["top_k"], 30)
|
|
|
+
|
|
|
def test_non_topic_scope_is_rejected(self):
|
|
|
self._patch_success(itemsets=[_itemset(scope="topic_element")])
|
|
|
result = self._build(
|