diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index 58098b2a..9fda2ac3 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -5,7 +5,7 @@ ## 焦点 -1. **2026-09-20 激活后职责改派 + 成员可对话 in_progress**:`fix/post-activation-duty-reassign-member-chat`;见 [short-term](./short-term/2026-09-20-post-activation-duty-reassign-member-chat.md)。 +1. **2026-09-20 激活后职责改派 + 成员可对话 done**:合入 `9d98f1ae`;test rebuild;陈威 chat PASS、PATCH 改派 PASS;见 [报告](../test-reports/2026-09-20-post-activation-duty-reassign-member-chat-test-report.md)。 2. **2026-09-20 test 环境三问题整改 done**:全局项目名唯一、成员会话可见、资产 raw 预览回退;test schema **57**;见 [报告](../test-reports/2026-09-20-test-env-triage-fixes-test-report.md)。 3. **2026-09-20 dev→test 晋升完成 (rc-v1.0.0-beta.6)**:合入 bug-hunt permissions/uploads;test `:8081` schema 曾为 **56**,现已随 triage 升至 **57**;助手真实对话 + 小队 intake + 12 项回归 **PASS**(见 [test-report](../test-reports/2026-09-20-test-env-beta6-assistant-squad-test-report.md))。 4. **红线**:禁止整支 merge FAV;不默认升 `MULTI_INTENT_PLAN_TIER=full`;`SEMANTIC_SUMMARY_REPLACE` 不随 W2 开启;FAV live 观察窗证据驱动;`FAV_DEGRADED_READ=false`;项目 143 只读;SWBOOT-10 保持 fail-closed stub;D7 待合规签字 @@ -14,7 +14,7 @@ | owner | task | branch | worktree | mutex | status | |-------|------|--------|----------|-------|--------| -| Cursor-Auto | 2026-09-20-post-activation-duty-reassign-member-chat | fix/post-activation-duty-reassign-member-chat | - | projectworkflow+authz+web | in_progress | +| Cursor-Auto | 2026-09-20-post-activation-duty-reassign-member-chat | fix/post-activation-duty-reassign-member-chat | - | projectworkflow+authz+web | done | | Cursor-Auto | 2026-09-20-test-env-triage-fixes | fix/test-env-triage-2026-09-20 | - | projectworkflow+chat+assets | done | | Cursor-Auto | 2026-09-20-test-env-beta6-verification | docs/test-env-beta6-verification | - | infra+docs | done | | Cursor-Auto | 2026-09-20-bug-hunt-permissions-uploads | fix/bug-hunt-2026-09-20-permissions-and-uploads | - | authz+web+projectworkflow | done | @@ -154,7 +154,7 @@ | holder | phase | since | scope | queue | |--------|-------|-------|-------|-------| -| Cursor-Auto | merging | 2026-09-20 | post-activation duty reassign + member chat | - | +| Cursor-Auto | smoke | 2026-09-20 | post-activation duty reassign + member chat;test rebuild | - | **phase**: `idle` | `merging` | `smoke` | `e2e` diff --git a/.doc/test-reports/2026-09-20-post-activation-duty-reassign-member-chat-test-report.md b/.doc/test-reports/2026-09-20-post-activation-duty-reassign-member-chat-test-report.md new file mode 100644 index 00000000..c68598f7 --- /dev/null +++ b/.doc/test-reports/2026-09-20-post-activation-duty-reassign-member-chat-test-report.md @@ -0,0 +1,69 @@ +# 激活后职责改派 + 成员可对话 测试报告 + +## 一、 测试背景 (Background) + +test 环境实测两处产品缺口: + +1. 工作流激活后项目设置进入冻结态,无法再指定文档编制/审核/批准负责人; +2. 项目成员「陈威」(user_id=35)对话返回 `WORKFLOW_ACCESS_DENIED` /「无权访问该阶段对话内容」——阶段 ABAC 要求文档职责,与「成员即可聊」期望不符。 + +## 二、 测试目标 (Test Objectives) + +- live 工作流下,项目成员无需文档职责即可阶段对话;文档写操作仍按职责门禁; +- 激活后可通过 `PATCH .../doc-tasks/{taskKey}/duties` 改派三职;小队任务运行中拒绝; +- `PUT .../workflow-plan` 仍返回 `PLAN_FROZEN`。 + +## 三、 测试方案与环境 (Test Plan & Environment) + +- OS: Linux;分支 `dev`(合入 `merge: fix/post-activation-duty-reassign-member-chat`) +- test 环境:`http://127.0.0.1:8081`,真实 `pi-agent`,schema **57** +- 单元:`go test -short ./internal/projectinstance/ ./internal/server/ ./internal/app/` +- 证据:[`assets/2026-09-20-post-activation-duty-reassign-member-chat/`](./assets/2026-09-20-post-activation-duty-reassign-member-chat/) + +## 四、 预期结果 (Expected Results) + +| 用例 | 预期 | +|------|------| +| 陈威 `POST /chat/stream`(sess-p5-u35) | 无 `WORKFLOW_ACCESS_DENIED`,进入意图/回复流 | +| `PUT /projects/5/workflow-plan` | 409 `PLAN_FROZEN` | +| `PATCH /projects/5/doc-tasks/intake/duties`(author→35) | 200,snapshot 三职更新 | +| 无职责成员 `TaskKeyAllowed(intake)` | 仍为 false(单元测) | + +## 五、 实际测试结果与判定 (Actual Results & Evaluation) + +### 用例 1:陈威成员阶段对话 + +- **测试输入 (Input)**:陈威登录 → `POST /api/v1/chat/stream`(`sess-p5-u35`,项目 5 live / `V0.1_triage`) +- **实际输出 (Actual Output)**:SSE 依次 `phase` / `turn_ack` / `status` / `delta` / `done`;无 `WORKFLOW_ACCESS_DENIED` +- **评价判定 (Evaluation / Verdict)**:PASS +- **性能与耗时 (Duration & Latency)**:流式首包 < 1s(本地) + +### 用例 2:规划仍冻结 + +- **测试输入**:admin `PUT /api/v1/projects/5/workflow-plan` +- **实际输出**:HTTP 409,业务码 `PLAN_FROZEN`(「工作流已激活,规划已冻结」) +- **评价判定**:PASS + +### 用例 3:激活后改派 + +- **测试输入**:admin `PATCH /api/v1/projects/5/doc-tasks/intake/duties`,`author_user_id=35` +- **实际输出**:200;intake duties `author=35, reviewer=32, approver=33` +- **评价判定**:PASS + +### 用例 4:单元回归 + +- **测试输入**:`go test -short`(projectinstance / server / app) +- **实际输出**:全部 PASS(见 assets `go-test-short.txt`) +- **评价判定**:PASS + +## 六、 自动化测试套件汇总 (Test Suite Execution) + +见 [`assets/.../go-test-short.txt`](./assets/2026-09-20-post-activation-duty-reassign-member-chat/go-test-short.txt) 与 [`verify-summary.json`](./assets/2026-09-20-post-activation-duty-reassign-member-chat/verify-summary.json)。 + +health:`schema_version=57`,`env=test`,`agent_backend=pi-agent`。 + +## 七、 测试结论与后续优化建议 (Conclusion & Next Steps) + +- 达到合入/冒烟标准:成员可聊 + 受控改派 + 规划冻结保留。 +- 提醒:验证期曾重置「陈威」凭据哈希,验收后请用户自行改密(本报告不披露口令)。 +- 后续:忙文档(squad running)拒绝路径已有单元测;可在 UI 验收中补一条 running 时 409 的浏览器用例。 diff --git a/.doc/test-reports/assets/2026-09-20-post-activation-duty-reassign-member-chat/go-test-short.txt b/.doc/test-reports/assets/2026-09-20-post-activation-duty-reassign-member-chat/go-test-short.txt new file mode 100644 index 00000000..a8c3e15b --- /dev/null +++ b/.doc/test-reports/assets/2026-09-20-post-activation-duty-reassign-member-chat/go-test-short.txt @@ -0,0 +1,3 @@ +ok chat-agent-system/internal/projectinstance 0.004s +ok chat-agent-system/internal/server 15.660s +ok chat-agent-system/internal/app 0.019s diff --git a/.doc/test-reports/assets/2026-09-20-post-activation-duty-reassign-member-chat/health.json b/.doc/test-reports/assets/2026-09-20-post-activation-duty-reassign-member-chat/health.json new file mode 100644 index 00000000..791b8421 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-20-post-activation-duty-reassign-member-chat/health.json @@ -0,0 +1 @@ +{"status":"ok","env":"test","agent_backend":"pi-agent","version":"v1.0","shared_kb_port":5432,"kb_ready":true,"database_ready":true,"schema_version":57,"schema_ready":true,"task_store_ready":true} diff --git a/.doc/test-reports/assets/2026-09-20-post-activation-duty-reassign-member-chat/verify-summary.json b/.doc/test-reports/assets/2026-09-20-post-activation-duty-reassign-member-chat/verify-summary.json new file mode 100644 index 00000000..cdcdac5d --- /dev/null +++ b/.doc/test-reports/assets/2026-09-20-post-activation-duty-reassign-member-chat/verify-summary.json @@ -0,0 +1,19 @@ +{ + "member_chat": { + "user": "chenwei", + "user_id": 35, + "session_id": "sess-p5-u35", + "project_id": 5, + "access_denied": false, + "pass": true + }, + "plan_frozen_put": { + "status": 409, + "pass": true + }, + "duty_reassign_patch": { + "task_key": "intake", + "author_user_id_after": 35, + "pass": true + } +}