- currentHtml提取后添加 replace(/>(\s+)</g, '><') 压缩标签间空白 - cleanHtml处理后同样压缩, 确保diff两侧格式对齐 - 消除模板源码排版换行被diff算法误识别为删除内容的问题
24 lines
1.0 KiB
Markdown
24 lines
1.0 KiB
Markdown
# 功能变更需求文档(20260420_0009)
|
||
|
||
## 需求:修复 AI 修改确认弹窗原始版本的大段空白
|
||
|
||
### 问题背景
|
||
`defaultContent.ts` 模板源码中 `<p>` 标签之间存在大量换行和缩进空白(代码排版需要)。当 `currentHtml` 从 `.ai-content` 的 `innerHTML` 读取时,这些空白被完整保留。AI 返回的 `updatedHtml` 是紧凑的(无多余空白)。`diffChars` 比对时将原始 HTML 中的空白字符标记为 `removed`,`\n` 被转为 `<br>` 渲染,导致左侧"原始版本"出现大段空白。
|
||
|
||
### 根因
|
||
模板源码:
|
||
```html
|
||
</p>
|
||
|
||
<p style="...">
|
||
```
|
||
读取后的 `currentHtml` 包含 `</p>\n\n <p>`,而 AI 返回的是 `</p><p>`,差异被标记为删除并渲染为多个 `<br>`。
|
||
|
||
### 解决方案
|
||
在 `handleAIGenerate` 中:
|
||
1. `currentHtml` 提取后,添加 `.replace(/>(\s+)</g, '><')` 压缩标签间空白
|
||
2. `cleanHtml` 处理后,同样添加 `.replace(/>(\s+)</g, '><')` 保持两侧格式对齐
|
||
|
||
### 影响范围
|
||
- `src/pages/ReportEditor.tsx`
|