/** * S1d 界面源码守卫。 * * 这是**源码断言**,不是浏览器端到端测试(docs/v2/06-validation.md §2 已明确 * 现有 UI 脚本的性质)。它锁住的是可机械核对的约束:不新建路由、复用既有样式、 * 上传必须带批次标识、冲突裁定必须留痕、不得展示任何审批概率。 */ const assert = require("node:assert/strict"); const fs = require("node:fs"); const path = require("node:path"); const root = path.resolve(__dirname, ".."); const read = (file) => fs.readFileSync(path.join(root, file), "utf8"); const panel = read("src/components/xingbang/ImportBatchPanel.tsx"); const workbench = read("src/app/xingbang-workbench/page.tsx"); const lib = read("src/lib/prescreen.ts"); // 1. 挂载在既有工作台内 assert.match(workbench, /import ImportBatchPanel from "@\/components\/xingbang\/ImportBatchPanel"/, "工作台应导入导入面板"); assert.match(workbench, /