From 695f63f7ba4f111fbc6b4dbcff88288d3f75e0ad Mon Sep 17 00:00:00 2001 From: ThearchyHelios Date: Fri, 16 Oct 2026 18:37:51 +0800 Subject: [PATCH] =?UTF-8?q?W3-a=20=E5=8F=AF=E9=AA=8C=E8=AF=81=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E7=A6=BB=E7=BA=BF=E6=A0=B8=E5=AF=B9=E9=A1=B5=E8=AE=A4?= =?UTF-8?q?=20schema.drift=EF=BC=9A=E4=BA=8B=E4=BB=B6=E6=B8=85=E5=8D=95?= =?UTF-8?q?=E5=86=99=E3=80=8C=E8=A1=A8=E7=BB=93=E6=9E=84=E5=8F=98=E5=8C=96?= =?UTF-8?q?=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 复核 L4:schema.drift 写在正式运行的封存范围里(和 catalog.drift 一样在发起时追加),可验证报告离线核对页的 EVENT_LABEL 里却没有它,事件清单直接显示原文「schema.drift」。照总方案 X10 的叫法(结构变化,和「数据目录变化」 分开)补上「表结构变化」。 复核顺带提的 ledger.matched 没加:它追加在封存之后、不在封存范围内,导出只带 seq ≤ manifest_seq 的事件 (bundle/build.py),离线核对页上不会出现它。 测试:test_schema_changes 加一条静态检查,读 verifier.js 的 EVENT_LABEL,catalog.drift、schema.drift 都有中文说法。 --- backend/app/bundle/verifier.js | 3 ++- backend/tests/test_schema_changes.py | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/backend/app/bundle/verifier.js b/backend/app/bundle/verifier.js index f8cebed3..48edbc12 100644 --- a/backend/app/bundle/verifier.js +++ b/backend/app/bundle/verifier.js @@ -64,7 +64,8 @@ 'agent.step.end': 'Agent 步骤结束', 'agent.route.start': '调度决策开始', 'agent.route.end': '调度决策结束', 'human.requested': '请求人工审批', 'human.resolved': '人工审批结果', 'approval.inquiry': '审批质询', 'issuance': '出具判定', 'caliber.upgrade': '口径卡升版处置', 'catalog.drift': '数据目录变化', - 'report.checked': '报告自查', 'evidence.judged': '按需裁判', 'file.extracted': '读入附件', 'log': '日志', 'usage': '用量', + 'schema.drift': '表结构变化', 'report.checked': '报告自查', 'evidence.judged': '按需裁判', 'file.extracted': '读入附件', + 'log': '日志', 'usage': '用量', } const T = { allPass: '全部通过', diff --git a/backend/tests/test_schema_changes.py b/backend/tests/test_schema_changes.py index 80e8779d..6e16d9ad 100644 --- a/backend/tests/test_schema_changes.py +++ b/backend/tests/test_schema_changes.py @@ -261,3 +261,16 @@ async def test_first_introspect_after_upgrade_only_builds_a_baseline(client, sho orders = (await session.execute(select(SourceObject).where( SourceObject.source_id == sid, SourceObject.name == "orders"))).scalar_one() assert orders.struct_version == 1 + + +def test_the_offline_verifier_names_the_publish_drift_events(): + """可验证报告的离线核对页:schema.drift 和 catalog.drift 一样写在正式运行的封存范围里,事件清单要给中文说法(叫法照 + 总方案 X10:结构变化,和「数据目录变化」分开),不显示原文 schema.drift。""" + import re + + script = (Path(__file__).resolve().parents[1] / "app" / "bundle" / "verifier.js").read_text(encoding="utf-8") + block = re.search(r"const EVENT_LABEL = \{(.*?)\n \}", script, re.S) + assert block, "verifier.js 里找不到 EVENT_LABEL" + labels = dict(re.findall(r"'([a-z_.]+)': '([^']+)'", block.group(1))) + assert labels.get("catalog.drift") == "数据目录变化" + assert labels.get("schema.drift") == "表结构变化"