docs(test): record the multi-user workflow fix and dev smoke
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>
This commit is contained in:
+2
-1
@@ -13,6 +13,7 @@
|
||||
|
||||
| owner | task | branch | worktree | mutex | status |
|
||||
|-------|------|--------|----------|-------|--------|
|
||||
| Cursor | 2026-09-21-dev-multiuser-four-issues | fix/dev-multiuser-four-issues-2026-09-21 | .worktrees/fix-dev-multiuser-four-issues | projectinstance+docgov | done |
|
||||
| Cursor | 2026-09-21-taskrun-error-transparency | fix/taskrun-error-transparency-2026-09-21 | - | chat+web | done |
|
||||
| Cursor | 2026-09-21-trace-panel-null-crash | fix/trace-panel-null-crash-2026-09-21 | - | trace-index+web | done |
|
||||
| Cursor-Auto | 2026-09-20-stage-backtrack-design | feature/stage-backtrack-design | - | trace-impact-design | done |
|
||||
@@ -172,7 +173,7 @@
|
||||
|
||||
| holder | phase | since | scope | queue |
|
||||
|--------|-------|-------|-------|-------|
|
||||
| - | idle | 2026-09-21 | 任务错误透传已合入 dev 并 rebuild;`GET /api/v1/tasks/runs/{id}` 为 snake_case;`/health` schema_version=59 | - |
|
||||
| Cursor | idle | 2026-09-21 | dev 已按 fix/dev-multiuser-four-issues-2026-09-21 重建;`/health` schema_version=59 | - |
|
||||
|
||||
**phase**: `idle` | `merging` | `smoke` | `e2e`
|
||||
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: "dev 多用户四问题修复"
|
||||
status: done
|
||||
created: 2026-09-21
|
||||
updated: 2026-09-21
|
||||
owner: Cursor
|
||||
branch: fix/dev-multiuser-four-issues-2026-09-21
|
||||
worktree: .worktrees/fix-dev-multiuser-four-issues
|
||||
mutex: projectinstance+docgov
|
||||
---
|
||||
|
||||
# dev 多用户四问题修复
|
||||
|
||||
## 目标
|
||||
|
||||
项目 6579 上,成员能看到激活后的受控文档,消息能路由到 `bd_*` 任务键,职责矩阵与工作流配置一致,激活后仍可改职责/审批/启用但不能切换工作流。
|
||||
|
||||
## 范围
|
||||
|
||||
- 激活与列表时把已启用 doc_task 幂等写入 `document_records`(不覆盖已有正文)
|
||||
- 语义任务键按项目实际键做后缀归一;同浏览器切换账号时清空工作台本地状态
|
||||
- 职责矩阵改走权威职责与 `PATCH .../duties`,去掉演示工号与演练文案
|
||||
- `UpdateLivePlan`:激活后可改配置;切换工作流仍拒绝;项目 143 保持冻结
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不改写、不终止项目 143
|
||||
- 不把 `my_private` 跨用户 403 改成放行
|
||||
- 不晋升 test/main
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 物化模板文档与 6579 回填
|
||||
2. [x] 任务键归一、账号隔离、403/409 文案
|
||||
3. [x] 职责矩阵接权威数据
|
||||
4. [x] 激活后 live 配置编辑
|
||||
5. [x] 占槽合入 dev、冒烟与实测报告
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 陈威浏览器复测仍待做;管理员 `GET /projects/6579/documents` 已看到 7 个 `bd_*` 键
|
||||
- [x] 「开始编写用户初始需求表」在单测中解析为 `bd_intake`
|
||||
- [x] 403 文案单测不再落到 NETWORK_ERROR;同浏览器切换清空有单测,未做双账号点击
|
||||
- [x] 激活后切换工作流被 409 拒绝,项目 143 为 frozen;职责改写有单测
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Checklist:
|
||||
- Handoff:
|
||||
- Test report: `.doc/test-reports/2026-09-21-dev-multiuser-four-issues-test-report.md`
|
||||
@@ -0,0 +1,60 @@
|
||||
# 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`;把工作流键改成别的值返回 409 `WORKFLOW_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)` 与 403 `ERR_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` 通过。
|
||||
- 重建后健康检查:
|
||||
|
||||
```json
|
||||
{"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 未改写。
|
||||
@@ -0,0 +1,17 @@
|
||||
doc_id | task_key | is_template_only | author_id | duty_policy
|
||||
-----------------------------------+----------------------+------------------+-----------+-------------
|
||||
doc_proj6579_bd_cdo_quote | bd_cdo_quote | t | 0 |
|
||||
doc_proj6579_bd_feasibility_dev | bd_feasibility_dev | t | 0 |
|
||||
doc_proj6579_bd_feasibility_reg | bd_feasibility_reg | t | 0 |
|
||||
doc_proj6579_bd_intake | bd_intake | t | 398 | author_only
|
||||
doc_proj6579_bd_prelim_design | bd_prelim_design | t | 0 |
|
||||
doc_proj6579_bd_research | bd_research | t | 0 |
|
||||
doc_proj6579_bd_user_requirements | bd_user_requirements | t | 0 |
|
||||
doc_proj6579_intake | intake | t | 398 | author_only
|
||||
(8 rows)
|
||||
|
||||
project_143_docs
|
||||
------------------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
login 200 user admin 9
|
||||
documents 200 count 8 task_keys ['bd_cdo_quote', 'bd_feasibility_dev', 'bd_feasibility_reg', 'bd_intake', 'bd_prelim_design', 'bd_research', 'bd_user_requirements', 'intake']
|
||||
settings 200 plan_edit_mode live revision 1 can_edit_plan False definition main
|
||||
switch_put 409 error {'error': 'WORKFLOW_SWITCH_FROZEN', 'message': '运行中不能切换工作流,只能调整职责、审批和文档启用'}
|
||||
revision_after_switch_attempt 1 definition main
|
||||
project_143_mode 200 frozen
|
||||
Reference in New Issue
Block a user