- Server no longer mirrors app.Runtime services (gov/svc/pwSvc/...): 574 call sites now use accessors in runtime_accessors.go - backgroundLoop (mutex+sync.Once) stops sweeper/publisher/reminder/wsGC goroutines race-free (baseline44161d2areproduced DATA RACE; now green under -race) - goose 00071 duplicate (dialogue merge1da17a28brought two 00071): context-conflict-adjudications renumbered to 00072; dev DB applied only through 00070 so zero data migration - task_finalize tests build minimal app.Runtime; test injection via serverTestOverrides + setOverride* (explicit-nil markers for fail-closed cases)
4.6 KiB
4.6 KiB
P7 Server 镜像字段增量收口 测试报告
一、 测试背景 (Background)
MATRIX module-batches-ag 行尾注遗留「Server 镜像字段增量收口另立任务」:internal/server.Server 结构镜像了 app.Runtime 的 24 个领域服务字段(gov/svc/pwSvc/instSvc/...),batch A(2026-09-22)时因「多数 docgov/bizdev HTTP 仍直调引擎」保留。现由总控计划 P7 批次授权收口。
二、 测试目标 (Test Objectives)
Server删除全部 Runtime 镜像字段后编译、vet 干净。- server 包行为不变:short 全量 + race 全量 PASS。
- 相邻包(app/chat/intent 链路)无回归。
- 全仓 short 无回归(含 goose 迁移可加载)。
- 架构门禁
arch-check --mode blockPASS。 - 附带修复验证:既有 DATA RACE(Shutdown vs 后台循环)消失;goose 00071 版本冲突解除。
三、 测试方案与环境 (Test Plan & Environment)
- OS:Linux 7.0.0-31-generic;Go 1.27.1(linuxbrew)。
- 被测 worktree:
.worktrees/server-image-field-closeout-2026-09-25(base dev44161d2a)。 - 层级:工程工具改动层(Go 单测 + race + 架构门禁 + 工程脚本单测),按验证契约不适用产品 PI 全链路。
- 用例矩阵:
| # | 用例 | 命令 |
|---|---|---|
| T1 | server short | go test -short -count=1 ./internal/server/ |
| T2 | server race(含修复验证) | go test -race -short -count=1 ./internal/server/ |
| T3 | 相邻包 | go test -short -count=1 ./internal/app/... ./internal/chat/... ./internal/intent/... |
| T4 | 全仓 short | go test -short -count=1 ./... |
| T5 | 架构门禁 | ./scripts/arch-check.sh --mode block |
| T6 | 工程工具 | python3 -B -m unittest discover -s scripts/tests -p 'test_*.py' |
| T7 | race 基线对照 | dev 44161d2a 临时 worktree 重跑失败用例 |
四、 预期结果 (Expected Results)
- T1–T6 全 PASS。
- T7 基线复现 DATA RACE(证明非本批引入、本批修复有效)。
五、 实际测试结果与判定 (Actual Results & Evaluation)
T1 server short
- 输入:
go test -short -count=1 ./internal/server/ - 实际输出:
ok chat-agent-system/internal/server 19.946s - 判定:PASS(首轮曾 FAIL
TestCreateFreeformDoc_FailClosedWhenAuthorizerNil——override nil 语义未区分「未设置/置 nil」,补authorizerNil位标记后通过)
T2 server race
- 输入:
go test -race -short -count=1 ./internal/server/ - 实际输出:
ok chat-agent-system/internal/server 232.271s - 判定:PASS
T3 相邻包
- 实际输出:
ok× 12(internal/app、app/chatflow、app/docadvance、app/docflow、app/docnotify、app/docproject、app/fav、app/intentflow、app/stageflow、app/uow、chat、intent) - 判定:PASS
T4 全仓 short
- 实际输出:仅
ok/no test files,无 FAIL - 判定:PASS(基线因 goose
00071重复 panicTestBizdevCLIListTasks;重编号00072_2026-09-25-context-conflict-adjudications.sql后通过。dev 库已应用至 00070、两个 00071 均未应用,重编号零数据迁移)
T5 架构门禁
- 实际输出:
arch-check block: production gate passed - 判定:PASS
T6 工程工具
- 实际输出:
Ran 234 tests in 189.907s / OK - 判定:PASS
T7 race 基线对照(附带修复证据)
- 输入:dev
44161d2a临时 worktreego test -race -short -count=1 -run 'TestAdminSystemSettings_ListAndUpdate' ./internal/server/ - 实际输出:
WARNING: DATA RACE,栈:Shutdown (server.go:471 Write)vsstartChatTurnSweeper.func1 (chat_turn_sweeper.go:21 Read) - 判定:基线 FAIL 复现(既有债务,非本批引入);本批
backgroundLoop修复后同域用例(TestAdminSystem*全组 + T2 全量)PASS。
六、 自动化测试套件汇总 (Test Suite Execution)
| 套件 | 结果 | 通过率 |
|---|---|---|
go test -short ./internal/server/ |
PASS | 100% |
go test -race -short ./internal/server/ |
PASS | 100% |
go test -short ./internal/app/... ./internal/chat/... ./internal/intent/... |
PASS | 100%(12 包) |
go test -short ./...(全仓 67 包) |
PASS | 100% |
arch-check --mode block |
PASS | — |
| 工程脚本单测 | PASS | 234/234 |
七、 测试结论与后续优化建议 (Conclusion & Next Steps)
- 结论:P7 达到授权交付终点——
Server24 个镜像字段删除、574 处调用点迁访问器、附带修复既有 DATA RACE 与 goose 版本冲突,全部验证绿。 - 后续:batch-plan 愿景中的「handler 迁
internal/app用例层」在镜像字段移除后可独立推进,不再受本债务约束;建议列入 backlog 而非本轮。