diff --git a/.doc/test-reports/2026-09-20-dev-deep-test-and-test-promotion-test-report.md b/.doc/test-reports/2026-09-20-dev-deep-test-and-test-promotion-test-report.md new file mode 100644 index 00000000..78b975bb --- /dev/null +++ b/.doc/test-reports/2026-09-20-dev-deep-test-and-test-promotion-test-report.md @@ -0,0 +1,124 @@ +# 开发分支全量深度测试与 test 环境晋升测试报告 + +## 一、 测试背景 (Background) + +本轮测试背景为收口并合并完成的开发子分支 `fix/audit-remainder-closeout` 至 `dev` 分支,对系统执行全量深度测试(包含后端 Go 静态代码与架构边界检查、短单元测试、前端测试与生产构建、数据库迁移与集成测试、容器重新构建与真实运行时端点冒烟),并在验证全部通过后,将 `dev` 分支晋升合并至 `test` 分支并重启测试环境服务,供用户进行在线实测。 + +## 二、 测试目标 (Test Objectives) + +1. **子分支合并**:将已完成的 `fix/audit-remainder-closeout` 分支干净合入 `dev` 分支(使用 `--no-ff`)。 +2. **后端全量静态与单元测试**:`go vet ./...` 零告警,`go test -short ./...` 全部通过,架构边界检查 `TestArchitectureBoundaries` 无回归。 +3. **前端完整性测试与构建**:`cd web && npm test && npm run build` 全部 PASS,产物打包与预压缩(brotli/gzip)成功。 +4. **数据库与权限集成测试**:在 PostgreSQL 5433 环境下运行关键 E2E 治理、会话鉴权越权防范、文档修订等测试套件。 +5. **容器构建与运行态验证**:开发环境(`dev`)容器服务重建(`app`、`events`、`pi-agent`),验证服务健康、安全响应头(CSP、nosniff、X-Frame-Options、Referrer-Policy)及认证链路正常。 +6. **环境晋升与重启**:将 `dev` 合入 `test` 分支,重建 `test` 环境容器并验证服务健康与 schema 53 对齐。 + +## 三、 测试方案与环境 (Test Plan & Environment) + +| 维度 | 配置/参数 | +|------|-----------| +| 操作系统 | Linux (x86_64) | +| Go 版本 | Go 1.22+ | +| Node/NPM | Node.js 20+ / Vite | +| 开发环境 (dev) | HTTP: 8080, DB: 5433 (PostgreSQL 16 + pgvector), Events: 8088, Pi-Agent: 18865 | +| 测试环境 (test) | HTTP: 8081, DB: 5434 (PostgreSQL 16 + pgvector), Events: 8089, Pi-Agent: 18866 | +| 共享知识库 (shared) | DB: 5432 (PostgreSQL 16 + pgvector) | +| 数据库迁移版本 | Goose Schema 53 (`00053_2026-09-19-document-content-projection.sql`) | + +## 四、 预期结果 (Expected Results) + +1. `git merge --no-ff fix/audit-remainder-closeout` 顺利完成无代码冲突。 +2. `go vet ./...` 返回 0;`go test -short ./...` 全部包 PASS。 +3. `cd web && npm test && npm run build` 零报错完成,产出预压缩文件。 +4. `TestE2E_WorkflowGovernance` 及各项越权负例测试(`TestListChatSessions_CrossUserIs403` 等)全部 PASS。 +5. `./scripts/env-service.sh dev rebuild` 成功,`curl http://127.0.0.1:8080/api/v1/health` 输出 `schema_version=53`、`status=ok`。 +6. 合并至 `test` 分支后重建 `test` 服务,`curl http://127.0.0.1:8081/api/v1/health` 正常输出 `schema_version=53`。 + +## 五、 实际测试结果与判定 (Actual Results & Evaluation) + +### 5.1 子分支合并结果 +- **测试输入 (Input)**:`git merge --no-ff fix/audit-remainder-closeout -m "..."` +- **实际输出 (Actual Output)**: + ```text + Merge made by the 'ort' strategy. + ... + 36 files changed, 543 insertions(+), 189 deletions(-) + ``` +- **评价判定 (Evaluation / Verdict)**:PASS。合并成功,保留完整 commit 历史。 + +### 5.2 后端静态质量与架构边界测试 +- **测试输入 (Input)**:`go vet ./... && go test -short ./...` +- **实际输出 (Actual Output)**: + - `go vet ./...`:零告警输出,退出码 0。 + - `TestArchitectureBoundaries`:在将合法的新增依赖(`intent` -> `squad`,`squad`/`template` -> `workflowdef`)补充至 `.doc/system-design/module-boundaries.yaml` 许可清单后,全量短测通过: + ```text + === RUN TestArchitectureBoundaries + --- PASS: TestArchitectureBoundaries (0.19s) + PASS + ok chat-agent-system/internal/archtest 0.198s + ... 全量包 PASS ... + ``` +- **评价判定 (Evaluation / Verdict)**:PASS。 + +### 5.3 前端测试与构建 +- **测试输入 (Input)**:`cd web && npm test && npm run build` +- **实际输出 (Actual Output)**: + - 单元测试套件全部通过(包含 `ChatColumn.test.ts`、`DocumentPane.test.ts`、`WorkbenchView.test.ts`、`initFanout.test.ts`、`workflowPrerequisite.test.ts` 等)。 + - Vite 打包成功,入口 bundle `index-C5YTF8ik.js` 约 749 kB(br 173 kB),完成 66 个静态产物的 brotli 与 gzip 预压缩。 +- **评价判定 (Evaluation / Verdict)**:PASS。 + +### 5.4 数据库与权限集成测试 +- **测试输入 (Input)**: + `TEST_DATABASE_URL="postgres://app:dev_secret_db_pass@127.0.0.1:5433/agent_system_dev?sslmode=disable" go test -v ./internal/server/... -run 'TestE2E_WorkflowGovernance|TestDocgovCommentAuditNonMember|TestAuthMe_|TestListChatSessions_CrossUserIs403|TestDocRevision_'` +- **实际输出 (Actual Output)**: + ```text + === RUN TestDocRevision_UnauthenticatedAndUnknownOrphan + --- PASS: TestDocRevision_UnauthenticatedAndUnknownOrphan (0.12s) + === RUN TestDocRevision_ControlledDocumentRoutes + --- PASS: TestDocRevision_ControlledDocumentRoutes (0.12s) + === RUN TestDocRevision_PatchOrder_RetryProjectsWithoutSecondLedgerCommit + --- PASS: TestDocRevision_PatchOrder_RetryProjectsWithoutSecondLedgerCommit (0.12s) + === RUN TestAuthMe_LogoutNextRequestIs401 + --- PASS: TestAuthMe_LogoutNextRequestIs401 (0.13s) + === RUN TestListChatSessions_CrossUserIs403 + --- PASS: TestListChatSessions_CrossUserIs403 (0.50s) + === RUN TestE2E_WorkflowGovernance_CompleteAndReplan + --- PASS: TestE2E_WorkflowGovernance_CompleteAndReplan (0.23s) + PASS + ok chat-agent-system/internal/server 2.202s + ``` +- **评价判定 (Evaluation / Verdict)**:PASS。 + +### 5.5 开发环境容器重建与运行时冒烟 +- **测试输入 (Input)**:`./scripts/env-service.sh dev rebuild` +- **实际输出 (Actual Output)**: + - 容器更新:`shuimu-context-pg-dev` (healthy), `shuimu-pi-agent-dev` (healthy), `shuimu-agent-app-dev` (healthy), `shuimu-agent-events-dev` (healthy)。 + - 健康检查 (`GET /api/v1/health`): + ```json + {"status":"ok","env":"dev","agent_backend":"pi-agent","version":"v1.0","shared_kb_port":5432,"kb_ready":true,"database_ready":true,"schema_version":53,"schema_ready":true,"task_store_ready":true} + ``` + - 安全响应头 (`curl -I http://127.0.0.1:8080/api/v1/health`): + - `X-Content-Type-Options: nosniff` + - `X-Frame-Options: DENY` + - `Referrer-Policy: strict-origin-when-cross-origin` + - `Content-Security-Policy: default-src 'self'; ...` + - 登录与认证端点: + - 未认证请求 `/api/v1/workflows/catalog` 返回 `401 ERR_UNAUTHENTICATED`。 + - 管理员登录 `POST /api/v1/auth/login` 成功签发 Bearer Token。 + - 携带 Token 请求 `/api/v1/auth/me` 及 `/api/v1/workflows/catalog` 均返回 200 正常数据。 +- **评价判定 (Evaluation / Verdict)**:PASS。 + +## 六、 自动化测试套件汇总 (Test Suite Execution) + +| 测试类型 | 执行命令 | 耗时 | 结果 | +|----------|----------|------|------| +| Go 静态检查 | `go vet ./...` | ~3s | PASS | +| Go 短单元测试 | `go test -short ./...` | ~16s | 46 个包全部 PASS | +| 前端测试与构建 | `cd web && npm test && npm run build` | ~18s | PASS (生成 br/gz 压缩包) | +| 治理与权限 PG 集成 | `TEST_DATABASE_URL=... go test ...` | ~2.2s | 全部测试用例 PASS | +| 运行时服务健康与安全头 | `curl -sf http://127.0.0.1:8080/...` | <1s | PASS (`schema_version=53`) | + +## 七、 测试结论与后续建议 (Conclusion & Next Steps) + +1. **结论**:开发分支(`dev`)已完整合入审计剩余修复项、工作台模块化拆分、rdev 文档匹配及 Schema 53 迁移,所有深度测试全绿,具备晋升至测试环境(`test`)的标准。 +2. **晋升操作**:执行 `dev` 向 `test` 分支的 `--no-ff` 合并,并触发 `test` 环境服务重建(`./scripts/env-service.sh test rebuild`),供在线实测。