法规知识库组合门禁(U8)
在固定组件修订上验证 RDM + 法规知识库(KB-Regulations)的本地组合:数据与索引可恢复、 双源与引用流程可用、凭据不进入客户端制品。对应 法规知识库计划 的 U8 与 Verification Contract 的 Composition/recovery 行;引用对象见 法规引用合同。
固定组件
components.pin 只有两个键,均为 40 位 hex,run.sh 逐行解析、从不执行:
rdm_sha:Agent-System-RDM main(PR #446 合入,经 backend pin 内置regulations_search/regulation_evidence对话工具;pins/agent-system-kb-regulations为b481173,包含于kb_sha)。kb_sha:Agent-System-KB-Regulations main(PR #10 合入,在既有 zhipu-mcp 搜索 provider、语料批量导入工具与 HTTP 嵌入维度修复之上新增标准号检索文本)。
run.sh 先核对两个检出的 HEAD 等于 pin,再核对 RDM 检出中
pins/agent-system-kb-regulations gitlink 是 KB 检出里 kb_sha 的祖先(RDM 编译所用 KB 代码包含在被测修订中)。
Dev 侧 Backend/Documents/Frontend/UI 的 gitlink 由本仓 modules/ 固定,见 PROJECT.md「法规知识库组合」。
前置条件
- 一次性 PostgreSQL(带 pgvector),连接串放在
KBREG_TEST_DATABASE_URL;PATH 上有pg_dump、pg_restore。 可用 KB 仓scripts/test-pg-local.sh起临时库。门禁会写入该库,不要指向任何真实数据。 SVC_RDM_SRC_DIR:RDM 检出,位于rdm_sha,submodule 已递归物化。KB_SRC_DIR:KB-Regulations 检出,位于kb_sha,submodule 已物化。- Go 与 Node(RDM 测试及客户端制品构建所需)。
- 客户端制品扫描需要已构建的 RDM 产品前端制品(RDM 检出的
.build/product/frontend/dist), 或用REGKB_SCAN_DIRS指定待扫目录(空格分隔)。服务端二进制bin/不是客户端制品, 且携带KBREG_*变量名,因此不扫描。
用法
KBREG_TEST_DATABASE_URL=... SVC_RDM_SRC_DIR=/path/to/rdm KB_SRC_DIR=/path/to/kb \
make test-regulations-kb
缺任一变量时直接以非零退出并指出变量名,不运行任何阶段。每个阶段打印 PASS <阶段> 或
FAIL <阶段>,任一失败则整体非零退出。脚本不回显 KBREG_TEST_DATABASE_URL 或任何凭据值。
各阶段证明什么
| 阶段 | 命令 | 对应 U8 场景 |
|---|---|---|
kb-test-pg |
make -C "$KB_SRC_DIR" test-pg |
provider 组合链;dump/restore 后重建索引仍保持语料修订哈希与历史引用解析;provider/解析器不可用;凭据注入、轮换与撤销 |
rdm-kbreg |
GOWORK=off go test -count=1 ./plugins/kbreg/...,以及 -run 'Composed|RegCite|Citation|RegCheck|RegBatch|RegAudit' 覆盖 ./internal/rdmapp/...、./plugins/rdm/... |
完整法规问答的双通道记录、条款引用与审计批次重放;缺一通道时报告降级而非双源通过;保密词留在本地;凭据不进入输出;审计封印校验 |
client-asset-secret-scan |
扫描 REGKB_SCAN_DIRS(缺省仅为 RDM 产品前端制品 .build/product/frontend/dist;服务端二进制 bin/ 不是客户端制品,携带 KBREG_* 变量名,不扫描) |
凭据不出现在客户端制品:任何文件含字符串 KBREG_,或含环境中非空 KBREG_*KEY*、KBREG_*TOKEN*、KBREG_DATABASE_URL 的值即失败;只打印文件路径与变量名。没有可扫目录时失败 |
跨项目与受限来源的拒绝/脱敏场景归入 rdm-kbreg 阶段所选的 RDM 命令总线测试;具体用例以固定 RDM 修订中的测试为准。
不在本门禁范围
- 真实网络搜索、嵌入与 MinerU 调用:NOT_RUN,待 owner 批准外部调用后另行执行。
- 部署、版本发布与业务/法务验收:均为后续独立门禁,本门禁通过不代表其中任何一项完成。