From 2e634ff8321916384a77240dc84c089eb2fb4fe2 Mon Sep 17 00:00:00 2001 From: admin <572701190@qq.com> Date: Sun, 19 Apr 2026 22:29:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20AI=E5=86=99=E4=BD=9C=E6=A8=A1=E5=9D=974?= =?UTF-8?q?=E9=A1=B9=E4=BC=98=E5=8C=96(20260419=5F2226)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 diff 颜色残留: confirmAiInjection 使用 cleanHtml 而非 newHtml - 更新默认快捷指令: 4条外科专用 -> 2条通用短语 - 新增发送按钮: 输入框旁显式发送按钮 - 导出AI日志: 快捷指令区域新增调试日志导出(JSON) --- src/pages/ReportEditor.tsx | 32 ++++++++++++++++++++-- 工程分析/20260419_2226/功能变更执行文档.md | 19 +++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 工程分析/20260419_2226/功能变更执行文档.md diff --git a/src/pages/ReportEditor.tsx b/src/pages/ReportEditor.tsx index 3809ac7..e5364ee 100644 --- a/src/pages/ReportEditor.tsx +++ b/src/pages/ReportEditor.tsx @@ -69,7 +69,7 @@ export default function ReportEditor() { const [aiUploadedImages, setAiUploadedImages] = useState<{id: number, dataUrl: string}[]>([]); const speechRecognitionRef = useRef(null); const [quickPrompts, setQuickPrompts] = useState([ - '请详细描述手术步骤', '提取术中关键病灶信息', '生成简短的术后总结', '根据截图描述游离过程' + '请完善报告内容', '请对内容做如下修改:' ]); const [isEditingPrompts, setIsEditingPrompts] = useState(false); const [diffModal, setDiffModal] = useState<{isOpen: boolean, originalHtml: string, newHtml: string, targetId: string} | null>(null); @@ -1016,7 +1016,7 @@ export default function ReportEditor() { range.selectNodeContents(targetContent); sel?.removeAllRanges(); sel?.addRange(range); - document.execCommand('insertHTML', false, newHtml); + document.execCommand('insertHTML', false, cleanHtml); targetContent.style.transition = 'background-color 0.3s ease'; targetContent.style.backgroundColor = '#bfdbfe'; setTimeout(() => { @@ -2381,6 +2381,31 @@ export default function ReportEditor() { {isEditingPrompts ? '+ 添加' : '⚙️'} {isEditingPrompts && } + {/* 沉浸式输入框 */} @@ -2420,6 +2445,9 @@ export default function ReportEditor() { + diff --git a/工程分析/20260419_2226/功能变更执行文档.md b/工程分析/20260419_2226/功能变更执行文档.md new file mode 100644 index 0000000..01fdaeb --- /dev/null +++ b/工程分析/20260419_2226/功能变更执行文档.md @@ -0,0 +1,19 @@ +# 功能变更执行文档(20260419_2226) + +## 变更摘要 +本次实施 4 项优化: + +| # | 变更项 | 目标效果 | +|---|---|---| +| 1 | 修复 diff 颜色残留 | `confirmAiInjection` 使用 `cleanHtml` 而非 `newHtml` | +| 2 | 更新默认快捷指令 | 4 条外科专用短语 → 2 条通用短语 | +| 3 | 新增发送按钮 | 在麦克风按钮旁添加显式发送按钮 | +| 4 | 导出 AI 日志 | 快捷指令区域新增「导出 AI 日志」按钮,下载 JSON | + +## 变更文件 +- `src/pages/ReportEditor.tsx` + +## 技术要点 +1. **Diff 颜色残留根因**:`confirmAiInjection` 中 `document.execCommand('insertHTML')` 传入的是未清理的 `newHtml`,而 `cleanHtml`(已去除 diff span)未被使用。 +2. **Send 按钮复用**:`lucide-react` 的 `Send` 图标已在导入列表中,无需新增依赖。 +3. **导出 AI 日志**:点击后组装 `{ exportAt, url, messages, metadata }` 为 JSON Blob 并触发浏览器下载。