#47a: 红头/标题字号颜色从 render_html 产物解析(新增 docgen/html_css.py: 内嵌 style 块 + 调用方传入的模板 css,组合选择器展开、px->pt),解析失败 回退历史常量(FF0000/22pt、h1/h2/h3 22/16/14pt,行为不变)。converter 与 导出路由把 css 传入 DOCX 转换,与 PDF/预览同源;非红头模板(如 report 灰 #333)不误渲染红头。r3 的 doc-body 包裹/表格/图片结构不回归。 #52: intent.py WRITE_VERB 补总结/概括/归纳,新增动词自指保护(唯一命中的 DOC_TYPE 等于命中动词本身时不算写文档意图,如「总结一下植物光合作用的过程」 仍 qa);cases_intent.md 同步规则与用例 31-34(共 34 条)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
77 lines
4.8 KiB
Markdown
77 lines
4.8 KiB
Markdown
# 意图路由规范(唯一事实源)——dev1(Python)/dev3(JS)/测试 agent 三方共用
|
||
|
||
## 路由签名
|
||
route(text, has_attachments, has_active_artifact) -> "qa" | "docgen" | "edit" | "export"
|
||
|
||
## 判定顺序(按优先级从上到下,命中即返回)
|
||
|
||
### 1. export(需 has_active_artifact == True)
|
||
条件:text 含任一 EXPORT_WORD 且含任一 FORMAT_WORD
|
||
- EXPORT_WORD = [导出, 转成, 转为, 转换成, 下载成, 输出为, 存为, 转pdf, 转word]
|
||
- FORMAT_WORD = [pdf, docx, doc, word](英文不区分大小写;"doc" 是 "docx" 的子串,判定时 FORMAT_WORD 逐一 contains 即可)
|
||
无活动文档时不命中本规则,继续向下判定。
|
||
|
||
### 2. edit(需 has_active_artifact == True)
|
||
条件:text 含任一 EDIT_WORD
|
||
- EDIT_WORD = [改, 修改, 调整, 删, 删除, 加一段, 补充, 润色, 缩写, 扩写, 重写, 改写, 优化, 加个, 增加一段]
|
||
无活动文档时不命中本规则,继续向下判定。
|
||
|
||
### 3. docgen(写文档意图)
|
||
条件:text 含任一 WRITE_VERB 且含任一 DOC_TYPE
|
||
- WRITE_VERB = [写, 撰写, 拟, 起草, 编制, 生成, 编写, 拟定, 草拟, 制定, 总结, 概括, 归纳](r4 #52 新增后三词)
|
||
- 动词自指保护(r4 #52 新增):规则 3 判定时,若 text 命中的 DOC_TYPE 恰好等于命中的 WRITE_VERB 本身
|
||
(如「总结一下植物光合作用的过程」——「总结」既是动词又是文档类型词),不算写文档意图,
|
||
继续向下判定。「写一篇总结」(动词=写,类型=总结)与「总结这篇论文」(动词=总结,类型=论文)
|
||
不受影响。
|
||
- DOC_TYPE = [论文, 报告, 通知, 通告, 公告, 请示, 批复, 函, 申请书, 申请, 申报书, 标书, 合同, 协议, 方案, 计划, 总结, 汇报, 讲话稿, 致辞, 证明, 纪要, 简报, 材料, 说明书, 指南, 文档, 申报材料, 工作总结, 调研报告, 可行性报告, 项目书, 策划书, 演讲稿, 新闻稿, 文案, 简历, 制度, 规定, 办法, 细则, 章程, 声明, 邀请函, 感谢信, 慰问信, 介绍信, 推荐信, 倡议书, 述职报告, 开题报告, 结题报告, 实验报告, 分析报告, 会议纪要]
|
||
- 明确排除(不属于 DOC_TYPE,防误判):介绍, 内容, 代码, 诗, 作业, 问题, 建议, 想法
|
||
|
||
### 4. docgen(附件信号)
|
||
条件:has_attachments == True 且 text 含任一 WRITE_VERB
|
||
(兜底:拖入文件 + 写类动词,即使无文档类型词也视为生成意图)
|
||
|
||
### 5. 其余一律 "qa"(漏判安全原则:不命中绝不进 docgen)
|
||
|
||
## 用例表(34 条,前后端实现与测试共用同一张表)
|
||
|
||
| # | 输入 text | 附件 | 活动文档 | 期望 |
|
||
|---|---|---|---|---|
|
||
| 1 | 给我写一篇关于小麦育种的论文 | 否 | 否 | docgen |
|
||
| 2 | 帮我写一个关于疫情防控的通知,参考xxx文档的格式 | 否 | 否 | docgen |
|
||
| 3 | 你来帮我起草一份项目总结报告 | 否 | 否 | docgen |
|
||
| 4 | 拟一份关于安全生产的通知 | 否 | 否 | docgen |
|
||
| 5 | 写一个基金申请文档,参考xxxx和xxxx资料,你来润色 | 否 | 否 | docgen |
|
||
| 6 | 根据这个文档,帮我写一篇申报材料 | 是 | 否 | docgen |
|
||
| 7 | 写一段水稻基因的介绍 | 否 | 否 | qa |
|
||
| 8 | 水稻基因是什么?介绍一下 | 否 | 否 | qa |
|
||
| 9 | 帮我总结一下这个问题的要点 | 否 | 否 | qa |
|
||
| 10 | 写一首关于秋天的诗 | 否 | 否 | qa |
|
||
| 11 | 帮我写代码实现一个排序函数 | 否 | 否 | qa |
|
||
| 12 | 这个方案你怎么看? | 否 | 否 | qa |
|
||
| 13 | 通知今天下午开会 | 否 | 否 | qa |
|
||
| 14 | 导出成PDF | 否 | 是 | export |
|
||
| 15 | 把文档转成word发给我 | 否 | 是 | export |
|
||
| 16 | 导出成PDF | 否 | 否 | qa |
|
||
| 17 | 第2段改正式一点 | 否 | 是 | edit |
|
||
| 18 | 把标题改成黑体 | 否 | 是 | edit |
|
||
| 19 | 润色一下第二段 | 否 | 是 | edit |
|
||
| 20 | 第2段改正式一点 | 否 | 否 | qa |
|
||
| 21 | 帮我写个方案,参考上次上传的材料 | 否 | 否 | docgen |
|
||
| 22 | 写一份年度工作计划 | 否 | 否 | docgen |
|
||
| 23 | 起草会议纪要 | 否 | 否 | docgen |
|
||
| 24 | 帮我生成一个市场分析报告 | 否 | 否 | docgen |
|
||
| 25 | 写一篇演讲稿,要有感染力 | 否 | 否 | docgen |
|
||
| 26 | 帮我写一份劳动合同 | 否 | 否 | docgen |
|
||
| 27 | 转成PDF | 否 | 是 | export |
|
||
| 28 | 帮我写个会议通知模板 | 否 | 是 | docgen |
|
||
| 29 | 给这个通知加个结尾 | 否 | 是 | edit |
|
||
| 30 | 增加一段关于风险的描述 | 否 | 是 | edit |
|
||
| 31 | 帮我总结论文 | 是 | 否 | docgen |
|
||
| 32 | 总结一下植物光合作用的过程 | 否 | 否 | qa |
|
||
| 33 | 概括一下这个通知 | 是 | 是 | docgen |
|
||
| 34 | 归纳这篇文章 | 是 | 否 | docgen |
|
||
|
||
## 一致性要求
|
||
- dev1 的 sdk/app/services/docgen/intent.py 与 dev3 的 ui/src/intent.js 必须按本表逐条通过
|
||
- 测试 agent 的 DC-INTENT-CASES 组直接引用本表(不得另造规则)
|