9.0 KiB
AI 写作 ·「用户自带大纲」手动测试用例
功能:用户在 AI 写作表单粘贴已有大纲后,系统完全按用户大纲生成正文,兼容一/二/三级目录。 入口页面:
http://localhost:5173/#/page/workspace/ai-writing(或2026端口经 nginx)
一、测试目标
验证三件事:
- 识别——用户粘贴的各种格式大纲,能被正确解析成 章节(##) → 小节(###) → 子要点(####) 三级结构。
- 保真——生成的大纲标题、层级与用户粘贴的完全一致,不增、不删、不改写。
- 兼容——只有一级 / 一+二级 / 一+二+三级 三种深度都能正确生成对应层级的正文。
二、前置条件
| 项 | 要求 |
|---|---|
| 服务 | 后端(Gateway 8001)+ 前端(Vite 5174/5173)均已启动,可正常发起一次普通 AI 写作 |
| 模型 | 写作模型已在表单可选、能正常输出(先用不带大纲的普通流程跑通一次作为基线) |
| 账号 | 已登录(或无鉴权模式) |
| 入口 | 进入 /page/workspace/ai-writing,能看到「写作配置选项」表单 |
三、通用操作步骤
除非用例另有说明,每条用例都按以下步骤执行:
- 进入 AI 写作页面,点开**「已有大纲(可选)」** 旁的「我已有大纲,直接粘贴 ▾」。
- 在「写作意图」填一句话(如:
写一篇关于新能源汽车出口的分析文章)。 - 把用例里的**「输入大纲」**整段粘贴进「已有大纲」输入框。
- 文章类型 / 目标字数 / 素材来源保持默认即可。
- 点击「开始 AI 写作」。
- 等待流程走到 PAUSE-2「大纲确认」,对照**「预期大纲结构」**核对左侧/卡片里的大纲。
- 点「确认」继续,等正文生成完,对照**「预期正文层级」**核对右侧草稿的标题层级。
关键校验点都在第 6 步(大纲确认卡)。正文层级(第 7 步)作为二次确认。
四、测试用例
TC-01 Markdown 三级 + 文章标题
输入大纲:
# 新能源汽车出口为何高速增长
## 引言
### 出口数据创新高
#### 同比增幅
#### 全球排名变化
### 市场背景
## 增长动因
### 成本优势
预期大纲结构:
- 文章标题 =
新能源汽车出口为何高速增长(首个孤立#被识别为标题,不作为章节) - 章节1
引言- 小节
出口数据创新高→ 子要点:同比增幅、全球排名变化 - 小节
市场背景(无子要点)
- 小节
- 章节2
增长动因- 小节
成本优势
- 小节
预期正文层级: # 文章标题 → ## 引言/增长动因 → ### 小节 → #### 同比增幅/全球排名变化,各级都有正文。
TC-02 中文编号三级(一、/(一)/ 1.)
输入大纲:
一、引言
(一)背景
(二)意义
二、现状分析
(一)市场数据
1. 国内市场
2. 海外市场
预期大纲结构:
- 章节1
引言→ 小节背景、意义 - 章节2
现状分析→ 小节市场数据→ 子要点国内市场、海外市场 - 标题留空 → 用「写作意图」兜底(卡片标题约等于意图前 30 字)
校验重点: 一、 > (一) > 1. 的层级顺序正确(符合中文公文惯例)。
TC-03 阿拉伯小数点编号(1. / 1.1 / 1.1.1)
输入大纲:
1. 引言
1.1 研究背景
1.2 研究意义
2. 现状
2.1 行业概况
预期大纲结构:
- 章节1
引言→ 小节研究背景、研究意义 - 章节2
现状→ 小节行业概况
TC-04 缩进 bullet 表示层级
输入大纲:
- 引言
- 背景
- 意义
- 现状
- 数据
- 细节展开
预期大纲结构:
- 章节1
引言→ 小节背景、意义 - 章节2
现状→ 小节数据→ 子要点细节展开
校验重点: 缩进深度正确映射成层级。
TC-05 只有一级目录(平铺 Markdown)
输入大纲:
## 引言
## 现状
## 对策
## 结论
预期大纲结构: 4 个章节 引言/现状/对策/结论,均无小节。
预期正文层级: 每个章节 ## 标题下是一整段连贯正文(不出现 ###)。
校验重点: 一级目录场景不报错、不被强行拆出多余小节。
TC-06 只有一级目录(中文编号)
输入大纲:
一、引言
二、现状
三、结论
预期大纲结构: 3 个章节 引言/现状/结论,无小节。与 TC-05 等价,验证另一种一级写法。
TC-07 纯文本平铺(无任何标记)
输入大纲:
引言
现状
对策
总结
预期大纲结构: 4 个章节 引言/现状/对策/总结(每行一个短标题 → 一级章节)。
校验重点: 无编号无缩进的短标题列表也能识别为一级大纲。
TC-08 格式混乱 / 散文化(走 LLM 兜底)
输入大纲:
我想写一篇分析今年AI大模型发展趋势的文章,重点关注国内企业的布局。
希望先讲背景,再讲现状,最后给出展望。
预期行为:
- 确定性解析判定为「散文」→ 自动走 LLM 归一兜底,整理成一份结构化大纲。
- 大纲确认卡能正常显示一份大纲(不报错、不卡死)。
- 大纲内容应贴近原意(背景 / 现状 / 展望之类),但不要求逐字一致(这一条是兜底鲁棒性,不是保真用例)。
校验重点: 流程不崩、能产出可用大纲。
TC-09 保真校验(标题原样保留)
输入大纲:
一、A股市场2024年回顾与展望
(一)宏观经济(GDP/CPI)影响
(二)流动性与利率
二、行业轮动主线
预期大纲结构: 标题文本逐字保留,仅编号被剥离:
- 章节1
A股市场2024年回顾与展望- 小节
宏观经济(GDP/CPI)影响、流动性与利率
- 小节
- 章节2
行业轮动主线
校验重点: 标题里的中文括号、英文缩写、年份等不被改写。
TC-10 大纲确认卡里再编辑 / 重新规划
前置: 先用 TC-02 的大纲跑到「大纲确认」卡。
操作:
- 在确认卡里手动改一个小节标题(如把
背景改成行业背景)→ 点「确认」。 - 或点「重新规划」并填修改要求(如
给"现状分析"再加一个小节)。
预期行为:
- 手动改后确认:正文按改后的大纲生成。
- 重新规划:基于用户这份大纲做编辑式调整(在原结构上加/改),而不是从零另起一份无关大纲。
校验重点: 自带大纲 → 确认 → 编辑 这条回路正常,不会丢掉用户原始结构。
TC-11 回归:不填大纲(默认流程不受影响)
操作: 「已有大纲」留空,只填写作意图,正常发起。
预期行为: 与功能上线前完全一致——系统自动检索素材、自动规划大纲(大纲由 AI 生成,非用户提供)。
校验重点: 增量功能不污染老流程。
TC-12 素材关联(仍走检索)
前置: 素材来源选「知识库」,用 TC-02 的大纲发起,等检索出素材并确认。
预期行为:
- 走到大纲时,用户的章节会被关联上检索到的素材(正文里能体现素材中的事实/数据)。
- 关联只填素材、不改大纲标题与结构。
校验重点: 「自带大纲」与「检索素材」能共存——大纲是用户的,正文有素材支撑。
五、缺陷记录模板
| 用例 | 输入大纲(摘要) | 预期 | 实际 | 是否通过 | 备注 |
|---|---|---|---|---|---|
| TC-01 | Markdown 三级 | 标题+2章节+子要点 | ☐ | ||
| TC-02 | 一、/(一)/1. | 中文三级 | ☐ | ||
| TC-03 | 1./1.1/1.1.1 | 阿拉伯三级 | ☐ | ||
| TC-04 | 缩进 bullet | 缩进三级 | ☐ | ||
| TC-05 | 平铺 ## | 4 章节无小节 | ☐ | ||
| TC-06 | 平铺 一、 | 3 章节无小节 | ☐ | ||
| TC-07 | 纯文本平铺 | 4 章节 | ☐ | ||
| TC-08 | 散文 | LLM 兜底产出大纲 | ☐ | ||
| TC-09 | 带括号/缩写标题 | 标题逐字保留 | ☐ | ||
| TC-10 | 确认卡编辑/重规划 | 在原大纲上调整 | ☐ | ||
| TC-11 | 留空 | 走自动规划 | ☐ | ||
| TC-12 | 检索+自带大纲 | 素材关联不改结构 | ☐ |
六、备注
- TC-01~07、09 的解析逻辑已有自动化单测覆盖(
backend/tests/test_ai_writing_outline_parser.py,19 个用例),本文档侧重端到端真机表现(流式展示、确认卡渲染、正文层级、素材关联)。 - 若某条解析结果与预期不符,先看大纲确认卡里的结构是否正确(定位是解析问题还是正文生成问题)。
- 相关后端实现:
packages/harness/deerflow/agents/ai_writing/outline_parser.py(解析)、nodes/writer_outline.py(自带大纲分支 + 素材关联)。