2.0 KiB
2.0 KiB
title, status, created, updated, owner, branch, worktree, mutex
| title | status | created | updated | owner | branch | worktree | mutex |
|---|---|---|---|---|---|---|---|
| 修复 KB 宿主机错误口令与静默离线降级 | done | 2026-09-17 | 2026-09-17 | Cursor | fix/kb-host-auth-layered-load | - | infra |
修复 KB 宿主机错误口令与静默离线降级
目标
消除 config.Load("") 只读 configs/.env.dev、忽略根 .env 的 KB_DB_PASSWORD 导致的错误默认口令与静默离线;E2E/nightly 默认 fail-closed。
范围
internal/config分层加载 + 宿主机 DNS 归一化 + 空默认口令internal/kb脱敏日志、Online()、KB_REQUIRE_ONLINE/KB_ALLOW_OFFLINE/health增加kb_ready- PI E2E helper 与
scripts/run-nightly-real-pi.sh预检 - env 模板与验收报告
非目标
- 不改 KB 数据内容 / 法规迁移
- 不把真实口令写入 git 跟踪的
configs/.env.* - 不把容器内 DNS 改成 localhost
步骤
- 分层 Load + 默认口令清空
- NormalizeKBHostForRuntime
- kb 客户端脱敏 + RequireOnline(EnsureOnline;不 Fatalf)
- health
kb_ready+ E2E/nightly 门禁 - 合入
dev冒烟(rebuild +/healthkb_ready=true)
验收标准
config.Load("")分层合并后口令来自根.env(单测临时文件 + live 布尔校验)- 宿主机
shuimu-kb-shared→127.0.0.1;容器内保留 compose DNS - 错口令/空口令离线且日志无明文密码;
KB_ALLOW_OFFLINE=1可降级 - 合
dev后 short 测 PASS;dev rebuild 后kb_ready=true,日志online=true dsn=...:***@shuimu-kb-shared...,无shared_kb_secret_pass
相关链接
- Test report:
.doc/test-reports/2026-09-17-kb-host-auth-layered-load-test-report.md - Plan: 修复 KB 连接降级
证据 / 备注
根因:Load 优先单文件 configs/.env.dev(故意省略 KB_DB_PASSWORD),保留错误默认 shared_kb_secret_pass;Compose 本已分层,宿主机 go test 未对齐。
合入后容器日志:[kb] online=true dsn=postgres://regkb:***@shuimu-kb-shared:5432/regulations?sslmode=disable;health kb_ready=true。