agent-exec transport 41538d22ba2a4e9bf86b9719a1257461/4985036a61a6

This commit is contained in:
agent-exec-transport
2026-10-18 11:53:53 +00:00
parent 05a60f750f
commit 4764cb4811
3 changed files with 24 additions and 5 deletions
+4 -3
View File
@@ -24,8 +24,9 @@ Dev 侧 Backend/Documents/Frontend/UI 的 gitlink 由本仓 `modules/` 固定,
- `SVC_RDM_SRC_DIR`:RDM 检出,位于 `rdm_sha`,submodule 已递归物化。
- `KB_SRC_DIR`:KB-Regulations 检出,位于 `kb_sha`,submodule 已物化。
- Go 与 Node(RDM 测试及客户端制品构建所需)。
- 客户端制品扫描需要已构建的 RDM 产物(RDM 检出的 `bin/`、`.build/product/frontend/dist`),
或用 `REGKB_SCAN_DIRS` 指定待扫目录(空格分隔)。
- 客户端制品扫描需要已构建的 RDM 产品前端制品(RDM 检出的 `.build/product/frontend/dist`),
或用 `REGKB_SCAN_DIRS` 指定待扫目录(空格分隔)。服务端二进制 `bin/` 不是客户端制品,
且携带 `KBREG_*` 变量名,因此不扫描。
## 用法
@@ -43,7 +44,7 @@ KBREG_TEST_DATABASE_URL=... SVC_RDM_SRC_DIR=/path/to/rdm KB_SRC_DIR=/path/to/kb
|---|---|---|
| `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 的 `bin/` 与 `.build/product/frontend/dist`) | 凭据不出现在客户端制品:任何文件含字符串 `KBREG_`,或含环境中非空 `KBREG_*KEY*`、`KBREG_*TOKEN*`、`KBREG_DATABASE_URL` 的值即失败;只打印文件路径与变量名。没有可扫目录时失败 |
| `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 修订中的测试为准。
+2 -2
View File
@@ -85,12 +85,12 @@ stage_scan() {
if [ -n "${REGKB_SCAN_DIRS:-}" ]; then
read -r -a dirs <<< "$REGKB_SCAN_DIRS"
else
for d in "$rdm_dir/bin" "$rdm_dir/.build/product/frontend/dist"; do
for d in "$rdm_dir/.build/product/frontend/dist"; do
[ -d "$d" ] && dirs+=("$d")
done
fi
if [ "${#dirs[@]}" -eq 0 ]; then
echo "scan: 没有可扫描的客户端制品目录(先构建 RDM 产品,或设置 REGKB_SCAN_DIRS)" >&2
echo "scan: 没有可扫描的客户端制品目录(先构建 RDM 产品以生成 .build/product/frontend/dist,或设置 REGKB_SCAN_DIRS)" >&2
return 1
fi
local secret_vars=() name
+18
View File
@@ -97,6 +97,24 @@ class RegulationsKbPinTests(unittest.TestCase):
self.assertNotIn("=== stage", proc.stdout)
self.assertNotIn("/nonexistent-fake", proc.stdout + proc.stderr)
def test_scan_default_excludes_server_bin(self):
text = RUN.read_text()
loops = [ln.strip() for ln in text.splitlines() if ln.strip().startswith('for d in "$rdm_dir/')]
self.assertEqual(len(loops), 1)
self.assertIn('"$rdm_dir/.build/product/frontend/dist"', loops[0])
self.assertNotIn('"$rdm_dir/bin"', text)
with tempfile.TemporaryDirectory() as rdm_dir:
Path(rdm_dir, "bin").mkdir()
Path(rdm_dir, "bin", "rdm").write_text("KBREG_DATABASE_URL\n")
script = 'dirs=(); ' + loops[0] + ' [ -d "$d" ] && dirs+=("$d"); done; printf "%s\\n" "${dirs[@]}"'
proc = subprocess.run(
["bash", "-c", script], env={"PATH": os.environ.get("PATH", "/usr/bin:/bin"), "rdm_dir": rdm_dir},
capture_output=True, text=True, timeout=10,
)
self.assertEqual(proc.returncode, 0, proc.stderr)
self.assertEqual(proc.stdout.strip(), "")
if __name__ == "__main__":
unittest.main()