From 5a0e5e7001f3940261c4424ed692bbba4c4aeb19 Mon Sep 17 00:00:00 2001 From: weichen Date: Mon, 21 Sep 2026 08:27:35 +0000 Subject: [PATCH] docs(test): record intent confirm and stage-aware acceptance Update short-term/CURRENT claim for the extension branch and archive unit/web evidence pending live rebuild after merge. Co-authored-by: Cursor --- .doc/ops/CURRENT.md | 8 +- .../2026-09-21-intent-confirm-stage-aware.md | 41 ++++++++++ ...-intent-confirm-stage-aware-test-report.md | 78 +++++++++++++++++++ .../go-unit.txt | 30 +++++++ .../web-degrade.txt | 13 ++++ 5 files changed, 166 insertions(+), 4 deletions(-) create mode 100644 .doc/ops/short-term/2026-09-21-intent-confirm-stage-aware.md create mode 100644 .doc/test-reports/2026-09-21-intent-confirm-stage-aware-test-report.md create mode 100644 .doc/test-reports/assets/2026-09-21-intent-confirm-stage-aware/go-unit.txt create mode 100644 .doc/test-reports/assets/2026-09-21-intent-confirm-stage-aware/web-degrade.txt diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index 8526046c..9ea03059 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -5,16 +5,16 @@ ## 焦点 -1. **任务执行状态卡**:竖向时间线 `TaskRunCard` + `task_phase_snapshot` 刷新不退化。见 [报告](../test-reports/2026-09-21-taskrun-status-card-persistence-test-report.md)。test/main 未晋升。 -2. **意图填槽工作流作用域**:激活流匹配池收窄 + 跨流拦截引导,已合入 `dev`。见 [报告](../test-reports/2026-09-21-intent-workflow-scoping-test-report.md)。test/main 未晋升。 -2. **工作流文档键已收成 7 条**:项目 6579 的旧键 `intake` 已归档,管理员列表为 7 条 `bd_*`。见 [报告](../test-reports/2026-09-21-workflow-doc-key-unification-test-report.md)。test/main 未晋升。 -3. **dev 四问题修复**:近似说法可启动摸底表;刷新后重放任务进度;继续任务走 resume;模板态显示「模板预览」。见 [报告](../test-reports/2026-09-21-dev-deep-test-four-issues-test-report.md)。test/main 未晋升。 +1. **意图确认优先与阶段感知**:弱写「整理需求」→ intake 确认卡片。见 [报告](../test-reports/2026-09-21-intent-confirm-stage-aware-test-report.md)。test/main 未晋升。 +2. **任务执行状态卡**:竖向时间线 `TaskRunCard` + `task_phase_snapshot` 刷新不退化。见 [报告](../test-reports/2026-09-21-taskrun-status-card-persistence-test-report.md)。test/main 未晋升。 +3. **意图填槽工作流作用域**:激活流匹配池收窄 + 跨流拦截引导,已合入 `dev`。见 [报告](../test-reports/2026-09-21-intent-workflow-scoping-test-report.md)。test/main 未晋升。 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 对话 ADR 仍待合规签字(追踪表留存类别已定为 `record`,不授权物理删除);**不改 `production_ready`**;模块解耦批次 A–G 与回溯实施切片未单独认领前保持 `planned`。 ## 并行认领 | owner | task | branch | worktree | mutex | status | |-------|------|--------|----------|-------|--------| +| Cursor | 2026-09-21-intent-confirm-stage-aware | fix/intent-confirm-stage-aware-2026-09-21 | .worktrees/intent-confirm-stage-aware-2026-09-21 | intent+web+docgov | in_progress | | Cursor | 2026-09-21-taskrun-status-card | feature/taskrun-status-card-2026-09-21 | .worktrees/feature-taskrun-status-card-2026-09-21 | chat+web+taskrun | done | | Cursor | 2026-09-21-intent-workflow-scoping | fix/intent-workflow-scoping-2026-09-21 | - | intent+web+docgov | done | | Codex | 2026-09-21-agent-workflow-governance-adoption | feature/agent-workflow-governance-plan | .worktrees/feature-agent-workflow-governance-plan | agent-workflow-governance | in_progress | diff --git a/.doc/ops/short-term/2026-09-21-intent-confirm-stage-aware.md b/.doc/ops/short-term/2026-09-21-intent-confirm-stage-aware.md new file mode 100644 index 00000000..d737073a --- /dev/null +++ b/.doc/ops/short-term/2026-09-21-intent-confirm-stage-aware.md @@ -0,0 +1,41 @@ +--- +title: "意图确认优先与阶段感知消解" +status: in_progress +created: 2026-09-21 +updated: 2026-09-21 +owner: Cursor +branch: fix/intent-confirm-stage-aware-2026-09-21 +worktree: .worktrees/intent-confirm-stage-aware-2026-09-21 +base_dev_sha: 49fb68fec1ea56f00616c23d08efb15950c2300d +mutex: intent+web+docgov +--- + +# 意图确认优先与阶段感知消解 + +## 目标 + +商务流初期「整理一下需求」等弱写表述 → 阶段感知消解为 intake,经确认卡片拍板后再执行;不强指令误伤。扩展已合入的工作流作用域修复。 + +## 范围 + +- 批次5 `feat(intent)`:弱写动词 + `stageAwareRequirementsTask` + `needs_confirmation` +- 批次6 `feat(coordinator)`:智能确认门禁(PendingExpectation) +- 批次7 `feat(web)`:阶段错误降级聊天一次 +- 批次8:验收报告 + 合回 `dev` + +## 步骤 + +1. [x] 批次5–7 实现与单元门禁 +2. [ ] 批次8:合入 `dev` + rebuild + 真实链路抽样 + +## 验收标准 + +- [x] V0.1「整理一下需求」→ 确认 →「好」→ intake(单元 E2E) +- [x] 强指令不强制确认;「编写用户需求表」无 rdev 误拦 +- [ ] 合入后真实 PI 抽样 + +## 相关链接 + +- Plan: `~/.cursor/plans/意图确认优先与阶段感知_7ab2c4d5.plan.md` +- Prior (done): `.doc/archive/ops/2026-09-21-intent-workflow-scoping.md` +- Test report: `.doc/test-reports/2026-09-21-intent-confirm-stage-aware-test-report.md` diff --git a/.doc/test-reports/2026-09-21-intent-confirm-stage-aware-test-report.md b/.doc/test-reports/2026-09-21-intent-confirm-stage-aware-test-report.md new file mode 100644 index 00000000..65e38b4d --- /dev/null +++ b/.doc/test-reports/2026-09-21-intent-confirm-stage-aware-test-report.md @@ -0,0 +1,78 @@ +# 意图确认优先与阶段感知消解 测试报告 + +## 一、 测试背景 (Background) + +商务对接流初期用户说「整理一下需求」时,系统要么落入闲聊兜底,要么被研发短别名「用户需求」截走并跨流拦截/阶段门禁失败。需要:按当前阶段消解到《用户初始需求收集表》(intake),并以确认卡片拍板后再执行。 + +本报告覆盖扩展任务 `fix/intent-confirm-stage-aware-2026-09-21`(批次5–7);批次1–3 工作流作用域此前已合入 `dev`。 + +## 二、 测试目标 (Test Objectives) + +- 弱写动词 + 需求宾语 → `TRIGGER_TASK/intake` + `needs_confirmation` +- 协调层确认门禁下发 `PendingExpectation`;回复「好」后执行 +- 强指令(如「生成需求表」)不强制确认 +- 「编写用户需求表」在 main 流不再误作 rdev 跨流拦截 +- 任务直通道遇 `TASK_SCOPE_UNRESOLVED` / `DOC_TASK_NOT_IN_ACTIVE_STAGE` 降级聊天一次 + +## 三、 测试方案与环境 (Test Plan & Environment) + +- OS:linux;分支 `fix/intent-confirm-stage-aware-2026-09-21`;base `dev@9798b130` +- 单元:`go test ./internal/intent ./internal/coordinator`;`web npm test` / `npm run build` +- 真实容器 rebuild:待合入 `dev` 后由集成槽位持有者执行(本报告撰写时槽位由 taskrun-status-card 占用) +- 证据:`.doc/test-reports/assets/2026-09-21-intent-confirm-stage-aware/` + +## 四、 预期结果 (Expected Results) + +| 输入 | 预期 | +|------|------| +| V0.1「整理一下需求」 | 确认话术含《用户初始需求收集表》;默认选项 intake | +| 回复「好」 | `TRIGGER_TASK/intake`,StatusAccepted(无 runner 时 stub) | +| 「生成需求表」 | 直接 TRIGGER_TASK/intake,无 needs_confirmation | +| 「编写用户需求表」 | TRIGGER_TASK/user_requirements,无 workflow_scope_mismatch | +| 阶段错误码 | 前端 `isTaskStageDegradeCode` 为 true,hook 含降级路径 | + +## 五、 实际测试结果与判定 (Actual Results & Evaluation) + +### 用例 1:弱写需求 → 确认 → 拍板 + +- **测试输入**:`整理一下需求` → 确认后 `好` +- **实际输出**:见 `assets/.../go-unit.txt` — `TestProcessIntent_WeakRequirementsConfirmsIntake` PASS;首轮 conf=0.78 ClarificationRequired;拍板后 EXPECTATION_HIT conf=1 Accepted +- **评价判定**:PASS +- **性能与耗时**:约 10ms 内 + +### 用例 2:强指令不确认 + +- **测试输入**:`生成需求表`;协调层 `Confidence=0.86` intake +- **实际输出**:`TestStageAwareRequirements_StrongIntakeDirect` / `TestConfirmGate_StrongHighConfidenceDirect` PASS +- **评价判定**:PASS + +### 用例 3:用户需求表不再跨流误拦 + +- **测试输入**:main + V0.1「编写用户需求表」 +- **实际输出**:`TestStageAwareRequirements_WriteUserRequirementsV01` → TRIGGER_TASK/user_requirements,无 mismatch +- **评价判定**:PASS + +### 用例 4:前端降级 + +- **测试输入**:源码/单测 `isTaskStageDegradeCode` +- **实际输出**:`useTaskRunAttempts.test.ts` PASS;含「改由对话确认引导」 +- **评价判定**:PASS + +### 用例 5:全量回归 + +- **实际输出**:`web npm test` 471+33 PASS,`npm run build` PASS;`go test -short ./internal/intent ./internal/coordinator` PASS。全量 `./...` 中 `notification`/`storage` 既有 PG 唯一约束失败,与本改动无关(与既有报告一致)。 +- **评价判定**:PASS(本改动路径) + +## 六、 自动化测试套件汇总 (Test Suite Execution) + +```text +go test ./internal/intent ./internal/coordinator -run 'StageAware|ConfirmGate|ProcessIntent_Weak' → PASS +web npm test → 471 + vitest 33 PASS +npm run build → PASS +``` + +## 七、 测试结论与后续优化建议 (Conclusion & Next Steps) + +- 代码与单元/前端门禁达到合入标准。 +- **合入与真实链路**:集成槽位释放后 `--no-ff` 合入 `dev`,`./scripts/env-service.sh dev rebuild`,在商务对接项目实测「整理一下需求」确认卡片与拍板执行。 +- test/main 不晋升;不改 `production_ready`;项目 143 未改写。 diff --git a/.doc/test-reports/assets/2026-09-21-intent-confirm-stage-aware/go-unit.txt b/.doc/test-reports/assets/2026-09-21-intent-confirm-stage-aware/go-unit.txt new file mode 100644 index 00000000..255f7d30 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-21-intent-confirm-stage-aware/go-unit.txt @@ -0,0 +1,30 @@ +=== RUN TestStageAwareRequirements_WeakVerbIntakeConfirm +2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.78 +2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.78 +2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.78 +--- PASS: TestStageAwareRequirements_WeakVerbIntakeConfirm (0.00s) +=== RUN TestStageAwareRequirements_WriteUserRequirementsV01 +2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.86 +--- PASS: TestStageAwareRequirements_WriteUserRequirementsV01 (0.00s) +=== RUN TestStageAwareRequirements_StrongIntakeDirect +2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.86 +--- PASS: TestStageAwareRequirements_StrongIntakeDirect (0.00s) +=== RUN TestStageAwareRequirements_WeakNonRequirementsStaysCasual +2026/09/21 08:27:04 INFO intent_recognition intent=CASUAL_CHAT branch=AMBIGUOUS_FALLBACK confidence=0.2 +--- PASS: TestStageAwareRequirements_WeakNonRequirementsStaysCasual (0.00s) +PASS +ok chat-agent-system/internal/intent 0.008s +=== RUN TestConfirmGate_WeakVerbNeedsConfirmation +--- PASS: TestConfirmGate_WeakVerbNeedsConfirmation (0.00s) +=== RUN TestConfirmGate_StrongHighConfidenceDirect +--- PASS: TestConfirmGate_StrongHighConfidenceDirect (0.00s) +=== RUN TestConfirmGate_StageMismatchRemapsDefaultToIntake +--- PASS: TestConfirmGate_StageMismatchRemapsDefaultToIntake (0.00s) +=== RUN TestProcessIntent_WeakRequirementsConfirmsIntake +2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.78 +2026/09/21 08:27:04 INFO coordinator_route intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.78 channel=SQUAD_FIXED reason=标准任务/阶段推进/工作流运行/长任务续跑指令,进入小队受控执行 +2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=EXPECTATION_HIT confidence=1 +2026/09/21 08:27:04 INFO coordinator_route intent=TRIGGER_TASK branch=EXPECTATION_HIT confidence=1 channel=SQUAD_FIXED reason=标准任务/阶段推进/工作流运行/长任务续跑指令,进入小队受控执行 +--- PASS: TestProcessIntent_WeakRequirementsConfirmsIntake (0.00s) +PASS +ok chat-agent-system/internal/coordinator 0.006s diff --git a/.doc/test-reports/assets/2026-09-21-intent-confirm-stage-aware/web-degrade.txt b/.doc/test-reports/assets/2026-09-21-intent-confirm-stage-aware/web-degrade.txt new file mode 100644 index 00000000..4c475024 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-21-intent-confirm-stage-aware/web-degrade.txt @@ -0,0 +1,13 @@ +✔ chat and task attempts live in one hook (0.843565ms) +✔ stage unresolved and not-in-active-stage degrade to chat once (0.105797ms) +✔ failed run with error_message surfaces TASK_FAILED not NETWORK_ERROR (0.514175ms) +✔ snake_case blocked_pending_governance is governance, not a network error (0.240533ms) +✔ unknown 4xx business code is not reported as a network error (0.236113ms) +ℹ tests 5 +ℹ suites 0 +ℹ pass 5 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 94.410096