docs(spec): add specification for dialogue-driven content synthesis and hierarchical intent funnel
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
committed by
weichen
co-authored by
Cursor
parent
6ccf98e291
commit
24e577f50c
+395
@@ -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<string, string>;
|
||||
}[];
|
||||
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`。
|
||||
Reference in New Issue
Block a user