merge: docs close kb-host-auth

This commit is contained in:
weichen
2026-09-17 02:06:09 +00:00
3 changed files with 24 additions and 10 deletions
+3 -3
View File
@@ -6,14 +6,14 @@
## 焦点
1. **partial/deferred 全量收口**:W1 CI/E2E **done**;续 W2–W7;§7 四项决策已确认
2. **运维**:nightly `DATA_DIR=dev` 已对齐;**进行中** KB 宿主机分层加载 / fail-closed(`fix/kb-host-auth-layered-load`)
2. **运维**:nightly `DATA_DIR=dev` 已对齐;KB 宿主机分层加载 / fail-closed **done**(`fix/kb-host-auth-layered-load`)
3. **红线**:禁止整支 merge FAV;不默认升 `MULTI_INTENT_PLAN_TIER=full`(升 `confirm` 须 W4 闭环后独立授权);`SEMANTIC_SUMMARY_REPLACE` 不随 W2 开启;FAV live 顺序 staging→artifact→publication、每级观察窗证据驱动(下限 ≥7 天)、`FAV_DEGRADED_READ=false`;flag 默认 off;项目 143 只读
## 并行认领
| owner | task | branch | worktree | mutex | status |
|-------|------|--------|----------|-------|--------|
| Cursor | 2026-09-17-kb-host-auth-fix | fix/kb-host-auth-layered-load | - | infra | in_progress |
| Cursor | 2026-09-17-kb-host-auth-fix | fix/kb-host-auth-layered-load | - | infra | done |
| Cursor | 2026-09-17-w1-ci-e2e-green-nightly | feature/w1-ci-e2e-green-nightly | - | ci | done |
| Cline | 2026-09-16-partial-deferred-completion | docs/partial-deferred-completion-plan | - | architecture-docs | done |
| Cursor | 2026-09-16-intent-plan-playwright-dual-tab | feature/intent-plan-cards-playwright | .worktrees/feature-intent-plan-cards-playwright | web | done |
@@ -111,7 +111,7 @@
| holder | phase | since | scope | queue |
|--------|-------|-------|-------|-------|
| Cursor | merging | 2026-09-17 | fix/kb-host-auth-layered-load | - |
| - | idle | - | - | - |
**phase**: `idle` | `merging` | `smoke` | `e2e`
@@ -1,6 +1,6 @@
---
title: "修复 KB 宿主机错误口令与静默离线降级"
status: in_progress
status: done
created: 2026-09-17
updated: 2026-09-17
owner: Cursor
@@ -33,16 +33,16 @@ mutex: infra
1. [x] 分层 Load + 默认口令清空
2. [x] NormalizeKBHostForRuntime
3. [x] kb 客户端脱敏 + RequireOnline
3. [x] kb 客户端脱敏 + RequireOnline(EnsureOnline;不 Fatalf)
4. [x] health `kb_ready` + E2E/nightly 门禁
5. [ ] 合入 `dev` 冒烟
5. [x] 合入 `dev` 冒烟(rebuild + `/health` `kb_ready=true`)
## 验收标准
- [x] `config.Load("")` 分层合并后口令来自根 `.env`(单测临时文件 + live 布尔校验)
- [x] 宿主机 `shuimu-kb-shared` → `127.0.0.1`
- [x] 宿主机 `shuimu-kb-shared` → `127.0.0.1`;容器内保留 compose DNS
- [x] 错口令/空口令离线且日志无明文密码;`KB_ALLOW_OFFLINE=1` 可降级
- [ ] 合 `dev` 后 `go test -short ./internal/config ./internal/kb` + health 冒烟
- [x] 合 `dev` 后 short 测 PASS;dev rebuild 后 `kb_ready=true`,日志 `online=true dsn=...:***@shuimu-kb-shared...`,无 `shared_kb_secret_pass`
## 相关链接
@@ -52,3 +52,4 @@ mutex: infra
## 证据 / 备注
根因:`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`。
@@ -63,14 +63,27 @@ live kb host=127.0.0.1 port=5432 password_set=true
- **实际输出**: `Online()==false`;包测试 PASS
- **评价判定**: PASS(降级用例,非产品冒充在线)
### 用例 E:dev 容器 rebuild 冒烟
- **测试输入**: `./scripts/env-service.sh dev rebuild`;`curl -sf http://127.0.0.1:8080/health`
- **实际输出**:
```text
{"status":"ok", ..., "kb_ready":true, "shared_kb_port":5432, "database_ready":true, ...}
[kb] online=true dsn=postgres://regkb:***@shuimu-kb-shared:5432/regulations?sslmode=disable
shared_kb_secret_pass 出现次数: 0
```
- **评价判定**: PASS
- **性能与耗时**: rebuild ~14s;health 立即可用
## 六、 自动化测试套件汇总 (Test Suite Execution)
```text
go test -short ./internal/config ./internal/kb
go test -short ./internal/config ./internal/kb ./internal/server
ok chat-agent-system/internal/config
ok chat-agent-system/internal/kb
ok chat-agent-system/internal/server
```
## 七、 测试结论与后续优化建议 (Conclusion & Next Steps)
达到合并标准:配置 SSOT 与 Compose 分层对齐;E2E/nightly 预检 + `KB_REQUIRE_ONLINE` 避免静默离线冒充 PASS。后续可在试运行巡检中把 `kb_ready` 纳入 dashboard,但不必改 `/health` 的 HTTP 200 语义。
达到合并标准:配置 SSOT 与 Compose 分层对齐;E2E/nightly 预检 + `EnsureOnline` 避免静默离线冒充 PASS;容器内 `kb_ready=true` 且 DSN 已脱敏。后续可在试运行巡检中把 `kb_ready` 纳入 dashboard,但不必改 `/health` 的 HTTP 200 语义。