Files
Agent-System/.doc/test-reports/2026-09-16-matrix-deep-test-promote-test-test-report.md
T
weichenandCursor 68455faa94 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 <cursoragent@cursor.com>
2026-09-16 05:37:16 +00:00

22 KiB
Raw Blame History

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/
SSOT: FEATURE-MATRIX · CURRENT · gap-matrix


一、 测试背景 (Background)

在 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)

# 目标 成功标准
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)

3.1 分层方案

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):

{"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 预期
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)

每个典型用例固定四段:测试输入 → 系统输出 → 分析 → 评价判定。耗时一并给出。


5.1 Wave 1 — 门禁基线与模块定向

用例 W1-01:go vet ./...

  • 测试输入 (Input)
    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
  • 耗时:秒级

用例 W1-02:go test -short ./...

  • 测试输入 (Input)
    env -u TEST_DATABASE_URL -u DATA_DIR -u KB_DB_PORT go test -short ./...
    
  • 系统输出 (Actual Output)(摘自 short.txt 尾部)
    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 墙钟)

用例 W1-03:架构边界门禁

  • 测试输入 (Input)
    ./scripts/arch-check.sh --mode block
    
  • 系统输出 (Actual Output)(arch-check.txt)
    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

用例 W1-04:前端 npm test + 生产包扫描

  • 测试输入 (Input)
    cd web && npm test
    ./scripts/check-prod-bundle.sh
    
  • 系统输出 (Actual Output)
    ℹ 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),例如:
    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)
    # 隔离库(禁止 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)
    === 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)

用例 W2-01:健康与后端真实性

  • 测试输入
    GET /api/v1/health、GET /api/v1/ready
  • 系统输出
    {"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:新建项目与交付物洁净

  • 测试输入
    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 闲聊

  • 测试输入
    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

  • 测试输入
    RUN_PI_E2E=1 \
    PI_AGENT_RUNNER_URL=http://127.0.0.1:18865 \
    PI_AGENT_RUNNER_AUTH_TOKEN=<from container> \
    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)
    --- 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 / 健康

  • 测试输入
    ./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)
    [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)
    步骤 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)

命令 结果 证据
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)

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 冒烟