fix(editor): Checkbox点击失效 + AI全局上下文注入
- 将'允许修改正文'复选框从id/htmlFor绑定改为label直接包裹input,增加e.stopPropagation防止事件冒泡被拦截 - handleAIGenerate中新增editorRef.current.innerText作为全局上下文注入prompt - currentHtml增加过滤​零宽字符 - 优化systemPrompt,明确告知大模型全局参考内容+目标区域源码的双信息源结构
This commit is contained in:
37
工程分析/20260419_0333/需求分析.md
Normal file
37
工程分析/20260419_0333/需求分析.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# 需求分析
|
||||
|
||||
## 时间戳
|
||||
2026-04-19 03:33
|
||||
|
||||
## 需求来源
|
||||
用户反馈 AI 辅助撰写功能存在两个 Bug:
|
||||
1. 「允许修改正文」复选框无法被点击切换
|
||||
2. AI 大模型无法看到编辑器中的报告内容,无法执行修改正文的指令
|
||||
|
||||
## 问题一:Checkbox 无法切换
|
||||
|
||||
**现象**:AI 面板底部的「允许修改正文」复选框点击无反应,无法关闭或开启。
|
||||
|
||||
**根因分析**:
|
||||
- 当前实现使用独立的 `<input id="aiModifyEnabled">` + `<label htmlFor="aiModifyEnabled">` 组合
|
||||
- 在复杂的 React 组件树中,`id`/`htmlFor` 绑定可能因事件冒泡、DOM 结构覆盖或 React 重渲染导致失效
|
||||
- 外层 `.ai-region` 等元素可能对点击事件有拦截
|
||||
|
||||
**约束条件**:
|
||||
- 最小化改动,只改包裹结构,不改样式语义
|
||||
- 必须保留 `cursor-pointer` 和原有视觉样式
|
||||
|
||||
## 问题二:AI 无法读取编辑器内容
|
||||
|
||||
**现象**:用户在 AI 区域外写入了「气腹压力为 12mmHg」等信息,但问 AI「你能看到当前气腹压力吗?」时,AI 回答无法看到。
|
||||
|
||||
**根因分析**:
|
||||
- `handleAIGenerate` 目前只将「目标 AI 区域的 HTML 源码」发送给大模型
|
||||
- 目标区域可能为空(默认只有 `​`),导致大模型收到的上下文只有用户指令
|
||||
- AI 看不到编辑器中其他区域(如基本信息、其他手术步骤)的内容
|
||||
|
||||
**约束条件**:
|
||||
- 必须保留现有 `currentHtml` 作为修改目标(用于 diff 注入)
|
||||
- 全局上下文使用纯文本而非 HTML,减少 token 消耗和格式干扰
|
||||
- 需要过滤 `​` 零宽字符
|
||||
- systemPrompt 需同步更新,明确告知大模型有两个信息源:全局参考内容 + 目标区域源码
|
||||
Reference in New Issue
Block a user