archive(provider-pipeline): preserve final B2 audit and mapping evidence
This commit is contained in:
@@ -20,6 +20,43 @@ spec.loader.exec_module(pipeline)
|
||||
|
||||
|
||||
class ProviderPipelineContractTests(unittest.TestCase):
|
||||
def test_mapping_catalog_uses_declared_full_universe_and_fails_closed(self):
|
||||
sample = {"visual_objects": [{"visual_object_id": "VO-a"}]}
|
||||
full = {"visual_objects": [{"visual_object_id": "VO-a"}, {"visual_object_id": "VO-b"}]}
|
||||
self.assertIs(pipeline.select_mapping_catalog(sample, None), sample)
|
||||
self.assertIs(pipeline.select_mapping_catalog(sample, full), full)
|
||||
with self.assertRaisesRegex(ValueError, "未覆盖样本"):
|
||||
pipeline.select_mapping_catalog(sample, {"visual_objects": [{"visual_object_id": "VO-b"}]})
|
||||
with self.assertRaisesRegex(ValueError, "无效或重复"):
|
||||
pipeline.select_mapping_catalog(sample, {"visual_objects": [{"visual_object_id": "VO-a"}] * 2})
|
||||
with self.assertRaisesRegex(ValueError, "缺少 visual_objects"):
|
||||
pipeline.select_mapping_catalog(sample, {"visual_objects": None})
|
||||
|
||||
def test_cm95_full_mapping_covers_all_actual_objects_without_reclassifying_sample(self):
|
||||
root = ROOT / "tools/visual-object-instantiation/output/cm95-current"
|
||||
catalog_file = root / "actual-anonymous-catalog.json"
|
||||
assignment_file = ROOT / "tools/style-visual-object/output/cm95-manual-review/assignment/cm95-layer-assignment-v1.json"
|
||||
previous_file = ROOT / "dist/cm95/s52-full/1.1.0/mapping-layer-assignment.json"
|
||||
if not all(path.exists() for path in (catalog_file, assignment_file, previous_file)):
|
||||
self.skipTest("未提供 CM95 已验证的完整 Catalog / 人工审核 / 原 Package")
|
||||
full = json.loads(catalog_file.read_text(encoding="utf-8"))
|
||||
review = json.loads(assignment_file.read_text(encoding="utf-8"))
|
||||
before = json.loads(previous_file.read_text(encoding="utf-8"))["assignments"]
|
||||
sample = {"visual_objects": [{"visual_object_id": row["visualObjectId"]} for row in before]}
|
||||
selected = pipeline.select_mapping_catalog(sample, full)
|
||||
rows = pipeline.manual_assignment(selected, review)
|
||||
self.assertEqual(len(rows), len(full["visual_objects"]))
|
||||
self.assertEqual(len(rows), 475)
|
||||
self.assertEqual(pipeline.attach_render_evidence(rows, full), [])
|
||||
by_id = {row["visualObjectId"]: row for row in rows}
|
||||
self.assertEqual(len(by_id), 475)
|
||||
for row in before:
|
||||
current = by_id[row["visualObjectId"]]
|
||||
self.assertEqual((current["status"], current.get("standardLayer")),
|
||||
(row["status"], row.get("standardLayer")))
|
||||
self.assertEqual(sum(row["renderEvidence"]["occurrenceCount"] for row in rows), 976534)
|
||||
self.assertTrue(any(row["status"] == "UNKNOWN" for row in rows))
|
||||
|
||||
def test_v2_full_catalog_evidence_and_fail_closed(self):
|
||||
style = {"layers": [{"id": "layer-a", "source-layer": "points"}, {"id": "layer-b", "source-layer": "points"}]}
|
||||
components = [
|
||||
|
||||
Reference in New Issue
Block a user