- 引入diff库,实现字符级差异比对 - diffModal左右两侧增加diff高亮:左侧删除内容标红,右侧新增内容标绿 - systemPrompt增加绝对强制条款:无论指令多小都必须返回updatedHtml - 前端校验兜底:修改模式下未返回updatedHtml时在聊天面板给出提示 - confirmAiInjection注入前清理diff高亮span,避免污染编辑器
36 lines
1.6 KiB
Markdown
36 lines
1.6 KiB
Markdown
# 需求分析
|
||
|
||
## 时间戳
|
||
2026-04-19 21:59
|
||
|
||
## 需求来源
|
||
用户反馈两个体验问题:
|
||
1. 第二次输入需求时,没有弹出 AI 修改确认框
|
||
2. AI 修改确认框的左侧和右侧希望增加文档对比(Diff)功能,高亮显示新增/删除的内容
|
||
|
||
## 问题 1:第二次输入未弹框
|
||
|
||
**现象**:第一次 AI 修改正常弹出 diff 弹窗,第二次输入微调指令(如"把 5x3x2 变成 5x3x10")后没有弹窗。
|
||
|
||
**根因分析**:
|
||
1. 大模型在微小修改指令时可能"偷懒",只返回 `reply` 而不返回 `updatedHtml`
|
||
2. 当前逻辑 `if (responseJson.updatedHtml && aiModifyEnabled)` 会跳过弹窗
|
||
3. 用户不知道发生了什么,没有反馈
|
||
|
||
## 问题 2:缺少文档对比(Diff)
|
||
|
||
**现象**:diff 弹窗左侧和右侧只是简单渲染两段 HTML,无法直观看到 AI 具体修改了哪些字词。
|
||
|
||
**根因分析**:
|
||
- 当前实现使用 `dangerouslySetInnerHTML` 直接渲染原始 HTML 和 AI HTML
|
||
- 没有使用差异比对算法来标记变更
|
||
|
||
## 解决方向
|
||
1. **强化 systemPrompt**:明确要求"无论指令多小都必须返回 updatedHtml"
|
||
2. **前端校验兜底**:如果修改模式下未返回 updatedHtml,在聊天面板给出明确提示
|
||
3. **引入 diff 库**:使用 `diff` 库进行文本差异比对
|
||
4. **左右两侧 diff 高亮**:
|
||
- 左侧(原始版本):删除的内容标红(红色背景 + 删除线)
|
||
- 右侧(AI 版本):新增的内容标绿(绿色背景)
|
||
5. **注入前清理**:`confirmAiInjection` 注入前去掉 diff 高亮 span,避免污染编辑器
|