From 68455faa94d1dddbe374cf7ab26f03a89d7968a9 Mon Sep 17 00:00:00 2001 From: weichen Date: Wed, 16 Sep 2026 05:37:16 +0000 Subject: [PATCH] docs(test): expand matrix deep-test report with I/O analysis verdicts Rewrite the promote report so each Wave case records input, system output, analysis, and evaluation against FEATURE-MATRIX evidence. Co-authored-by: Cursor --- ...trix-deep-test-promote-test-test-report.md | 582 ++++++++++++++++-- 1 file changed, 519 insertions(+), 63 deletions(-) diff --git a/.doc/test-reports/2026-09-16-matrix-deep-test-promote-test-test-report.md b/.doc/test-reports/2026-09-16-matrix-deep-test-promote-test-test-report.md index a0959e4b..73a3b5b4 100644 --- a/.doc/test-reports/2026-09-16-matrix-deep-test-promote-test-test-report.md +++ b/.doc/test-reports/2026-09-16-matrix-deep-test-promote-test-test-report.md @@ -1,94 +1,550 @@ -# FEATURE-MATRIX 深度测试与 test 晋升报告 +# FEATURE-MATRIX 深度测试与 test 环境晋升 — 详细测试报告 + +**报告日期**: 2026-09-16 +**执行分支**: `feature/matrix-deep-test-promote-test` → 合入 `dev` → 晋升 `test` +**候选 Tag**: `rc-v1.0.0-beta.2` +**证据目录**: [`.doc/test-reports/assets/2026-09-16-matrix-deep-test/`](./assets/2026-09-16-matrix-deep-test/) +**SSOT**: [FEATURE-MATRIX](../status/FEATURE-MATRIX.md) · [CURRENT](../ops/CURRENT.md) · [gap-matrix](../remediation/gap-matrix.md) + +--- ## 一、 测试背景 (Background) -`production_ready=yes` 后需按 FEATURE-MATRIX 对已实现模块做分层深度回归,并将本地 `dev` 晋升到 `test`(`rc-v1.0.0-beta.2`)以支撑长期实测。不重跑完整 28min 三工作流 PI;以短测全量 + 定向包 + live API + 一次真实 PI 抽样为门禁。 +在 `production_ready=yes` 且三环境 schema 已对齐 47 的前提下,需要证明: + +1. FEATURE-MATRIX 中**已实现**模块在当前代码上仍可运行(非仅历史报告); +2. 本地 `dev` 可安全晋升并部署到 `test`(`:8081`),供后续人工/长期实测。 + +此前发布门禁 B1–B4 已签,但矩阵行多为「历史证据链接」。本轮以分层深度回归补**当日可复现**证据,并完成 `rc-v1.0.0-beta.2` 晋升。 + +**刻意不做**:完整 28min 三工作流 PI 重跑;Round20 全量 Playwright;纯软件项目自举(`planned`);合入 `main`;改写项目 143。 + +--- ## 二、 测试目标 (Test Objectives) -- 矩阵已实现行均有自动化或 live PASS 证据 -- 真实 PI 抽样可用(typed-result dual-track) -- `test` 分支合并 `dev`,tag `rc-v1.0.0-beta.2`,`:8081` rebuild 冒烟 PASS,schema=47 +| # | 目标 | 成功标准 | +|---|------|----------| +| T1 | 门禁基线全绿 | `go vet` / `go test -short` / arch-check / npm / prod-bundle exit 0 | +| T2 | 矩阵模块定向包全绿 | intent/chat/squad/workflow/authz/doc*/agent/events 定向 `ok` | +| T3 | 治理 PG 集成可复现 | 隔离库上 `TestWorkflowGovernance_PG_*` + `TestE2E_WorkflowGovernance_*` PASS | +| T4 | live 关键路径可用 | health、真实闲聊、会话授权、版本冲突、终止 preview、demo 无污染 | +| T5 | 真实 PI runner 可用 | typed-result dual-track 四子测 PASS | +| T6 | test 可更新部署 | `test` 合入 `dev`、tag、rebuild、smoke + 轻量 live PASS,schema=47 | + +--- ## 三、 测试方案与环境 (Test Plan & Environment) -| 层级 | 环境 | 说明 | -|------|------|------| -| Wave 1 | 本地 Go/npm | unset 污染 env;隔离库 `agent_gov_matrix@5434` | -| Wave 2 | dev `:8080` | pi-agent;项目 6367 | -| Wave 3 | runner `:18865` | MiniMax-M2.7-highspeed | -| Wave 4 | test `:8081` | events `:8089`;pi `:18866`;项目 3 | +### 3.1 分层方案 -产物目录:`.doc/test-reports/assets/2026-09-16-matrix-deep-test/` +```text +Wave 1 自动化(短测 + 定向 + 隔离治理 PG) +Wave 2 live API(dev :8080,真实 pi-agent) +Wave 3 真实 PI 抽样(runner :18865;FAIL 才升格三链) +Wave 4 晋升 test + rebuild + smoke + live :8081 +Wave 5 报告归档 + SSOT 注记修正 +``` + +### 3.2 环境指纹 + +| 环境 | 端口 | schema | agent_backend | 备注 | +|------|------|--------|---------------|------| +| shared KB | 5432 | — | — | 共享知识库 | +| **dev** | **8080** / events 8088 / pi **18865** | **47** | **pi-agent** | Wave 2/3 | +| **test** | **8081** / events 8089 / pi **18866** | **47** | **pi-agent** | Wave 4 | +| main | 8000 | 47 | pi-agent | 本轮只读对照,不晋升 | + +健康探针样例(dev): + +```json +{"status":"ok","env":"dev","agent_backend":"pi-agent","schema_version":47,"schema_ready":true,"task_store_ready":true} +``` + +### 3.3 用例矩阵设计 + +| 矩阵模块 (mutex) | 验证手段 | 主要资产 | +|------------------|----------|----------| +| intent / intent-plan | short 定向包 | `modules.txt` | +| chat / ctxmgr | short + live 闲聊/window/guest | `modules.txt` + `live-8080.json` | +| squad | short | `modules.txt` | +| workflow | 治理 PG + live SavePlan/冲突/激活/preview | `governance-pg-verbose.txt` + live JSON | +| IAM / authz | live login / guest 403 / members | live JSON | +| docgov / docrevision | short 包(不重跑 Round20 UI) | `modules.txt` | +| web | npm + bundle + live 冲突恢复路径 | `npm.txt` / `bundle.txt` / live | +| pi-agent | short + node result-v1 + live typed-result | `modules.txt` / `pi-sample-typed.txt` | +| infra | health/ready/smoke | `dev-health.json` / `test-env-smoke.txt` | +| CI / E2E | 治理 PG 复跑 | `governance-pg*.txt` | +| events | short E0–E2 相关包 | `modules.txt` | +| 纯软件自举 | — | **N/A(planned)** | + +--- ## 四、 预期结果 (Expected Results) -各 Wave exit 0 / overall=PASS;`纯软件项目自举` 记 N/A。 +| Wave | 预期 | +|------|------| +| W1 | 全部命令 exit 0;治理 PG ≥2 用例 PASS | +| W2 | `live-8080.json` `overall=PASS`;闲聊为真实模型回复;guest=`SESSION_FORBIDDEN`;冲突码=`ERR_CONCURRENT_SWITCH`;`can_terminate=true` | +| W3 | typed-result 四子测 PASS;**不**强制跑三工作流 PI | +| W4 | tag `rc-v1.0.0-beta.2`;`:8081` schema=47;smoke SUCCESS;`live-8081.json` overall=PASS | +| 矩阵 | 已实现行全部 PASS 或 N/A;无 FAIL 阻挡晋升 | + +--- ## 五、 实际测试结果与判定 (Actual Results & Evaluation) -### Wave 1 — 自动化 +> 每个典型用例固定四段:**测试输入 → 系统输出 → 分析 → 评价判定**。耗时一并给出。 -| 用例 | 输入 | 实际输出 | 判定 | -|------|------|----------|------| -| go vet | `go vet ./...` | exit 0(`vet.txt`) | PASS | -| go test -short | 全包 short | exit 0(`short.txt`) | PASS | -| arch-check | `--mode block` | production gate passed | PASS | -| npm test + bundle | `npm test`;`check-prod-bundle.sh` | 376+32 pass;bundle PASS | PASS | -| 模块定向 | intent/chat/squad/workflow/authz/doc*/agent/events | 全部 ok(`modules.txt`) | PASS | -| 治理 PG | `TestWorkflowGovernance_PG_|TestE2E_WorkflowGovernance` | 2 PASS(`governance-pg-verbose.txt`) | PASS | +--- -### Wave 2 — live `:8080` +### 5.1 Wave 1 — 门禁基线与模块定向 -- **输入**: health/login/create/chat/guest403/conflict/termination/demo(`zhanggong` 已停用,改用 `lizhuguan`) -- **实际输出**: 项目 **6367**,`overall=PASS`(`live-8080.json`) -- **判定**: PASS +#### 用例 W1-01:`go vet ./...` -### Wave 3 — PI 抽样 +- **测试输入 (Input)** + ```bash + env -u TEST_DATABASE_URL -u DATA_DIR go vet ./... + ``` +- **系统输出 (Actual Output)** + - 无诊断输出;`vet_exit=0`(见 `vet.txt`) +- **分析 (Analysis)** + - 清空 `TEST_DATABASE_URL`/`DATA_DIR` 避免上一轮 PI 隔离库与工作区路径污染编译/静态检查上下文。 + - 无 vet 告警说明当前合入点类型与可疑构造检查通过。 +- **评价判定 (Evaluation)**:**PASS** +- **耗时**:秒级 -- **输入**: `RUN_PI_E2E=1 go test ./internal/agent -run TestPiAgentTypedResult_LiveDualTrack` -- **实际输出**: success/fail/cancel/timeout 均 PASS,3.28s(`pi-sample-typed.txt`) -- **判定**: PASS(未升格三链) +#### 用例 W1-02:`go test -short ./...` -### Wave 4 — 晋升 test +- **测试输入 (Input)** + ```bash + env -u TEST_DATABASE_URL -u DATA_DIR -u KB_DB_PORT go test -short ./... + ``` +- **系统输出 (Actual Output)**(摘自 `short.txt` 尾部) + ```text + ok chat-agent-system/internal/server 10.668s + ok chat-agent-system/internal/squad (cached) + ... + short_exit=0 + ``` +- **分析 (Analysis)** + - 全仓 short 回归覆盖业务主路径单元/httptest 层。 + - `internal/server` ~10.7s 为最重包之一,仍在可接受范围内。 + - 历史踩坑:保留 `TEST_DATABASE_URL` 时,resume 类 PG 用例会误连隔离库并因缺用户 FK 失败;本轮强制 unset 后稳定。 +- **评价判定**:**PASS** +- **耗时**:约 92s(全量 short 墙钟) -- **输入**: `git merge --no-ff dev` → tag `rc-v1.0.0-beta.2` → `env-service.sh test rebuild` → smoke + live -- **实际输出**: health schema **47**;`test-env-smoke.sh` SUCCESS;live 项目 **3** overall PASS(`live-8081.json`) -- **注记**: `git-workflow-helper.sh promote-to-test` 的 `pull --rebase origin test` 曾触发危险 rebase,已 `rebase --abort` 后改为本地 merge;勿对已分叉的本地 `test` 盲目 rebase -- **判定**: PASS +#### 用例 W1-03:架构边界门禁 -### 矩阵行汇总 +- **测试输入 (Input)** + ```bash + ./scripts/arch-check.sh --mode block + ``` +- **系统输出 (Actual Output)**(`arch-check.txt`) + ```text + arch-check mode=block + boundaries=.../module-boundaries.yaml + ok chat-agent-system/internal/archtest 0.138s + arch-check block: production gate passed + arch_exit=0 + ``` +- **分析 (Analysis)** + - block 模式失败即阻断晋升;本轮模块边界契约未回退。 +- **评价判定**:**PASS** -| 模块 | 判定 | 证据 | -|------|------|------| -| 意图 / intent-plan | PASS | modules + short | -| 对话 / ctxmgr | PASS | live-8080 chat/window/guest | -| squad | PASS | modules | -| 工作流治理 | PASS | governance-pg + live conflict/activate/preview | -| 纯软件自举 | N/A | planned | -| IAM | PASS | live authz guest 403 + create/members | -| docgov / docrevision | PASS | short packages(未重跑 Round20 UI) | -| 前端工作台 | PASS | npm + B4 路径 live | -| PI Runner | PASS | typed-result sample | -| 三环境运维 | PASS | health 三环境 47;test smoke | -| CI / E2E | PASS | governance PG + 既有门禁证据 | -| 事件解耦 | PASS | events short packages | +#### 用例 W1-04:前端 `npm test` + 生产包扫描 + +- **测试输入 (Input)** + ```bash + cd web && npm test + ./scripts/check-prod-bundle.sh + ``` +- **系统输出 (Actual Output)** + ```text + ℹ tests 376 + ℹ pass 376 + ℹ fail 0 + Test Files 3 passed (3) # vitest + Tests 32 passed (32) + ✓ built in 7.44s + PASS: prod bundle scan (.../web/dist) + npm_exit=0 / bundle_exit=0 + ``` +- **分析 (Analysis)** + - tsx node:test 与 vitest 双轨均绿。 + - prod bundle 扫描确认 demo seeds 默认关闭(与 `DEMO-WEB-SEEDS` 门禁一致)。 +- **评价判定**:**PASS** +- **耗时**:npm ~0.8s + build ~7.4s + +#### 用例 W1-05:FEATURE-MATRIX 模块定向包 + +- **测试输入 (Input)** + 按模块分组执行(见 `modules.txt`),例如: + ```bash + go test -short -count=1 ./internal/intent ./internal/coordinator \ + ./internal/app/intentflow ./internal/app ./internal/events ./internal/server \ + -run 'TestSplitPlan|TestPlanProposal|...|IntentPlan|TestIntentRecognition|...' + go test -short -count=1 ./internal/ctxmgr ./internal/app/chatflow ./internal/chat + go test -short -count=1 ./internal/squad/... + go test -short -count=1 ./internal/projectinstance ./internal/workflowdef \ + ./internal/auth ./internal/authz ./internal/docgov ./internal/docrevision + go test -short -count=1 ./internal/agent + node --test deploy/pi-agent/result-v1.test.mjs + go test -short -count=1 ./internal/events ./internal/app/docnotify \ + ./internal/app/docadvance ./internal/app/docproject ./internal/app/docflow + ``` +- **系统输出 (Actual Output)**(摘要) + | 分组 | 结果 | + |------|------| + | intent/intent-plan | 6 包 ok,`intent_exit=0` | + | chat | 3 包 ok,`chat_exit=0` | + | squad | ok,`squad_exit=0` | + | workflow/authz/doc* | 6 包 ok,`waf_exit=0` | + | pi-agent Go | ok 3.459s | + | pi-agent node result-v1 | **3 pass / 0 fail** | + | events E0–E2 | 5 包 ok,`events_exit=0` | +- **分析 (Analysis)** + - 定向包把 FEATURE-MATRIX 行映射到可执行命令,避免「只引用旧报告」。 + - docrevision 本轮仅 short;完整 UI Round20 不在范围,但短测未暴露回归。 +- **评价判定**:**PASS** + +#### 用例 W1-06:治理 PG 集成(BUG-08 复跑) + +- **测试输入 (Input)** + ```bash + # 隔离库(禁止 agent_system_dev/test/main) + CREATE DATABASE agent_gov_matrix; + export TEST_DATABASE_URL='postgres://app:***@127.0.0.1:5434/agent_gov_matrix?sslmode=disable' + go test ./internal/server/ -run 'TestWorkflowGovernance_PG_|TestE2E_WorkflowGovernance' \ + -timeout 20m -count=1 -v + ``` +- **系统输出 (Actual Output)**(`governance-pg-verbose.txt`) + ```text + === RUN TestE2E_WorkflowGovernance_CompleteAndReplan + goose: no migrations to run. current version: 47 + --- PASS: TestE2E_WorkflowGovernance_CompleteAndReplan (0.31s) + === RUN TestWorkflowGovernance_PG_ActivateApproveAdvanceChain + --- PASS: TestWorkflowGovernance_PG_ActivateApproveAdvanceChain (0.35s) + PASS + ok chat-agent-system/internal/server 0.663s + ``` +- **分析 (Analysis)** + - 迁移链停在 **47**,与共享环境一致。 + - KB DSN 空配置触发离线降级日志,**不构成失败**(治理链路不依赖共享 KB)。 + - 覆盖「完成再规划」与「激活→批准→推进」两条治理主链。 +- **评价判定**:**PASS** +- **耗时**:约 0.66s(库已迁完后复跑) + +--- + +### 5.2 Wave 2 — live API 抽检(dev `:8080`) + +**会话元数据**:项目 **6367** / `sess-p6367-u11` / `overall=PASS`(完整 JSON:[`live-8080.json`](./assets/2026-09-16-matrix-deep-test/live-8080.json)) + +#### 用例 W2-01:健康与后端真实性 + +- **测试输入** + `GET /api/v1/health`、`GET /api/v1/ready` +- **系统输出** + ```json + {"status":"ok","env":"dev","agent_backend":"pi-agent","schema_version":47,"schema_ready":true,"task_store_ready":true} + ``` +- **分析** + - `agent_backend=pi-agent` 排除 stub 冒充验收。 + - schema 47 与 goose 最新迁移一致。 +- **评价判定**:**PASS**(6ms) + +#### 用例 W2-02:登录与账号可用性 + +- **测试输入** + 尝试 `zhanggong/123456` → 失败后改用 `lizhuguan`(owner)、`wangzong`(reviewer)、`admin`(approver)、`guest` +- **系统输出** + - `zhanggong`:**403**「账号已被停用,禁止登录」 + - 有效账号:owner_id=11,reviewer_id=12,approver_id=9,guest_id=13 +- **分析** + - 停用账号 fail-closed,符合 IAM 预期。 + - 活验账号切换已写入证据 note,避免误用历史脚本默认用户。 +- **评价判定**:**PASS**(账号策略正确;替代账号可用) + +#### 用例 W2-03:Demo 污染防护(项目列表) + +- **测试输入** + `GET /api/v1/projects`(Bearer owner) +- **系统输出** + - http=200;列表 count=7;`polluted=[]`(无 id 6001–6010) +- **分析** + - 与 goose 00046/00047 `demo_retired` + 列表过滤一致;演示十项目未回流列表。 +- **评价判定**:**PASS** + +#### 用例 W2-04:新建项目与交付物洁净 + +- **测试输入** + ```http + POST /api/v1/projects + {"name":"矩阵深度抽检-051808","code":"mtx-051808", + "device_type":"超声软组织手术吸引设备",...} + GET /api/v1/projects/6367/documents + ``` +- **系统输出** + - 创建:**201**,`project_id=6367` + - 文档:http=200,`doc_count=0`,`mock_ids=[]` +- **分析** + - 新建项目无 mock/seed 交付物污染(`DEMO-WEB-SEEDS`/`DEMO-DB-SEED` 防线仍有效)。 +- **评价判定**:**PASS**(create 20ms) + +#### 用例 W2-05:真实 PI 闲聊 + +- **测试输入** + ```http + POST /api/v1/chat + session_id=sess-p6367-u11 + message=先记录一下:本项目是超声软组织吸引设备立项摸底,请用一两句话确认你已记住设备类型 + ``` +- **系统输出** + - http=**200**,耗时 **8101ms** + - 回复摘录: + > 好的,已记住——本项目是**超声软组织吸引设备**(即超声软组织手术吸引设备)的立项摸底。… +- **分析** + - 延迟与语义均符合真实 MiniMax 链路,非 stub 瞬时模板。 + - 设备类型被正确回指,满足「记忆确认」意图抽检。 +- **评价判定**:**PASS** + +#### 用例 W2-06:刷新窗口与分类一致性 + +- **测试输入** + `GET /api/v1/chat/messages/window?session_id=sess-p6367-u11&days=7` + `GET /api/v1/chat/categories?session_id=...` +- **系统输出** + - window http=200,`window_msgs=2` + - categories http=200 +- **分析** + - 一轮 user+assistant 后窗口至少 2 条,符合刷新可读预期(CHAT-HISTORY-REFRESH 相关契约)。 +- **评价判定**:**PASS**(3ms) + +#### 用例 W2-07:双用户负例(guest) + +- **测试输入** + guest token 读取同一 `session_id` 的 window +- **系统输出** + - http=**403**,`error_code=SESSION_FORBIDDEN` +- **分析** + - 非会话 owner fail-closed;跨用户不可枚举他人对话。 +- **评价判定**:**PASS** + +#### 用例 W2-08:工作流规划保存 + +- **测试输入** + 拉取 `workflow-plan/default?workflow_key=main` → 填充三权职责 → + `PUT .../workflow-plan`(`expected_plan_revision=0`,`expected_selection_version=1`) +- **系统输出** + - http=**200**;`lifecycle_status=planning`;`workflow_plan_revision=1` +- **分析** + - 成员已 upsert 后 SavePlan 成功(避免历史 `DUTY_ASSIGNEE_NOT_ACTIVE_MEMBER`)。 +- **评价判定**:**PASS**(5ms) + +#### 用例 W2-09:版本冲突(乐观锁) + +- **测试输入** + 使用正确 `plan_revision`,但 `expected_selection_version=999` 再次 PUT +- **系统输出** + - http=**409** + - 嵌套业务码:`ERR_CONCURRENT_SWITCH`(HTTP 信封外层可为 `VERSION_CONFLICT`) +- **分析** + - 前端已能解包嵌套业务码并映射 `retry_after_switch`;本用例验证后端冲突契约仍在。 +- **评价判定**:**PASS**(1ms) + +#### 用例 W2-10:激活 + 终止 preview + +- **测试输入** + `POST .../activation-preview` → `POST .../workflow-instances/activate` → + `GET /api/v1/workflow-instances/{id}/termination-preview` +- **系统输出** + - activate http=**200** + - preview http=**200**;`instance_id=262`;`can_terminate=true` + - keys: `pending_documents`, `in_progress_task_runs`, `can_terminate`, `impact` +- **分析** + - 激活后实例可查询终止影响面,满足治理「先 preview 再终止」门禁。 +- **评价判定**:**PASS** + +**Wave 2 总评**:**PASS**(12/12 子用例) + +--- + +### 5.3 Wave 3 — 真实 PI 抽样 + +#### 用例 W3-01:`TestPiAgentTypedResult_LiveDualTrack` + +- **测试输入** + ```bash + RUN_PI_E2E=1 \ + PI_AGENT_RUNNER_URL=http://127.0.0.1:18865 \ + PI_AGENT_RUNNER_AUTH_TOKEN= \ + DATA_DIR=.../data/dev \ + go test ./internal/agent -run TestPiAgentTypedResult_LiveDualTrack -timeout 15m -v -count=1 + ``` + Runner 健康(`pi-runner-dev-health.json`): + `ok=true`,`model_id=MiniMax-M2.7-highspeed`,`has_token=true` +- **系统输出**(`pi-sample-typed.txt`) + ```text + --- PASS: TestPiAgentTypedResult_LiveDualTrack (3.28s) + --- PASS: .../failure_empty_prompt (0.00s) + --- PASS: .../timeout (0.00s) + --- PASS: .../cancel (0.30s) + --- PASS: .../success (2.97s) + pi_sample_exit=0 + ``` +- **分析** + - 覆盖成功路径与失败/超时/取消,证明 runner 鉴权、typed-result 编解码与取消语义可用。 + - 抽样已 PASS,按计划**不升格**完整三工作流 PI E2E(节约 ~28min,风险可控)。 +- **评价判定**:**PASS** +- **耗时**:3.28s + +--- + +### 5.4 Wave 4 — 晋升并部署 test + +#### 用例 W4-01:Git 晋升与 Tag + +- **测试输入** + 1. 首次执行 `./scripts/git-workflow-helper.sh promote-to-test rc-v1.0.0-beta.2` + 2. 因 `git pull --rebase origin test` 触发大规模 rebase 冲突 → `git rebase --abort` + 3. 改为:`git checkout test && git merge --no-ff dev` + `git tag -a rc-v1.0.0-beta.2` +- **系统输出** + - Tag 存在:`rc-v1.0.0-beta.2` + - `test` 先端含 promote merge + 后续 closeout sync +- **分析** + - 本地 `test` 与 `origin/test` 分叉时,rebase 会重放数百提交,属**工具风险**而非产品缺陷。 + - 已加固 `scripts/git-workflow-helper.sh`:本地晋升默认不再 `pull --rebase origin test`。 +- **评价判定**:**PASS**(晋升目标达成;工具缺陷已修) + +#### 用例 W4-02:test 容器 rebuild / 健康 + +- **测试输入** + ```bash + ./scripts/env-service.sh test rebuild + # 中间误用 compose 导致 PG 端口绑到 5433 冲突后,改用 env-service start 恢复 + curl -sf http://127.0.0.1:8081/api/v1/health + curl -sf http://127.0.0.1:8081/api/v1/ready + curl -sf http://127.0.0.1:8089/health + curl -sf http://127.0.0.1:18866/health + ``` +- **系统输出** + - health/ready:`env=test`,`schema_version=47`,`agent_backend=pi-agent` + - events:`{"env":"test","owner":"events-1","status":"ok"}` + - pi-agent:`ok=true`,model `MiniMax-M2.7-highspeed` +- **分析** + - `.env` 中 `SYSTEM_DB_PUBLISH_PORT=5433` 会被裸 `docker compose` 覆盖 test 默认 5434;**必须**走 `env-service.sh test *`。 + - schema 与 dev 对齐 47,具备同构实测条件。 +- **评价判定**:**PASS** + +#### 用例 W4-03:`test-env-smoke.sh` + +- **测试输入** + `./scripts/test-env-smoke.sh`(默认 `:8081` + pi `:18866`) +- **系统输出**(`test-env-smoke.txt`) + ```text + [PASS] test app SPA / + [PASS] test app deep link /projects + [PASS] pi-agent /health + [SUCCESS] test env smoke passed + ``` +- **分析** + - SPA/深链/runner 冒烟通过,说明前端静态资源与路由回退可用。 +- **评价判定**:**PASS** + +#### 用例 W4-04:test 轻量 live(隔离库) + +- **测试输入** + - test 库初始仅 `admin`;经 SQL 注入 `mtx_owner/reviewer/approver`(复用 admin 密码哈希) + - admin 创建项目(具备 `project:create`)→ 成员 upsert → SavePlan → 冲突 PUT → Activate → termination-preview + - **禁止**读取 `data/dev` +- **系统输出**([`live-8081.json`](./assets/2026-09-16-matrix-deep-test/live-8081.json)) + | 步骤 | HTTP / 结果 | + |------|-------------| + | health | schema=47,env=test | + | create_project | **201**,`project_id=3`,code=`tst-052432` | + | save_plan | **200**,`workflow_plan_revision=1` | + | conflict | **409**,`ERR_CONCURRENT_SWITCH` | + | activate | **200**,`lifecycle_status=active`,`active_workflow_key=main`,instance id=1 | + | termination_preview | **200**,`can_terminate=true` | + | **overall** | **PASS** | +- **分析** + - 项目 id=3 说明 test 业务库与 dev(6367)**严格隔离**。 + - 冲突/激活/preview 契约与 dev 一致,证明晋升镜像行为正确。 + - 副作用:`mtx_*` 为测试账号种子,可保留供后续实测。 +- **评价判定**:**PASS** + +**Wave 4 总评**:**PASS** + +--- + +### 5.5 FEATURE-MATRIX 行级评价汇总 + +| 模块 | 状态(矩阵) | 本轮验证 | 评价 | +|------|------------|----------|------| +| 意图识别 L1 | partial | W1 定向 | **PASS(功能可用)**;U9–U12 仍为 backlog | +| 多意图持久计划 | partial | W1 定向 | **PASS(U1–U8 短测)**;schema 注记已改为 47 | +| 对话 / ctxmgr | partial | W1+W2 | **PASS** | +| 智能体小队 | done | W1 | **PASS** | +| 工作流治理 | partial | W1-06+W2+W4 | **PASS** | +| 纯软件项目自举 | planned | — | **N/A** | +| IAM / 鉴权 | partial | W2/W4 | **PASS**(含停用账号与 guest 负例) | +| 文档治理 | done | W1 short | **PASS(短测)**;未重跑 UI Round20 | +| 文档版本与修改认知 | partial | W1 short | **PASS(短测)**;change-report 仍 fallback | +| 前端工作台 | partial | W1 npm + W2 冲突路径 | **PASS** | +| PI Runner | done | W1+W3 | **PASS** | +| 三环境运维 | done | W2/W4 health | **PASS** | +| CI / E2E | partial | W1-06 | **PASS(治理 PG)**;`-race` flake 仍为基建债 | +| 模块解耦与事件 | partial | W1 events | **PASS(短测)** | + +--- ## 六、 自动化测试套件汇总 (Test Suite Execution) -```text -go vet ./... → exit 0 -go test -short ./... → exit 0 -./scripts/arch-check.sh --mode block → PASS -cd web && npm test → 376 + 32 PASS -./scripts/check-prod-bundle.sh → PASS -治理 PG(agent_gov_matrix) → 2 PASS -PI typed-result live → 4/4 PASS -./scripts/test-env-smoke.sh → SUCCESS -``` +| 命令 | 结果 | 证据 | +|------|------|------| +| `go vet ./...` | exit 0 | `vet.txt` | +| `go test -short ./...` | exit 0 | `short.txt` | +| `./scripts/arch-check.sh --mode block` | PASS | `arch-check.txt` | +| `cd web && npm test` | 376 + 32 PASS | `npm.txt` | +| `./scripts/check-prod-bundle.sh` | PASS | `bundle.txt` | +| 模块定向套件 | 全组 exit 0 | `modules.txt` | +| 治理 PG(`agent_gov_matrix`) | 2 PASS | `governance-pg-verbose.txt` | +| PI typed-result live | 4/4 PASS | `pi-sample-typed.txt` | +| `./scripts/test-env-smoke.sh` | SUCCESS | `test-env-smoke.txt` | +| live `:8080` / `:8081` | overall PASS | `live-8080.json` / `live-8081.json` | + +**通过率(本轮门禁用例)**:Wave 1–4 关键用例 **100% PASS**;矩阵已实现行 **无 FAIL**;planned 行 **N/A**。 + +--- ## 七、 测试结论与后续优化建议 (Conclusion & Next Steps) -- FEATURE-MATRIX 已实现能力深度回归 **PASS**;本地 `test` 已部署 `rc-v1.0.0-beta.2`(schema 47)。 -- 建议修正 `git-workflow-helper.sh promote-to-test`:对本地晋升跳过 `pull --rebase`,或改为 `pull --ff-only`/`merge`。 -- 远端推送 `test`/tag 需用户明确授权后再执行 `./scripts/git-push-dev.sh test`。 +### 7.1 结论 + +1. **系统可正常运作**:短测、模块定向、治理 PG、dev/test live 与真实 PI 抽样均 PASS。 +2. **FEATURE-MATRIX 已实现能力**在本轮证据下可判定为**可用/未回归**;planned 的「纯软件项目自举」不纳入本轮验收。 +3. **test 服务端已更新部署**:本地 `test` @ `rc-v1.0.0-beta.2`,`:8081` schema=47,smoke + 轻量 live PASS。 +4. **总评价**:**达到晋升与深度回归目标,建议作为当前 test 实测基线。** + +### 7.2 风险与后续 + +| 项 | 说明 | 建议 | +|----|------|------| +| 完整三工作流 PI | 本轮仅抽样 | 夜间 `RUN_PI_E2E=1` 或发版前补跑 | +| Round20 UI | 未重跑 | 文档修订大改动时再跑 Playwright | +| `zhanggong` 停用 | dev 默认脚本用户失效 | 更新活验脚本默认账号 | +| test 缺种子用户 | 仅 admin | 晋升后补 demo/业务用户种子或文档化 SQL 种子步骤 | +| 远端同步 | 未 push | 用户授权后 `./scripts/git-push-dev.sh test` 并推送 tag | +| promote 工具 | 已修默认 rebase | 继续避免对分叉 `test` 做 origin rebase | + +### 7.3 关键产物索引 + +| 文件 | 内容 | +|------|------| +| `assets/.../live-8080.json` | dev 全链路抽检 | +| `assets/.../live-8081.json` | test 晋升后抽检 | +| `assets/.../pi-sample-typed.txt` | 真实 PI 抽样 | +| `assets/.../governance-pg-verbose.txt` | 治理 PG | +| `assets/.../short.txt` / `modules.txt` / `npm.txt` | 自动化基线 | +| `assets/.../test-env-smoke.txt` | test 冒烟 |