docs(plan): 对话办公能力全景盘点与 P0–P3 整改计划
盘点 32 ActionKey 与 HTTP 169 路由对话边界,明确假成功/dry-run 与 UI 专属红线;分期消除假成功、live 化 intentflow、查询真源与新写意图扩展。
This commit is contained in:
@@ -0,0 +1,208 @@
|
||||
---
|
||||
title: "对话办公能力全景盘点"
|
||||
created: 2026-09-25
|
||||
owner: Cursor
|
||||
task_id: dialogue-office-expansion-2026-09-25
|
||||
policy_revision: cursor-governance-2026-09-24-r1 @ 44161d2ad2d7aada3e9ff88127b52148543278e5
|
||||
review_state: pending
|
||||
integration_state: pending
|
||||
deployment: not_required
|
||||
cleanup: pending
|
||||
remote_sync: not_requested
|
||||
status: done
|
||||
confidence: high
|
||||
---
|
||||
|
||||
# 调研:对话办公能力全景盘点
|
||||
|
||||
## 范围与授权
|
||||
|
||||
- **用户目标**:以「对话辅助办公」为初衷,最大限度扩展对话可操作范围;**创建项目、添加成员、设置等治理结构操作保持 UI 专属**。
|
||||
- **本轮交付**:研究报告 + 分期整改计划(文档落盘);P0–P3 **实施另起任务**。
|
||||
- **允许写路径**:`.doc/audit`、`.doc/remediation`。
|
||||
- **基线 SHA**:`44161d2ad2d7aada3e9ff88127b52148543278e5`(建场时 local `dev`)。
|
||||
- **非目标**:不改产品代码、不更新 CURRENT/FEATURE-MATRIX/gap-matrix、不部署。
|
||||
- **整改方案**:[2026-09-25-dialogue-office-expansion-plan.md](../remediation/2026-09-25-dialogue-office-expansion-plan.md)
|
||||
|
||||
## 结论
|
||||
|
||||
1. 注册表共 **32** 个 ActionKey(非早期估计的 34);主链路与 intentflow 计划执行面 **双轨脱节**:计划层 U11/U12 已把部分键 live 化,单意图协调层仍对认领/送审/工作流触发等返回「假成功」话术。
|
||||
2. HTTP **169** 条路由可按对话边界分为:可操作候选 **A=46**、只读查询 **B=66**、UI 专属写/管理台 **C=44**、平台基线 **13**。
|
||||
3. 消除假成功、打通 dry-run、接真实查询源、再扩新写意图,应按 P0→P3 分期;一律复用 doc-review 四道防线(识别分流 → 话语分类 → 角色×状态出卡 → 执行二次鉴权),两步确认 + 服务端权威校验。
|
||||
|
||||
## 证据
|
||||
|
||||
| 项 | 路径/命令 | 结果 |
|
||||
|----|-----------|------|
|
||||
| ActionKey SSOT | `internal/intent/registry.go` `registerBuiltinActions` L145–187 | **32** 键 |
|
||||
| 主链 docgov | `internal/coordinator/engine_docgov.go` | claim/submit 假成功;approve/reject 有 PendingAction |
|
||||
| 主链 workflow | `internal/coordinator/engine_workflow.go` | switch 确认闭环断裂;trigger 引导 UI |
|
||||
| intentflow dry-run | `internal/app/intentflow/expansion.go` L195–216 | docgov 5 dry-run + run-control 2 dry-run |
|
||||
| HTTP 路由 | `rg 'mux\.HandleFunc\("' internal/server/server.go internal/server/document_revision_handlers.go` | **169** |
|
||||
| 样板 | doc-review-lifecycle `09fe9723`;`card_policy.go` / `recognizer_matchers_docgov.go` / `action_executor.go` | 四道防线可复用 |
|
||||
|
||||
## 1. 意图执行矩阵(32 ActionKey)
|
||||
|
||||
**执行类别说明**
|
||||
|
||||
| 类别 | 含义 |
|
||||
|------|------|
|
||||
| `real-exec` | 协调层或 PendingAction 已调用领域服务真写 |
|
||||
| `pending-action` / `confirm-card+pending` | 出确认卡或挂起期望,确认后 `action_executor` 真写 |
|
||||
| `query-direct` | 只读查询,直接回复(可能含硬编码兜底) |
|
||||
| `prose-only` | 仅自然语言,无业务副作用(或明确拒绝) |
|
||||
| `假成功` | StatusAccepted/成功话术,但未调用权威写服务 |
|
||||
| `dry-run` | intentflow Owner 返回 `validated_only` receipt,无副作用 |
|
||||
|
||||
| ActionKey | 中文 | 主链类别 | 计划链(intentflow) | 主处理 | 后端 owner |
|
||||
|-----------|------|----------|----------------------|--------|------------|
|
||||
| `project.advisory` | 进展/风险查询 | query-direct | QueryOwner | `engine_query.go:handleQueryProgress` | 协调层/LLM |
|
||||
| `project.fact.supplement` | 补充项目事实 | real-exec | Mutate(flag 下 dry→live) | `engine_stage.go:handleSupplementInfo` | ctxmgr / MutateOwner |
|
||||
| `project.stage.advance` | 推进阶段 | real-exec / 无 runner 时 prose 模拟 | — | `engine_stage.go:handleAdvanceStage` | stageflow |
|
||||
| `task.run` | 触发生成任务 | real-exec | TaskRunAdapter | `engine_task.go:handleTriggerTask` | stageflow / taskrun |
|
||||
| `task.run.adhoc` | 特设任务 | real-exec | — | `engine_task.go:handleTriggerAdhocTask` | 同上 |
|
||||
| `conversation.chat` | 闲聊 | prose-only | — | `engine_consult.go:handleCasualChat` | dialogue LLM |
|
||||
| `conversation.decline` | 暂缓建议 | prose-only | — | `engine_stage.go:handleDeclineExpectation` | 上下文 |
|
||||
| `document.claim` | 认领文档 | **假成功** | live(U11) | `engine_docgov.go:250–277` | 主链仅改 Claimed 列表;计划→docgov |
|
||||
| `document.review.submit` | 提交审核 | **假成功** | live(U11) | `engine_docgov.go:280–295` | 主链纯文案;计划→`SubmitForReview` |
|
||||
| `document.review.approve` | 审核通过 | pending-action | **dry-run** | `engine_docgov.go:handleDocGovApprove` | `docgov.ReviewApprove` |
|
||||
| `document.review.reject` | 审核驳回 | confirm-card+pending | **dry-run** | `engine_docgov.go:handleDocGovReject` | `docgov.ReviewReject` |
|
||||
| `document.final.approve` | 终审批准 | confirm-card+pending | **dry-run** | 同上 Approve 分支 | `docgov.ApproverApprove` |
|
||||
| `document.final.reject` | 终审驳回 | confirm-card+pending | **dry-run** | 同 reject | 同上 |
|
||||
| `document.proposal.decide` | 提案裁决 | confirm 分支真挂起 / **默认分支假成功** | **dry-run** | `engine_docgov.go:298+` | confirm_*→PendingAction |
|
||||
| `regulation.query` | 法规查询 | query-direct | QueryOwner | `engine_query.go:handleQueryRegulations` | kb.Client + 模板兜底 |
|
||||
| `case.query` | 相似案例 | query-direct | QueryOwner | `engine_query.go:handleQuerySimilarCases` | SearchSimilarCases + **硬编码案例** |
|
||||
| `permission.query` | 权责查询 | query-direct | — | `engine_query.go:handleQueryUserRights` | UserDocs 上下文 |
|
||||
| `document.reject_reason.query` | 驳回原因 | query-direct | — | `engine_query.go:handleQueryRejectReason` | 黑板 + default 文案 |
|
||||
| `card.confirm` | 确认挂起期望 | confirm 元动作 | — | expectation 映射 | 路由至目标 intent |
|
||||
| `project.stage.execute` | 阶段执行确认 | 注册有、switch **无独立 case** | — | 实际走 advance | 同 advance |
|
||||
| `security.forbidden` | 安全禁止 | prose-only | RejectPlan | `engine_consult.go` | — |
|
||||
| `workflow.switch` | 切换激活工作流 | **假成功(确认后无执行)** | **dry-run** | `engine_workflow.go:12–59` | **边界上属结构治理 → 宜诚实拒绝/引导 UI** |
|
||||
| `workflow.run` | 运行工作流 | **假成功(引导 UI)** | live(U12) | `engine_workflow.go:62–90` | 计划→`CreateWorkflowRun` |
|
||||
| `workflow.status.query` | 工作流状态 | query-direct | — | `engine_workflow.go:93` | UserProjectContext |
|
||||
| `document.status.query` | 文档状态 | query-direct(常空模板) | — | `engine_workflow.go:117` | 模板/document_summary |
|
||||
| `conversation.help` | 能力帮助 | query-direct | — | `engine_workflow.go:139` | AvailableActions |
|
||||
| `conversation.unsupported` | 不支持 | prose-only | — | `engine_workflow.go:159` | — |
|
||||
| `run.status.query` | 运行状态 | query-direct | — | `engine_run.go:handleRunStatusQuery` | WorkDir |
|
||||
| `run.resume` | 续跑 | confirm-card+pending | live(U12) | `engine_run.go:handleRunResume` | taskrun |
|
||||
| `run.restart` | 重启 | confirm-card+pending | **dry-run** | `engine_run.go:handleRunRestart` | taskrun.restart |
|
||||
| `project.impact.analyze` | 影响分析 | query-direct | — | `impact_actions.go` | ImpactActions |
|
||||
| `project.doc.revise_propose` | 修订提案 | confirm-card+pending | — | `impact_actions.go` | ProposeRevision |
|
||||
|
||||
### 1.1 假成功清单(主链路优先)
|
||||
|
||||
| # | Legacy / Key | 文件:行号 | 当前行为 | P0 建议 |
|
||||
|---|--------------|-----------|----------|---------|
|
||||
| 1 | `DOCGOV_CLAIM` / `document.claim` | `engine_docgov.go:250–277` | 仅 append `UserDocs.Claimed`,回复「已成功认领」,不调 docgov | 真执行 `RecordDocumentViewed`/claim API + 确认(若需) |
|
||||
| 2 | `DOCGOV_SUBMIT_REVIEW` / `document.review.submit` | `engine_docgov.go:280–295` | 纯成功文案,无状态变更 | 真执行 `Gov.SubmitForReview` + 角色门禁 |
|
||||
| 3 | `DOCGOV_PROPOSAL_DECIDE` 默认分支 | `engine_docgov.go:383–397` | 非 confirm_* 时按 proposal_action 返回采纳/拒绝文案,不写文档 | 默认分支诚实澄清或走确认卡;禁止假成功 |
|
||||
| 4 | `SWITCH_WORKFLOW` / `workflow.switch` | `engine_workflow.go:12–59` | 设 NextExpectation 要求确认,**确认后无写路径** | **诚实拒绝**:属 UI 专属(`PUT …/active-workflow`);或确认后明确「请在设置面板操作」 |
|
||||
| 5 | `TRIGGER_WORKFLOW` / `workflow.run` | `engine_workflow.go:62–90` | 「请在面板确认」话术,不创建 run | 确认卡 + `CreateWorkflowRun`(对齐 U12) |
|
||||
|
||||
附带(非计划 P0 五处,但同类):无 runner 时 `ADVANCE_STAGE`/`TRIGGER_TASK` 模拟成功;`VIEW_DOC` lifecycle 空模板。
|
||||
|
||||
### 1.2 intentflow 仍 dry-run 的键
|
||||
|
||||
**DocGov**(`docGovActionKeys` 7 − `DocGovLiveActionKeys` 2 = **5**):
|
||||
|
||||
- `document.review.approve`
|
||||
- `document.review.reject`
|
||||
- `document.final.approve`
|
||||
- `document.final.reject`
|
||||
- `document.proposal.decide`
|
||||
|
||||
**Run-control**(4 − live `workflow.run`/`run.resume` = **2**):
|
||||
|
||||
- `workflow.switch`(计划层 dry-run;产品边界建议永久不 live 写,改为拒绝)
|
||||
- `run.restart`
|
||||
|
||||
见 `internal/app/intentflow/expansion.go` L195–216;dry-run 行为 `DryRunAdapter.Execute` → `validated_only`。
|
||||
|
||||
## 2. HTTP 169 路由 × 对话边界
|
||||
|
||||
**统计口径**:`internal/server/server.go` `Routes()` + `document_revision_handlers.go` `registerDocumentRevisionRoutes()` 中 `mux.HandleFunc("METHOD path")` = **169**。不含中间件 OPTIONS、SPA 静态子路径。
|
||||
|
||||
| 类别 | 计数 | 含义 |
|
||||
|------|-----:|------|
|
||||
| **A 对话可操作候选** | 46 | 读写副作用;对话须两步确认后经服务层落库 |
|
||||
| **B 只读查询候选** | 66 | GET + preview POST |
|
||||
| **C UI 专属** | 44 | 治理结构写 + admin 全域(含管理台只读) |
|
||||
| 平台基线 | 13 | health/ready、认证、SPA、`/me` 自服务 |
|
||||
| **合计** | **169** | |
|
||||
|
||||
### 2.1 A — 对话可操作候选(46)
|
||||
|
||||
| 模块 | n | 代表路径 | 对话意图现状 |
|
||||
|------|--:|----------|--------------|
|
||||
| docgov | 11 | `POST …/docgov/{claim,submit-review,review-decision,approver-decision,proposal,proposal/decide,comments,content,lease/*}` | 批准/驳回已打通;claim/submit 主链假成功;comments 等偏 UI |
|
||||
| docrevision | 2 | `PATCH …/documents/{id}/content` · `POST …/agent-candidates/{id}/decision` | 正文 PATCH 仅 HTTP;候选决策可对话扩展 |
|
||||
| trace | 6 | `POST …/trace/{index,analyze}` · `…/edges/{id}/decision` · `…/reopen` · `…/recheck/…/clear` | 影响分析意图有;**边裁决/重开仅 HTTP** |
|
||||
| 补充批次 | 1 | `POST …/supplement-impacts/{batch_id}/decision` | 补充意图有;批次确认可对话化 |
|
||||
| 工作流运行(非结构) | 2 | `POST …/workflows/{key}/run` · `…/stages/{stage}/advance` | run 主链假成功;advance 有意图 |
|
||||
| 任务执行 | 6 | `POST …/tasks/{run,run/stream,runs}` · `…/{cancel,resume}` | 触发/续跑已打通 |
|
||||
| 对话写 | 8 | `POST …/chat*` | 会话基础设施 |
|
||||
| 意图计划 | 1 | `POST …/intent-plans/{id}/decisions` | intentflow + HTTP 双通道 |
|
||||
| 自由文档 | 6 | `POST/PUT/DELETE …/freeform-documents*` | **仅 HTTP** → P3 候选 |
|
||||
| 资产 | 2 | `POST …/assets` · `…/reparse` | **仅 HTTP** → P3 |
|
||||
| 通知 | 1 | `PATCH …/notifications/{id}` | **仅 HTTP** → P3 |
|
||||
| 用户偏好 | 1 | `PUT …/context/user/preference` | 低优先级 |
|
||||
|
||||
### 2.2 B — 只读查询候选(66)
|
||||
|
||||
项目/工作流/成员/设置 **GET**、termination/activation **preview**、chat 历史检索、docgov audit/comments GET、修订 ledger GET、资产 raw、通知列表、context/cases 等。
|
||||
|
||||
对话已覆盖:进展、文档/工作流/运行态、驳回原因、法规/案例/权限(案例与进展有硬编码兜底)。
|
||||
仍偏 HTTP:职责现状、修订版本/diff、trace 图、终止预览、成员列表只读(允许对话只读引导,禁止代写)。
|
||||
|
||||
### 2.3 C — UI 专属红线(44,对话永久禁写)
|
||||
|
||||
| 模块 | 写操作(禁入) |
|
||||
|------|----------------|
|
||||
| 项目/成员 | `POST /projects` · `POST|PUT|DELETE …/members` |
|
||||
| 职责 | `PATCH …/doc-tasks/{taskKey}/duties` |
|
||||
| 工作流结构/生命周期 | `PUT …/workflow-plan` · `PUT …/active-workflow` · `POST …/workflow-instances/activate` · `POST …/terminate` |
|
||||
| Admin | 角色/用户/密码/工作流定义 publish·retire/模板/config/system settings/maintenance/workspaces cleanup |
|
||||
|
||||
对话侧应对命中措辞走 `security.forbidden` / `conversation.unsupported`,**仅允许只读查询与引导**(如读职责现状、`termination-preview`)。
|
||||
|
||||
> **澄清**:`workflow.switch`(改 active-workflow)落入 C;`workflow.run`(创建运行实例)落入 A。P0 对前者诚实拒绝,对后者真执行。
|
||||
|
||||
## 3. 查询硬编码兜底
|
||||
|
||||
| 场景 | 位置 | 问题 |
|
||||
|------|------|------|
|
||||
| 相似案例 | `engine_query.go:420–426` | 无数据时硬编码 PRJ-2025-008 / PRJ-2024-019 |
|
||||
| 驳回原因 | `engine_query.go:260–276` + `card_policy.go:defaultRejectReasonText` | 黑板/事件捞取失败则默认文案 |
|
||||
| 法规 | `engine_query.go:382–388` | KB 空则 GB/YY 模板 |
|
||||
| 进展简报 | `engine_query.go:83–164` | 默认项目名与长硬编码段落 |
|
||||
| 文档状态 | `engine_workflow.go:126–129` | lifecycle 空 → 引导面板 |
|
||||
|
||||
## 4. 复用样板:doc-review 四道防线
|
||||
|
||||
参考合入/分支证据:`feature/doc-review-lifecycle-2026-09-25` @ `09fe9723`(批注/重开/积压/送审真执行)。
|
||||
|
||||
| 防线 | 符号 | 要点 |
|
||||
|------|------|------|
|
||||
| ① 识别分流 | `recognizer_matchers_docgov.go:matchDocGovAction` | 查询语气不误路由写动作 |
|
||||
| ② 话语分类 | `card_policy.go:ClassifyRejectUtterance`(Web 对称) | QUERY / EXECUTE / OTHER |
|
||||
| ③ 角色×状态出卡 | `ResolveRejectCard` / `buildRejectConfirmCard` | 无权限不出危险按钮 |
|
||||
| ④ 执行二次鉴权 | `handleDocGovReject/Approve` + `chat/action_executor.go` | 确认后调 `GovernanceEngine` |
|
||||
|
||||
后续写意图扩展必须复制该模式,禁止「话术成功、服务未写」。
|
||||
|
||||
## 5. 开放问题
|
||||
|
||||
- `project.stage.execute` 注册未接线:是否删除或显式映射到 advance(实施期决定)。
|
||||
- 自由文档/通知/资产对话化的产品优先级与确认文案(P3 开工前再确认)。
|
||||
- `workflow.switch` 是否保留意图仅作「引导 UI」还是识别层直接 `unsupported`(推荐后者,减少假确认)。
|
||||
|
||||
## 建议动作
|
||||
|
||||
见整改计划 P0–P3;本调研 **status=done** 仅表示盘点可审,**不代表问题已修复**。
|
||||
|
||||
## 状态与交接
|
||||
|
||||
- 产物:本文 + [整改计划](../remediation/2026-09-25-dialogue-office-expansion-plan.md)
|
||||
- 实施:另起 `feature/dialogue-office-p0-…` 等任务;每期独立验证与验收
|
||||
- CURRENT / MATRIX / gap-matrix:本轮不动
|
||||
- catalog:`feature=dialogue-office`,scope `.doc/audit`+`.doc/remediation`;与 `docgov` feature claim 硬冲突,故未占用 `docgov` 键
|
||||
@@ -13,6 +13,14 @@
|
||||
|
||||
## 核心文档(按阅读顺序推荐)
|
||||
|
||||
### 对话办公能力全景盘点(2026-09-25)
|
||||
|
||||
**文件**: [2026-09-25-dialogue-office-capability-research.md](./2026-09-25-dialogue-office-capability-research.md)
|
||||
|
||||
**结论**: 32 ActionKey 双轨脱节(主链假成功 vs intentflow 部分 live);HTTP 169 = A46/B66/C44+基线13;治理结构写永久 UI 专属。整改见 P0–P3 计划。
|
||||
|
||||
**整改**: [对话办公扩展计划](../remediation/2026-09-25-dialogue-office-expansion-plan.md) · task `dialogue-office-expansion-2026-09-25`
|
||||
|
||||
### 模块化重构方案审核检查清单(2026-09-23)
|
||||
|
||||
**文件**: [2026-09-23-modular-refactor-plan-review-checklist.md](./2026-09-23-modular-refactor-plan-review-checklist.md)
|
||||
|
||||
@@ -0,0 +1,204 @@
|
||||
---
|
||||
title: "对话办公能力扩展整改计划(P0–P3)"
|
||||
status: planned
|
||||
created: 2026-09-25
|
||||
updated: 2026-09-25
|
||||
owner: Cursor
|
||||
task_id: dialogue-office-expansion-2026-09-25
|
||||
policy_revision: cursor-governance-2026-09-24-r1 @ 44161d2ad2d7aada3e9ff88127b52148543278e5
|
||||
review_state: pending
|
||||
integration_state: pending
|
||||
deployment: not_required
|
||||
cleanup: pending
|
||||
remote_sync: not_requested
|
||||
---
|
||||
|
||||
# 对话办公能力扩展整改计划(P0–P3)
|
||||
|
||||
## 背景
|
||||
|
||||
配套调研:[对话办公能力全景盘点](../audit/2026-09-25-dialogue-office-capability-research.md)。
|
||||
|
||||
系统初衷是「对话辅助办公」。盘点显示:主链路多处假成功、intentflow 7 键 dry-run、查询意图硬编码兜底、大量 HTTP 写能力尚未进入对话通道。本计划分期打通 **真实执行 + 两步确认**,同时守住 **治理结构 UI 专属** 红线。
|
||||
|
||||
**本文件只交付方案**;P0–P3 实施各自另起 worktree/任务,不得在本调研任务内改业务代码。
|
||||
|
||||
## 目标
|
||||
|
||||
1. 用户在对话中对「办公写操作」得到的回复与后端权威状态一致(无假成功)。
|
||||
2. 高风险写一律:识别分流 → 确认卡/PendingAction → `action_executor` / intentflow Owner → 领域服务二次鉴权。
|
||||
3. 创建项目、成员、职责改派、工作流规划/激活/终止、admin 全域:**对话永久禁写**(可只读引导)。
|
||||
4. 每期验收按 [验证契约](../ops/2026-09-21-validation-contract.md) 选层级;涉及产品 Agent 的写意图须真实 PI/对话全链路,禁止 stub 冒充 PASS。
|
||||
|
||||
## 边界红线(全期有效)
|
||||
|
||||
| 禁写(UI 专属) | 对话允许 |
|
||||
|-----------------|----------|
|
||||
| `POST /projects`;成员增改删 | 只读列成员 / 引导「请在项目设置操作」 |
|
||||
| `PATCH …/duties` | 只读职责现状 |
|
||||
| `PUT workflow-plan` / `active-workflow`;activate / terminate 实例 | 只读计划、`termination-preview`、运行态查询 |
|
||||
| Admin 全域写(角色/用户/密码/publish·retire/config/maintenance/cleanup) | 无;命中 → `security.forbidden` |
|
||||
| 系统/项目设置写 | 只读 settings GET |
|
||||
|
||||
**澄清**:`workflow.switch`(改激活工作流)∈ 禁写;`workflow.run`(创建运行)∈ 可对话操作。
|
||||
|
||||
## 复用样板(全期强制)
|
||||
|
||||
参考 `feature/doc-review-lifecycle-2026-09-25` @ `09fe9723`:
|
||||
|
||||
1. `recognizer_matchers_docgov.go` — 查询语气不进写路径
|
||||
2. `card_policy.go` — 话语分类 + 角色×状态出卡
|
||||
3. `engine_docgov.go` 确认分支 — PendingAction
|
||||
4. `chat/action_executor.go` — 服务端二次鉴权后真写
|
||||
|
||||
新写意图禁止「Accepted + 成功文案」而无 GovernanceEngine / projectworkflow / taskrun 调用。
|
||||
|
||||
---
|
||||
|
||||
## P0 — 消除主链路假成功
|
||||
|
||||
### 范围
|
||||
|
||||
| 项 | Key | 动作 |
|
||||
|----|-----|------|
|
||||
| P0-1 | `document.claim` | 主链改调 docgov 真认领(对齐 intentflow U11 live);失败诚实报错 |
|
||||
| P0-2 | `document.review.submit` | 主链改调 `SubmitForReview`;角色/状态门禁 |
|
||||
| P0-3 | `document.proposal.decide` 默认分支 | 禁止假成功:缺确认则澄清卡;`confirm_*` 继续 PendingAction |
|
||||
| P0-4 | `workflow.switch` | **诚实拒绝/引导 UI**(属 C 类);去掉「确认后我会切换」却无执行的期望环;识别层可映射 `unsupported` |
|
||||
| P0-5 | `workflow.run` | 确认卡 + `CreateWorkflowRun`(对齐 U12);能力校验失败诚实拒绝 |
|
||||
|
||||
不在 P0:intentflow dry-run 键(→P1);查询硬编码(→P2);新意图(→P3)。
|
||||
|
||||
### 涉及文件(预期)
|
||||
|
||||
- `internal/coordinator/engine_docgov.go`(claim / submit / proposal decide)
|
||||
- `internal/coordinator/engine_workflow.go`(switch / trigger)
|
||||
- `internal/chat/action_executor.go`(若需新 PendingAction Kind)
|
||||
- `internal/intent/recognizer_matchers_*.go` / `card_policy.go`(出卡与分流)
|
||||
- 相关 `*_test.go`;必要时 Web `cardActionPolicy.ts` 对称
|
||||
|
||||
### 验收标准
|
||||
|
||||
- [ ] 五处路径:**无**「已成功」且领域状态未变的用例;失败返回明确 RejectReason
|
||||
- [ ] claim/submit/run:真实环境对话两步确认后,HTTP GET / DB 可见状态变化
|
||||
- [ ] switch:用户说「切换工作流」→ 明确引导 UI,**不**产生假 Pending 成功
|
||||
- [ ] 回归:已有 approve/reject/final 确认卡路径不变坏
|
||||
- [ ] 按验证契约跑适用套件;产品写路径用真实对话链路,报告入 `.doc/test-reports/`
|
||||
|
||||
### 交付终点
|
||||
|
||||
独立 feature 任务合入 local `dev`;本计划行标记 P0 `done`(实施任务更新,非本文自报)。
|
||||
|
||||
---
|
||||
|
||||
## P1 — intentflow dry-run 键 live 化
|
||||
|
||||
### 范围
|
||||
|
||||
将 `expansion.go` 中仍 dry-run 的键接到真实 Owner(与主链 PendingAction 语义对齐):
|
||||
|
||||
**DocGov 5**:`document.review.approve` / `reject` / `final.approve` / `final.reject` / `document.proposal.decide`
|
||||
|
||||
**Run-control**:
|
||||
|
||||
- `run.restart` → live(taskrun.restart + 确认)
|
||||
- `workflow.switch` → **不** live 写 active-workflow;改为 Authorize 硬拒绝或路由 unsupported(与 P0-4 一致)
|
||||
|
||||
### 涉及文件(预期)
|
||||
|
||||
- `internal/app/intentflow/expansion.go`(Live 集合 / OwnerMux)
|
||||
- `internal/app/intentflow/docgov_owner.go`、`run_control_owner.go`
|
||||
- `internal/sysadmin/features.go`(U11/U12 flag 说明若需更新)
|
||||
- `expansion_test.go` 等
|
||||
|
||||
### 验收标准
|
||||
|
||||
- [ ] 上述 5 个 docgov 键在 flag 开启时产生真实 receipt(非 `validated_only`)
|
||||
- [ ] `run.restart` live;`workflow.switch` 拒绝写且有稳定错误码
|
||||
- [ ] 计划执行与单意图主链对同一文档/运行:**最终状态一致**
|
||||
- [ ] project 143 等既有 fail-closed 行为保留
|
||||
|
||||
---
|
||||
|
||||
## P2 — 查询意图接真实数据源
|
||||
|
||||
### 范围
|
||||
|
||||
| 查询 | 现状 | 目标 |
|
||||
|------|------|------|
|
||||
| `case.query` | 硬编码案例 | `ctxmgr.SearchSimilarCases` / KB;无数据诚实「暂无相似案例」 |
|
||||
| `document.reject_reason.query` | 黑板 + default 文案 | 优先 `docgov` audit-logs / 文档状态上的驳回字段 |
|
||||
| `document.status.query` | lifecycle 空模板 | 读 docgov document API / 摘要服务 |
|
||||
| `run.status.query` / `workflow.status.query` | 上下文碎片 | 对齐 runs/instances GET 权威字段 |
|
||||
| `project.advisory` 硬编码段落 | 默认项目名长模板 | 无简报时短诚实回复,禁止伪造项目事实 |
|
||||
|
||||
### 涉及文件(预期)
|
||||
|
||||
- `internal/coordinator/engine_query.go`
|
||||
- `internal/coordinator/engine_workflow.go` / `engine_run.go`
|
||||
- `internal/coordinator/card_policy.go`(`defaultRejectReasonText` 降级策略)
|
||||
- 可选:薄封装读 repository,避免 coordinator 直接 SQL
|
||||
|
||||
### 验收标准
|
||||
|
||||
- [ ] 无数据/无权限时:**不**返回伪造项目号或伪造驳回理由
|
||||
- [ ] 有数据时:与对应 GET API 字段一致(抽样对照)
|
||||
- [ ] 单元测试覆盖空数据 / 有数据 / 权限不足
|
||||
|
||||
---
|
||||
|
||||
## P3 — 新写意图扩展(两步确认)
|
||||
|
||||
每项均需:新或扩展 ActionKey(若必要)→ 识别 matcher → 确认卡 → PendingAction/Owner → 服务端校验。优先复用已有 HTTP handler 背后的领域服务,**对话不二次裸调 HTTP**。
|
||||
|
||||
| 优先级 | 能力 | HTTP 锚点 | 备注 |
|
||||
|--------|------|-----------|------|
|
||||
| P3-1 | Trace 边裁决 / reopen / recheck clear | `…/trace/…/decision` · `reopen` · `recheck/…/clear` | 高价值办公闭环 |
|
||||
| P3-2 | 补充批次确认 | `…/supplement-impacts/{id}/decision` | 已有补充意图,补确认写 |
|
||||
| P3-3 | 意图计划裁决(对话侧补齐提示) | `…/intent-plans/{id}/decisions` | 已有双通道,强化可发现性 |
|
||||
| P3-4 | 批注查询 + 有限写(添加/解决) | `docgov/comments` | 生命周期 worktree 已有部分;扩展查询与误触防护 |
|
||||
| P3-5 | 审计查询(只读意图) | `docgov/audit-logs` | 属查询增强,可与 P2 并行切片 |
|
||||
| P3-6 | 资产重解析 | `…/assets/{id}/reparse` | 确认后调用 |
|
||||
| P3-7 | 通知已读/处理 | `PATCH …/notifications/{id}` | 低风险 |
|
||||
| P3-8 | 自由文档沉淀(from-message) | `freeform-documents/from-message` 等 | **不含**项目创建;分享策略需产品确认 |
|
||||
|
||||
**明确不做(P3 也不做)**:成员/职责/项目创建/工作流规划发布/admin。
|
||||
|
||||
### 涉及文件(预期)
|
||||
|
||||
- `internal/intent/registry.go` + matchers
|
||||
- `internal/coordinator/engine_*.go`(新建 `engine_trace.go` 等按模块)
|
||||
- `internal/chat/action_executor.go`
|
||||
- `internal/app/intentflow/*`(若进计划执行面)
|
||||
- Web 确认卡策略对称文件
|
||||
|
||||
### 验收标准
|
||||
|
||||
- [ ] 每能力:误触防护用例(查询语气不写、无权限无危险按钮、确认前无副作用)
|
||||
- [ ] 真执行后权威状态可观测
|
||||
- [ ] 红线回归:说「创建项目/加成员/改设置」仍 forbidden/unsupported
|
||||
- [ ] 真实 Agent 对话全链路报告
|
||||
|
||||
---
|
||||
|
||||
## 分期总表
|
||||
|
||||
| 期 | 主题 | 依赖 | 建议 mutex / feature |
|
||||
|----|------|------|----------------------|
|
||||
| P0 | 主链假成功 → 真执行/诚实拒绝 | 无 | `dialogue-office-p0` / 避开他人 `docgov` 硬 claim 或合并持有者 |
|
||||
| P1 | intentflow 5+1 live(switch 拒绝) | P0 语义对齐更佳 | `dialogue-office-p1` |
|
||||
| P2 | 查询真数据 | 可与 P1 并行(不同文件) | `dialogue-office-p2` |
|
||||
| P3 | 新写意图 | P0 样板稳定后 | 按切片拆 task |
|
||||
|
||||
## 验收总则
|
||||
|
||||
- 纯文档期(本任务):链接、taxonomy、git 差异;**NOT REQUIRED** 产品 PI。
|
||||
- 实施期:按验证契约矩阵选「对话写意图 / intentflow / 查询」行;报告 `.doc/test-reports/YYYY-MM-DD-dialogue-office-pN-…-test-report.md`。
|
||||
- 禁止用 dry-run receipt、SKIP、stub 作为交付 PASS。
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Audit:[2026-09-25-dialogue-office-capability-research.md](../audit/2026-09-25-dialogue-office-capability-research.md)
|
||||
- 样板任务:doc-review-lifecycle(批注/重开/积压/送审)
|
||||
- 验证契约:[2026-09-21-validation-contract.md](../ops/2026-09-21-validation-contract.md)
|
||||
- gap-matrix:本轮**不**新增发布 blocker(能力增强,非生产阻断);若实施中发现安全假成功升级为 blocker,再另案更新
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
| 文档 | 说明 |
|
||||
|------|------|
|
||||
| [2026-09-25-dialogue-office-expansion-plan.md](./2026-09-25-dialogue-office-expansion-plan.md) | 对话办公能力扩展 P0–P3:消除主链假成功、intentflow dry-run live、查询真数据源、新写意图(trace/补充确认/批注/资产等);治理结构 UI 专属。配套 [调研](../audit/2026-09-25-dialogue-office-capability-research.md)。planned,不实施代码 |
|
||||
| [2026-09-23-coordination-db-daemon-implementation-undertaking-plan.md](./2026-09-23-coordination-db-daemon-implementation-undertaking-plan.md) | 协调库与 daemon **实施承接计划**(工作包预填):W1–W3 七包(U1r/U2/U3/U7/U4/U5/U6)含符号级锚点、真实并发验收、mutex、开工准入;L2 仅 ADR 前置门。配套 [设计方案](./2026-09-23-coordination-db-daemon-plan.md) · [任务](../ops/short-term/2026-09-23-coordination-db-daemon-impl-plan.md)。planned,不实施代码 |
|
||||
| [2026-09-23-coordination-db-daemon-plan.md](./2026-09-23-coordination-db-daemon-plan.md) | 协调库与 daemon 分阶段方案:L1 单宿主机(复用 `.locks/state.sqlite` + claim/常驻入口/文档状态化);L2 跨机 PostgreSQL 仅 planned(需 ADR)。配套 [研究](../ops/research/2026-09-23-coordination-db-daemon-research.md) · [任务](../ops/short-term/2026-09-23-coordination-db-daemon.md)。U1 queue 子解析器已合入 `63e66c6f`;本文件 planned,不实施 daemon |
|
||||
| [2026-09-21-agent-lock-coordination-plan.md](./2026-09-21-agent-lock-coordination-plan.md) | Agent `.locks`、共享文档与并行工作流补充方案:本机 SQLite + 会话/租约/CAS;L1a–L1d 设计。配套 [研究](../ops/research/2026-09-21-agent-lock-coordination-research.md)。planned;跨机锁服务本期不采用 |
|
||||
|
||||
Reference in New Issue
Block a user