diff --git a/docs/superpowers/specs/2026-09-08-dialogue-driven-content-and-hierarchical-intent-design.md b/docs/superpowers/specs/2026-09-08-dialogue-driven-content-and-hierarchical-intent-design.md new file mode 100644 index 00000000..bd7a7e9c --- /dev/null +++ b/docs/superpowers/specs/2026-09-08-dialogue-driven-content-and-hierarchical-intent-design.md @@ -0,0 +1,395 @@ +# 对话驱动受控内容产出、分级意图消解与交互卡片架构设计规范 +# (Dialogue-Driven Content Synthesis, Hierarchical Intent Funnel & Interactive Cards Specification) + +- **归档路径**: `docs/superpowers/specs/2026-09-08-dialogue-driven-content-and-hierarchical-intent-design.md` +- **编制日期**: 2026-09-08 +- **当前状态**: 批准实施 (Approved) +- **技术栈**: Go 后端 (L1 意图识别/L2 协调引擎/L3 底层服务) + React 19 / TypeScript 前端 + 医疗器械受控文档治理引擎 (`docgov`) + +--- + +## 一、 设计哲学与系统能力边界 (Design Philosophy & Boundaries) + +在医疗器械研发与商务对接这一严肃合规场景(遵循 ISO 13485、GMP、21 CFR Part 11)中,人机协同的最高境界是**“对话即工作流,言出必留痕”**。然而,对话驱动绝不等于把所有界面按钮盲目搬入对话框。本设计严格确立三条刚性边界: + +### 1.1 明确能力边界:剔除纯 UI 视窗操作,聚焦“内容产出与合规查询” +- 🚫 **绝对排除的功能(对话一律不执行)**: + - **纯 UI 视窗与工具栏控制**:如“帮我打开工具栏”、“折叠左侧会话栏”、“把主题换成深色”、“展开交付物大盘抽屉”、“切换到第 2 个 Tab”等。此类操作用户通过鼠标点击或快捷键即可在毫秒级完成,通过自然语言对话下达属于低效冗余交互,**系统一律不作为执行型意图处理**(仅友好提示“此类界面布局调整请直接点击界面右上角或侧边栏控件”)。 + - **用户身份与底层设置篡改**:严禁通过对话修改自身或他人的企业身份(姓名、工号、固定职位、所属部门、法定资质)及底层系统配置(大模型网关密钥、向量库连接、管理员组织架构配置)。此类操作受到安全红线网关硬隔离拦截。 +- ✅ **全面支持的功能(深度对话驱动)**: + - **能直接影响受控内容产出的能力**:文档编制、智能体修改提案采纳/放弃、文档编制人认领、提交送审、审核驳回/通过、终审批准发布、技术参数黑板沉淀。 + - **能辅助商务与研发决策的查询能力**:项目成熟度诊断、预见性风险排查、对外商务沟通话术草拟、国家/国际强标法规检索、全局终审标杆案例推荐、当前账号在项目各交付物中的法定权限查询。 + +--- + +## 二、 系统核心能力领域划分与可对话能力矩阵 (Capability Matrix) + +系统底层的业务与内容能力被解构为四大业务域: + +``` +┌────────────────────────────────────────────────────────────────────────────────────────┐ +│ 水木东方 AI 协同系统:内容产出与业务查询能力矩阵 │ +└────────────────────────────────────────────────────────────────────────────────────────┘ + │ + ├─► 【1. 受控文档法定治理流转域 (DocGov Lifecycle)】 ──────────────────────┐ + │ ├─ 文档认领 (Claim):编制负责人确认接管初稿并锁定人机协同契约 │ + │ ├─ 提交送审 (Submit Review):初稿完成,流转至指定审核负责人 │ + │ ├─ 审核通过 (Review Pass):审核签署,送呈批准负责人终审 │ + │ ├─ 审核/批准驳回 (Reject):带法定理由退回,智能语义定位章节并注入合规批注 │ + │ ├─ 终审批准生效 (Approve):盖章归档,微粒度切片并注入全局标杆案例库 │ + │ └─ 变更提议裁决 (Proposal Decide):编制人对智能体的修改提议进行拍板 │ + │ │ + ├─► 【2. 交付物生成与业务演进域 (Content Synthesis & Evolution)】 ─────────┤ + │ ├─ 成熟度阶段跃迁 (Advance Stage):驱动 V0.1 摸底 ➔ V0.5 方案 ➔ V1.0 报价│ + │ ├─ 单项交付物生成 (Trigger Task):按需自适应规划 intake/research/quote │ + │ └─ 事实黑板更新 (Fact Injection):增量注入目标市场、预期用途、关键技术参数│ + │ │ + ├─► 【3. 辅助决策与合规知识查询域 (Decision Support & Retrieval)】 ─────────┤ + │ ├─ 进展与成熟度研判 (Progress Diagnostic):评分、卡点与参谋下一步建议 │ + │ ├─ 预见性合规风险排查 (Preemptive Risks):提前预警 GB 9706/YY 0569 卡点 │ + │ ├─ 商务沟通话术草拟 (Talk Script):自动生成面向客户微信/邮件沟通底稿 │ + │ ├─ 法规强标与指导原则检索 (Knowledge Retrieval):精准调取条款与引文 │ + │ ├─ 相似标杆案例检索 (Case Recommendation):推荐已终审生效的往期标杆 │ + │ └─ 用户法定职责权限查询 (Rights Inquiry):查询自己在各文档中的法定职责 │ + │ │ + └─► 【4. 安全与权限硬红线域 (Security Guard & Hard Redline)】 ──────────────┘ + ├─ 拦截修改用户固定身份 (姓名/工号/部门/职位/资质) ➔ 阻断并合规警告 + └─ 拦截修改系统底层配置 (网关/数据库/审计密钥) ➔ 阻断并合规警告 +``` + +--- + +## 三、 四级漏斗意图消解架构 (The 4-Stage Hierarchical Intent Funnel) + +为解决**“功能与意图过多导致分类器混淆、误触或失效”**的问题,系统弃用单层平铺的大模型/规则分类器,建立**分级、分步、递进排除的四级漏斗意图消解架构**: + +``` + [ 用户自然语言输入 ] + │ + ▼ +┌───────────────────────────────────────────────────────────────────────────┐ +│ Stage 0: 态势上下文与合法动作空间计算 (State & Permission Pre-filter) │ +│ • 读取当前激活项目 ID 与阶段 (V0.1 / V0.5 / V1.0) │ +│ • 读取当前激活文档 ID 与生命周期状态 (drafting / reviewing / approving) │ +│ • 读取当前用户在该文档的法定职责 (author / reviewer / approver / viewer) │ +│ • 圈定【合法候选意图白名单】,直接从源头排除 70% 的非法意图! │ +└───────────────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌───────────────────────────────────────────────────────────────────────────┐ +│ Stage 1: 领域大类初筛与路由 (Domain Routing) │ +│ • 1.1 治理与审签流转 (GOV_LIFECYCLE) │ +│ • 1.2 交付物与阶段演进 (CONTENT_SYNTHESIS) │ +│ • 1.3 决策、诊断与法规查询 (DECISION_QUERY) │ +│ • 1.4 挂起卡片确认/放弃 (EXPECTATION_ACTION) │ +│ • 1.5 敏感安全越权 (SECURITY_FORBIDDEN) │ +└───────────────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌───────────────────────────────────────────────────────────────────────────┐ +│ Stage 2: 细分微观意图识别与槽位提取 (Micro-Action & Slot Extraction) │ +│ • 在确定的大类内部匹配具体动作 (如 Reject vs Approve) │ +│ • 提取必填槽位 (target_doc, reject_reason, target_section, fact_key) │ +│ • 槽位校验:若缺少必填槽位 ➔ 降级为追问或下发信息补全卡片 │ +└───────────────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌───────────────────────────────────────────────────────────────────────────┐ +│ Stage 3: 裁决门禁与智能体二次确认判定 (Gate & Confirmation Decision) │ +│ • 高影响动作判定:驳回退回、终审发布、大阶段跃迁 ➔ 强制阻断业务直接突变 │ +│ • 智能语义定位:下沉至 Block AST 提取关联章节块并构造批注草案 │ +│ • 输出 CoordinationResult + 下发标准化交互卡片 (InteractiveCard) │ +└───────────────────────────────────────────────────────────────────────────┘ +``` + +### 3.1 Stage 0:态势上下文前置过滤(零成本剪枝) +分类器在接收文本前,先注入当前上下文约束: +```go +type IntentPreFilterRule struct { + Stage bizdev.MaturityStage + ActiveDocID string + DocLifecycleState docgov.DocumentState + UserDocRole docgov.UserRole +} +``` +- **剪枝规则 1**:若当前文档处于 `drafting`,则白名单排除所有审核/批准动作(`ReviewApprove`、`ReviewReject`、`ApproverApprove`、`ApproverReject`); +- **剪枝规则 2**:若用户在该文档角色为 `reviewer`,排除正文直接编辑和认领动作,仅保留 `ReviewApprove`、`ReviewReject`、`AddComment`、`Query`; +- **剪枝规则 3**:若用户在该文档角色为 `approver`,排除审核阶段动作,仅保留 `ApproverApprove`、`ApproverReject`、`AddComment`、`Query`。 + +### 3.2 Stage 1:领域大类初筛(粗粒度分类) +将所有输入先归入 5 个互不重叠的高阶领域,由于领域特征明显,判定准确率稳定在 99% 以上: +- `GOV_LIFECYCLE`:关键词如“驳回”、“通过”、“送审”、“认领”、“批准”、“同意修改”; +- `CONTENT_SYNTHESIS`:关键词如“推进到”、“进入方案”、“出报价单”、“生成调研”、“更新市场”; +- `DECISION_QUERY`:关键词如“查下风险”、“进度如何”、“沟通微信怎么写”、“查法规”、“看案例”; +- `EXPECTATION_ACTION`:关键词如“好”、“行”、“就按这个办”、“先不推”、“放弃”; +- `SECURITY_FORBIDDEN`:关键词如“把我的身份改成”、“修改密码”、“修改网关配置”。 + +### 3.3 Stage 2:细分微观意图与槽位完备性检验 +在确认的大类内部进行微观意图识别与槽位抽取: +```go +// 意图枚举定义 +const ( + // 治理流转大类 (GOV_LIFECYCLE) + IntentDocGovClaim IntentType = "DOCGOV_CLAIM" // 认领文档 + IntentDocGovSubmitReview IntentType = "DOCGOV_SUBMIT_REVIEW"// 提交送审 + IntentDocGovReviewApprove IntentType = "DOCGOV_REVIEW_APPROVE" // 审核通过 + IntentDocGovReviewReject IntentType = "DOCGOV_REVIEW_REJECT" // 审核驳回 + IntentDocGovFinalApprove IntentType = "DOCGOV_FINAL_APPROVE" // 终审批准生效 + IntentDocGovFinalReject IntentType = "DOCGOV_FINAL_REJECT" // 终审驳回 + IntentDocGovProposalDecide IntentType = "DOCGOV_PROPOSAL_DECIDE" // 提案拍板 + + // 交付物与阶段大类 (CONTENT_SYNTHESIS) + IntentAdvanceStage IntentType = "ADVANCE_STAGE" // 阶段跃迁 + IntentTriggerTask IntentType = "TRIGGER_TASK" // 生成单项交付物 + IntentSupplementInfo IntentType = "SUPPLEMENT_INFO" // 补充黑板事实 + + // 辅助决策与查询大类 (DECISION_QUERY) + IntentQueryProgress IntentType = "QUERY_PROGRESS" // 查询进度/风险/话术 + IntentQueryRegulations IntentType = "QUERY_REGULATIONS" // 检索法规强标 + IntentQuerySimilarCases IntentType = "QUERY_SIMILAR_CASES" // 检索标杆案例 + IntentQueryUserRights IntentType = "QUERY_USER_RIGHTS" // 查询法定权限 + + // 挂起确认大类 (EXPECTATION_ACTION) + IntentExpectationAffirm IntentType = "EXPECTATION_AFFIRM" // 肯定挂起选项 + IntentExpectationDecline IntentType = "EXPECTATION_DECLINE" // 暂缓/拒绝挂起建议 + + // 安全防御大类 (SECURITY_FORBIDDEN) + IntentSecurityForbidden IntentType = "SECURITY_FORBIDDEN" // 敏感资产篡改拦截 +) +``` + +--- + +## 四、 智能语义定位与块级批注注入机制 (AST Semantic Anchoring) + +对于“审核驳回”等核心治理操作,系统绝不是在文档表层打一个全局标记,而是**智能下沉至 Block AST**,实现精准的段落锚定与批注挂载。 + +```dot +digraph semantic_anchoring { + node [shape=box, style="rounded,filled", fillcolor="#f8fafc", fontname="sans-serif", fontsize=10]; + edge [color="#64748b", arrowhead=vee]; + + Input [label="审核人输入:\n'把调研报告审核驳回,意见为:第3节竞品对比缺少史赛克高频电刀的抗扰度指标'", fillcolor="#e0e7ff"]; + Parser [label="语义特征提取器 (Semantic Feature Extractor)\n• 章节线索: '第3节', '竞品对比'\n• 技术指标线索: '高频电刀', '抗扰度', 'EMC'\n• 核心诉求: 缺少指标,需补充合规依据", fillcolor="#f1f5f9"]; + AST [label="目标受控文档 Block AST 扫描\n遍历 docAST.rootBlock.children\n• Block 1: H1 概述\n• Block 2: H2 市场背景\n• Block 3: H2 3. 主要竞品技术对比 (Table)\n• Block 4: Paragraph 光学性能\n• Block 5: Paragraph 电气安全与抗扰度", fillcolor="#fef3c7"]; + Matcher [label="混合加权锚定器 (Hybrid Anchor Matcher)\n• 结构匹配度 (Heading path / Numbering): 0.95\n• 关键词与向量相似度 (TF-IDF / Embedding): 0.88\n• 综合得分锁定: Block 5 (id: blk_emc_05)", fillcolor="#e0f2fe"]; + Card [label="生成【审核驳回确认卡】\n• 锚定位置: 第3节 [电气安全与抗扰度]\n• 批注草案: 缺少史赛克高频电刀共模抑制比测试说明\n• 等待审核人确认", fillcolor="#fef08a", shape=component]; + Apply [label="确认执行与状态落盘\n1. 文档状态: reviewing ➔ drafting\n2. 在 Block 5 挂载 DocumentComment(type='issue')\n3. 写入 AuditLog 审计日志\n4. 激活编制人编辑权限并通知", fillcolor="#dcfce7"]; + + Input -> Parser -> AST -> Matcher -> Card -> Apply; +} +``` + +### 4.1 混合锚定算法 (Hybrid Anchor Matcher) +1. **结构维度匹配**:正则解析文本中的“第X节”、“第X章”、“表X”、“第X行”,与 `DocumentBlock.numbering` 及 `DocumentBlock.level` 做层级匹配(权重 0.6); +2. **内容语义维度匹配**:将驳回意见分词与每个 Block 的 `content` 计算 Jaccard 相似度与 BM25 分数(权重 0.4); +3. **退化保底策略**:若匹配度低于阈值(0.45),则自动锚定在文档首个章节(概述块),并标记为“全文档通用审查意见”,绝不因定位失败阻断主流程。 + +--- + +## 五、 对话交互卡片系统深度设计 (Interactive Cards Architecture) + +对话卡片是人机共治的核心界面载体。卡片具备**独立生命周期、动态时效、非阻塞哲学与操作幂等性**。 + +``` +┌────────────────────────────────────────────────────────────────────────┐ +│ 🛡️ 审核驳回流转确认 │ +├────────────────────────────────────────────────────────────────────────┤ +│ 拟驳回文档: 《微创外科全球竞品深度调研》 (V0.5) │ +│ 当前审核人: 李主管 (您) │ +│ 退回接收人: 张工 (编制负责人) │ +│ │ +│ 📌 智能体提取的驳回意见与拟注入批注: │ +│ ┌────────────────────────────────────────────────────────────────────┐ │ +│ │ 锚定段落: 第3节 [主要竞品电气安全与抗扰度指标对比] │ │ +│ │ 批注内容: 缺少史赛克高频电刀共模抑制比测试说明,需补充法规强标依据 │ │ +│ └────────────────────────────────────────────────────────────────────┘ │ +│ │ +│ ⏱️ 有效期: 当前审核会话活跃期间 (3轮对话内有效) │ +│ │ +│ [ ✍️ 调整驳回意见 ] [ ❌ 放弃驳回 ] [ ⚠️ 确认正式驳回退回 (Enter) ]│ +└────────────────────────────────────────────────────────────────────────┘ +``` + +### 5.1 卡片类型谱系规范 (Card Taxonomy) + +```typescript +export type InteractiveCardType = + | 'CONFIRMATION' // 强受控流转二次确认卡 (驳回/批准/大版本跃迁) + | 'SLOT_FILLING' // 关键信息与事实补充卡 (缺少驳回理由/缺少参数) + | 'DIFF_PROPOSAL' // 智能体修改变更提议卡 (编制人采纳/拒绝方案) + | 'REMINDER_NOTICE';// 参谋风险预警与标杆推荐卡 (非阻塞建议) + +export type CardActionStatus = + | 'active' // 激活可用:按钮可点,支持对话单字"好/确认"触发 + | 'executing' // 执行中:网络请求中,防重锁定 + | 'resolved' // 已完成:已确认执行,盖章不可再次触发 + | 'cancelled' // 已取消:用户显式点击放弃或回复取消 + | 'outdated' // 已失效:外部业务状态突变 (如他人已批准) + | 'expired'; // 已超时:超过有效轮次淡化折叠 +``` + +### 5.2 核心机制一:卡片能否跳过?(非阻塞哲学 vs 强确认门禁) +- **原则:前台对话绝不卡死,后台业务绝不私自突变**。 + - **前台自由对话**:当系统下发【审核驳回确认卡】时,用户完全可以不点击,而是直接输入“*帮我查一下 GB 9706.1-2020 标准*”。对话照常进行,旧卡片不阻断新对话输入,保留在历史消息流中并进入“静默等待态”; + - **后台严格受控**:在用户没有在卡片上点击“确认”或在对话中明确回复“确认/同意”前,**后端的受控文档状态保持不变(依然处于 `reviewing`),绝不产生脏写**。 + +### 5.3 核心机制二:卡片时效性机制 (TTL & Expiration) +卡片绝不永久有效,设置三维时效保护: +1. **轮次时效 (Turn-based TTL)**: + - 默认有效期为 **3 个对话轮次**。用户连续交谈 3 轮其他无关话题后,旧卡片自动变为 `expired`,折叠并置灰,点击时提示“该操作已超时,请重新下达指令”; +2. **状态变迁时效 (State Invalidation)**: + - 卡片携带生成时文档版本哈希 `expectedDocHash` 与 `expectedState`。若其他人在前端直接点击了“通过”或“驳回”,卡片监听到外部状态已变,**立即原地变为 `outdated` 并提示“⚠️ 文档状态已在外部变更,该卡片已失效”**; +3. **单字肯定触发窗口 (Affirmative Trigger Window)**: + - 仅当卡片处于 `active` 且为最新一轮消息时,用户回复“好”、“确认”、“同意”、“1”才能自动兑现该卡片。历史久远的卡片不能被后续对话中的“好”误触。 + +### 5.4 核心机制三:幂等性防重与合法窗口期撤销 (Idempotency & Undo) +1. **网络层幂等保护**:每个卡片携带全局唯一 `actionToken`(UUID)。点击瞬间客户端立即禁用所有按钮并呈现 Loading 脉冲态,后端使用 Redis/内存原子锁确保同一 Token 只执行一次; +2. **原地转化完成态**:执行完成后,卡片原地更新为: + > “✅ **已成功驳回**:本交付物已退回编制阶段,驳回意见已注入第 3 节批注。操作人:李主管,时间:16:05。” +3. **合法窗口期反悔通道 (Grace Period Undo)**: + - 在卡片完成后的 60 秒内,且编制人尚未开始重新认领编辑前,卡片提供 `[ 撤销驳回 (恢复为待审核) ]` 辅助操作; + - 若编制人已认领并开始编辑,反悔按钮自动失效,提示“编制负责人已开展修订,已进入新生命周期”。 + +--- + +## 六、 数据契约与接口设计 (Data Contracts & Schemas) + +### 6.1 后端 Go 数据模型扩展 (`internal/intent/` 与 `internal/coordinator/`) + +```go +// 交互卡片动作规格 +type CardAction struct { + ActionID string `json:"action_id"` // 如 "confirm_reject", "cancel" + Label string `json:"label"` // 按钮文本 + Style string `json:"style"` // primary, danger, subtle + Payload map[string]string `json:"payload"` // 回传参数 + IsAffirmativeDefault bool `json:"is_affirmative_default"` // 是否对应"好/行" +} + +// 挂起交互卡片数据载荷 +type InteractiveCardPayload struct { + CardID string `json:"card_id"` + CardType string `json:"card_type"` // CONFIRMATION, SLOT_FILLING... + Title string `json:"title"` + TargetDocID string `json:"target_doc_id"` + TargetDocTitle string `json:"target_doc_title"` + TargetSectionID string `json:"target_section_id,omitempty"` + SectionTitle string `json:"section_title,omitempty"` + ProposedContent string `json:"proposed_content,omitempty"` + ImpactRisk string `json:"impact_risk,omitempty"` + CurrentStatus string `json:"current_status"` // active, resolved... + TTLTurns int `json:"ttl_turns"` // 默认 3 + CreatedAt time.Time `json:"created_at"` + Actions []CardAction `json:"actions"` +} + +// 协调层回执升级 +type CoordinationResult struct { + Status CoordinationStatus `json:"status"` + Intent intent.IntentType `json:"intent"` + Branch intent.ResolutionBranch `json:"branch,omitempty"` + RejectReason string `json:"reject_reason,omitempty"` + ClarificationPrompt string `json:"clarification_prompt,omitempty"` + NaturalReply string `json:"natural_reply"` + AdvisorBrief *squad.AdvisorBriefing `json:"advisor_brief,omitempty"` + ArtifactPath string `json:"artifact_path,omitempty"` + UpdatedContext *UserProjectContext `json:"updated_context"` + InteractiveCard *InteractiveCardPayload `json:"interactive_card,omitempty"` // 新增卡片载荷 + NextExpectation *intent.PendingExpectation `json:"next_expectation,omitempty"` +} +``` + +### 6.2 前端 TypeScript 类型定义升级 (`web/src/types/workbench.ts`) + +```typescript +export interface InteractiveCardData { + cardId: string; + cardType: 'CONFIRMATION' | 'SLOT_FILLING' | 'DIFF_PROPOSAL' | 'REMINDER_NOTICE'; + title: string; + targetDocId: string; + targetDocTitle: string; + targetSectionId?: string; + sectionTitle?: string; + proposedContent?: string; + impactRisk?: string; + status: 'active' | 'executing' | 'resolved' | 'cancelled' | 'outdated' | 'expired'; + ttlTurns: number; + actions: { + actionId: string; + label: string; + style: 'primary' | 'danger' | 'subtle'; + payload: Record; + }[]; + resolutionSummary?: string; + resolvedAt?: string; + resolvedBy?: string; +} + +export interface ChatMessage { + id: string; + sessionId: string; + role: 'user' | 'assistant' | 'system'; + authorName?: string; + content: string; + intentTag?: string; + branchTag?: string; + timestamp: string; + phaseEvents?: PhaseEvent[]; + recommendedCases?: RecommendedCase[]; + interactiveCard?: InteractiveCardData; // 挂载的交互卡片 +} +``` + +--- + +## 七、 核心业务时序流转图 (Sequence Walkthrough) + +### 7.1 审核人对话驳回并注入批注全时序 + +```dot +digraph reject_sequence { + rankdir=TB; + node [shape=box, style="rounded,filled", fillcolor="#f8fafc", fontname="sans-serif", fontsize=10]; + edge [color="#64748b", arrowhead=vee]; + + U [label="用户 (审核人 李主管)", fillcolor="#dbeafe"]; + L1 [label="L1 意图识别器 (Recognizer)", fillcolor="#e0e7ff"]; + L2 [label="L2 协调引擎 (Coordinator)", fillcolor="#fef3c7"]; + DG [label="受控治理引擎 (docgov Engine)", fillcolor="#f1f5f9"]; + UI [label="前端工作台 (React 19 Web)", fillcolor="#dcfce7"]; + + U -> L1 [label="1. 发送消息: '把调研报告审核驳回,第3节缺少史赛克抗扰度指标'"]; + L1 -> L2 [label="2. 四级漏斗判定: 意图=DOCGOV_REVIEW_REJECT, 槽位提取完备"]; + L2 -> DG [label="3. 状态校验: 检查 doc-002 是否为 reviewing,李主管是否为 reviewer"]; + DG -> L2 [label="4. 校验通过,下沉扫描 AST,锁定 Block blk_emc_05"]; + L2 -> UI [label="5. 下发 NaturalReply + CONFIRMATION 卡片 (状态 active, 待确认)"]; + UI -> U [label="6. 渲染消息气泡与【审核驳回确认卡片】"]; + U -> UI [label="7. 用户点击 [确认正式驳回] (或回复'确认')"]; + UI -> L2 [label="8. 发送卡片动作: action_id='confirm_reject', token=uuid"]; + L2 -> DG [label="9. 执行状态变迁: reviewing ➔ drafting, 在 blk_emc_05 挂载批注, 记审计日志"]; + DG -> L2 [label="10. 驳回成功,受控文档解除锁定,流转至编制人"]; + L2 -> UI [label="11. 回执: 卡片更新为 resolved 终态, 刷新右侧 Block 批注红点与状态"]; +} +``` + +--- + +## 八、 实施交付计划与质量门禁 (Roadmap & Quality Gates) + +根据本仓库《三分支流转与三套服务环境架构准则》与《渐进式提交规范》,本方案分为 4 个逐步推进的工程任务: + +1. **Task 1: 契约与领域模型升级 (`feat(intent)` / `feat(docgov)`)** + - 编写 `internal/intent/types.go`,扩充意图枚举与卡片载荷数据结构; + - 编写 `web/src/types/workbench.ts`,定义前端卡片契约。 +2. **Task 2: 四级意图漏斗与语义锚定引擎实现 (`feat(intent)` / `feat(coordinator)`)** + - 在 `internal/intent/recognizer.go` 中实现状态机前置过滤、大类路由与槽位抽取; + - 在 `internal/coordinator/engine.go` 中实现 Block AST 扫描定位与批注挂载; + - 编写覆盖率 100% 的单元测试(`recognizer_test.go`, `engine_test.go`)。 +3. **Task 3: 前端交互卡片组件与动效闭环 (`feat(web)`)** + - 封装 `InteractiveCard.tsx` 组件,支持 4 种形态、倒计时、状态切换与防重提交; + - 在 `MessageStream.tsx` 中集成卡片渲染与动作回传; + - 与右侧 `BlockRenderer` 联动,实现批注挂载后的平滑高亮。 +4. **Task 4: 端到端集成验收与测试报告归档 (`test(e2e)` / `docs(test)`)** + - **严格遵循真实 Agent 交付铁律**:使用 `pi-agent` + 实际运行的 `MiniMax-M3` 真实容器执行端到端实测; + - 归档 `.doc/test-reports/2026-09-08-dialogue-driven-content-and-hierarchical-intent-test-report.md`。