fix(editor): Checkbox点击失效 + AI全局上下文注入

- 将'允许修改正文'复选框从id/htmlFor绑定改为label直接包裹input,增加e.stopPropagation防止事件冒泡被拦截
- handleAIGenerate中新增editorRef.current.innerText作为全局上下文注入prompt
- currentHtml增加过滤​零宽字符
- 优化systemPrompt,明确告知大模型全局参考内容+目标区域源码的双信息源结构
This commit is contained in:
2026-04-19 03:35:52 +08:00
parent a065f6af27
commit 854a00c2fa
8 changed files with 362 additions and 11 deletions

View File

@@ -0,0 +1,55 @@
# 测试方案
## 测试环境
- 浏览器访问 `http://localhost:4173/`
- 进入「图文报告生成」→ 新建报告
## 测试用例 1Checkbox 可正常切换
**步骤**
1. 打开右侧「AI 撰写」面板
2. 观察底部「允许修改正文」复选框,当前应为勾选状态(默认 `aiModifyEnabled = true`
3. 点击复选框,观察勾选状态是否消失
4. 再次点击,观察勾选状态是否恢复
5. 点击复选框左侧的文字「允许修改正文」,观察勾选状态是否切换
**预期结果**
- 点击复选框本身:状态正常切换
- 点击文字标签:状态正常切换
- 切换时上方「区域锚定」select 的 `disabled` 状态同步变化(禁用/启用)
## 测试用例 2AI 能看到全局报告内容
**步骤**
1. 在编辑器中输入一些文本,例如「气腹压力为 12mmHg」
2. 插入一个 AI 可编辑区域(如「手术步骤」)
3. 在 AI 面板中输入:「你能看到当前气腹压力吗?」
4. 不勾选「允许修改正文」,直接发送
**预期结果**
- AI 回复中应提到「12mmHg」或「气腹压力」表明它读取了全局上下文
## 测试用例 3AI 能基于全局上下文修改目标区域
**步骤**
1. 编辑器中有完整报告内容(含患者信息、手术步骤等)
2. 在 AI 可编辑区域(如「手术步骤」)中已有部分内容
3. 勾选「允许修改正文」
4. 输入指令:「根据全局报告内容,将手术步骤中提到的止血方法更新为电凝止血」
5. 发送并查看 diff 确认弹窗
**预期结果**
- AI 返回的 `updatedHtml` 应能引用全局报告中的其他信息
- Diff 弹窗能正确展示原文 vs 修改后的内容
- 确认注入后目标区域内容更新
## 测试用例 4编译与部署
**步骤**
1. 执行 `npm run build`
2. 确认无 TypeScript 编译错误
3. 预览服务正常启动并返回 200
**预期结果**
- `vite build` 成功完成
- 预览页面可正常访问