# 测试方案 — 2026-04-17-13-32-07
## 测试目标
验证 `TemplateManage.tsx` 中以下两项修复是否生效且无副作用:
1. `Ctrl+Z` / `Ctrl+Y` / `Ctrl+Shift+Z` 快捷键正确调用自定义 Undo/Redo。
2. 在段落末尾(含 `
`)插入 `smart-field-wrapper` 不再换行错位。
---
## 测试步骤
### 1. 编译检查
```bash
npm run lint
```
- **预期结果**:`tsc --noEmit` 通过,0 errors。
---
### 2. 快捷键 Undo/Redo 测试
**前置条件**:登录后进入 `/template-manage`,选中任意模板。
#### 2.1 删除字段后撤销
1. 在编辑器中点击一个已有的 `smart-field-wrapper` 的 × 按钮(或通过 Backspace/Delete 删除字段)。
2. **立刻按下 `Ctrl+Z`**。
- **预期结果**:被删除的字段完整恢复,内容与样式均正常。
#### 2.2 撤销后再重做
1. 完成步骤 2.1 后,**按下 `Ctrl+Y`**(或 `Ctrl+Shift+Z`)。
- **预期结果**:刚刚恢复的字段再次被删除。
#### 2.3 插入字段后撤销
1. 从右侧字段库点击任意字段插入到编辑器。
2. **按下 `Ctrl+Z`**。
- **预期结果**:刚插入的字段消失,编辑器恢复到插入前的状态。
#### 2.4 多次撤销
1. 连续进行多次编辑操作(插入字段、删除字段、输入文字)。
2. 连续多次按 `Ctrl+Z`。
- **预期结果**:每次按 `Ctrl+Z` 都按自定义历史栈顺序回退一步;不会触发浏览器原生 undo 造成状态混乱。
---
### 3. 插入字段排版测试
**前置条件**:编辑器中存在一个以 `
` 结尾的 `
` 标签,例如: ```html
手术日期:
` 标签内部,与 `手术日期:` 保持在同一行,**不会**跑到 `
` 外面形成新段落。 #### 3.2 段中插入字段 1. 在正常段落(如 `姓名:xxx`)中间插入字段。 - **预期结果**:字段与前后文字保持在同一行,排版正常。 #### 3.3 已有字段附近插入 1. 在已有的 `smart-field-wrapper` 前后插入新字段(只要字段 key 不同,允许插入)。 - **预期结果**:新字段正确插入,不会与已有字段重叠或被挤到下一行。 --- ### 4. 回归测试 1. **保存模板**:进行任意编辑后点击「保存模板」,刷新页面,确认内容已持久化。 2. **打印预览**:点击打印预览按钮,确认字段显示正常。 3. **工具栏撤销/重做按钮**:确认点击工具栏的撤销/重做按钮依然工作正常。 4. **Backspace/Delete 边界拦截**:确认光标紧邻字段时按 Backspace/Delete 仍然只删除字段本身,不会误删整段。 --- ## 判定标准 - 所有编译检查和手工测试均通过,方可认为任务完成。 - 若任一测试失败,回滚修改并重新分析根因。