The report keeps the 6579 document backfill, the live-edit switch rejection, and the rebuilt dev health check. Co-authored-by: Cursor <cursoragent@cursor.com>
4.6 KiB
4.6 KiB
dev 多用户四问题修复 测试报告
一、 测试背景 (Background)
dev 上项目「新的测试项目」(id 6579)出现四类问题:职责矩阵与工作流配置不一致、激活后整表配置被冻结、成员看不到文档、发送「开始编写用户初始需求表」出现 409 并被界面说成网络错误。项目 143 保持只读。
二、 测试目标 (Test Objectives)
- 激活后的启用文档在服务端
document_records中可见。 - 语义任务键能对齐到项目里的
bd_*键。 - 激活后可以改职责、审批和启用,但不能切换工作流;项目 143 仍是冻结。
- 403 不再被当成
NETWORK_ERROR。
三、 测试方案与环境 (Test Plan & Environment)
- OS:linux;分支
fix/dev-multiuser-four-issues-2026-09-21。 - dev 容器于 2026-09-21 用该分支工作树重建。
/health:schema_version=59,agent_backend=pi-agent,kb_ready=true。 - 单元测试覆盖物化、live 规划、任务键后缀和设置模式。
- 用管理员账号调用 dev
:8080核对项目 6579 与 143。未代登陈威(没有使用成员口令)。
四、 预期结果 (Expected Results)
- 6579 有 7 条
bd_*模板文档;bd_intake编制人为 398、策略author_only。 - 设置接口
plan_edit_mode=live;把工作流键改成别的值返回 409WORKFLOW_SWITCH_FROZEN,版本号不变。 - 项目 143 的
plan_edit_mode=frozen。 - 「开始编写用户初始需求表」在只有
bd_intake的交付物池里解析为bd_intake。
五、 实际测试结果与判定 (Actual Results & Evaluation)
用例 1:6579 文档回填
- 测试输入:向 dev 库为项目 6579 幂等插入 7 条
doc_proj6579_bd_*。 - 实际输出:
INSERT 0 7。随后GET /api/v1/projects/6579/documents返回 200,任务键包含bd_cdo_quote、bd_feasibility_dev、bd_feasibility_reg、bd_intake、bd_prelim_design、bd_research、bd_user_requirements。另有一条更早的本地键intake(doc_proj6579_intake),不是本次插入,也没有改项目 143(该项目文档数仍为 1)。 - 评价判定:PASS。成员列表是否隐藏这条旧
intake行,取决于阶段过滤;7 份bd_*已在服务端。 - 性能与耗时:插入语句一次返回。
用例 2:激活后禁止切换工作流
- 测试输入:
GET /api/v1/projects/6579/settings,再PUT /workflow-plan且live_edit=true、workflow_definition_key=not-the-live-workflow。 - 实际输出:设置
plan_edit_mode=live,can_edit_plan=false,workflow_plan_revision=1。PUT 返回 409,错误码WORKFLOW_SWITCH_FROZEN,消息「运行中不能切换工作流,只能调整职责、审批和文档启用」。再次读取修订号仍为 1,定义键仍为main。 - 评价判定:PASS。
- 性能与耗时:两次读取与一次拒绝写,均在 1 秒内。
用例 3:项目 143 保持冻结
- 测试输入:
GET /api/v1/projects/143/settings。 - 实际输出:
plan_edit_mode=frozen。 - 评价判定:PASS。
用例 4:任务键与错误文案
- 测试输入:前端单测「开始编写用户初始需求表」对只有
bd_intake的池;buildNetworkErrorInfo(409, TASK_SCOPE_UNRESOLVED)与 403ERR_FORBIDDEN。 - 实际输出:任务键为
bd_intake。409 文案为「无法定位该文档任务的工作流阶段,请检查任务名或联系管理员」,不是网络错误。403 文案保留「无权访问」。 - 评价判定:PASS(单测)。浏览器里用陈威再发一句消息未在本轮复测。
六、 自动化测试套件汇总 (Test Suite Execution)
go test -short:internal/projectinstance、internal/app、internal/server通过。internal/docgov新增物化测试通过;既有TestDocGov_CreateOrGetDocument_OptionalDutiesNullFK在连到 dev 库时失败,原因是它用随机project_id插入文档,而建项目语句的错误被忽略,外键失败。该失败不在本次改动路径上。web:npm test与npm run build通过。- 重建后健康检查:
{"status":"ok","env":"dev","agent_backend":"pi-agent","version":"v1.0","shared_kb_port":5432,"kb_ready":true,"database_ready":true,"schema_version":59,"schema_ready":true,"task_store_ready":true}
证据:.doc/test-reports/assets/2026-09-21-dev-multiuser-four-issues/。
七、 测试结论与后续优化建议 (Conclusion & Next Steps)
服务端文档、live 配置和切换拒绝已在 dev 容器上核对。可以合入 dev。尚未用陈威浏览器再走一遍发消息;旧的 doc_proj6579_intake 行仍在,不影响 bd_* 列表,但可以另开任务决定是否清掉。项目 143 未改写。