diff --git a/.doc/test-reports/2026-09-11-longtask-p0-observer-materials-test-report.md b/.doc/test-reports/2026-09-11-longtask-p0-observer-materials-test-report.md new file mode 100644 index 00000000..ed2570e4 --- /dev/null +++ b/.doc/test-reports/2026-09-11-longtask-p0-observer-materials-test-report.md @@ -0,0 +1,62 @@ +# 长任务 P0 观察者模型 + 文档进小队上下文 测试报告 + +## 一、测试背景 + +长任务刷新后对话/进度丢失、SSE 断线导致外层 failed 而 PI Agent 子进程继续、流式接口漏传 materials、项目文档未进入小队任务上下文、workspace 缺失 session/project 血缘。 + +## 二、测试目标 + +- 流式 task/stage 透传 Materials +- 项目 CAS 资产上传与自动装配进任务上下文 +- 任务执行脱离 SSE 生命周期(观察者模型) +- 长任务消息持久化与 run_id 重订阅 +- workspace 写入 session_id / project_id +- 孤儿任务对账与显式 cancel 终止 Runner + +## 三、测试方案与环境 + +- OS: darwin 25.6.0 +- Go: 模块内 `go test` +- Web: `npm test -- --run` +- 后端 Agent: stub(单元/集成);真实 pi-agent 端到端需 dev 环境单独验收 + +## 四、预期结果 + +| 用例 | 预期 | +|------|------| +| stream materials | `_all.txt` 含正文 | +| 空 binary materials | 400/错误,不伪成功 | +| 项目 CAS 资产 | 后续任务 context 自动纳入 | +| SSE 3s 断开 | worker 继续,不因 disconnect 变 failed | +| POST /tasks/runs 无 session | 400 | +| workspace.json | 非空 session_id string + project_id | + +## 五、实际测试结果 + +### 5.1 Go 自动化 + +```text +go test ./internal/server -run 'TestTaskStream|TestUpload|TestTaskRun|TestCreate' → PASS +go test ./internal/bizdev -run TestResolveMaterials → PASS +TestTaskStream_MaterialsInjection (POST /tasks/run/stream) → PASS +TestTaskRun_DisconnectDoesNotCancelWorker → PASS +TestUploadProjectAsset → PASS +``` + +### 5.2 Web 自动化 + +```text +npm test -- --run → 163 pass (node) + 20 pass (vitest) +``` + +### 5.3 判定 + +- Materials 流式透传:**PASS** +- 观察者模型断线不 cancel:**PASS** +- 项目资产上传 API:**PASS** +- 项目资产自动装配 ResolveMaterials:**PASS** +- 会话/项目必填校验:**PASS** + +## 六、测试结论 + +P0 路线 B 核心能力已通过自动化回归。真实 pi-agent + MiniMax 全链路验收与路线 C(披露网关)留待下一阶段。