Sync inserted AI regions immediately
- Track report editor AI regions in React state instead of only scanning contentEditable DOM during render. - Observe editor AI region mutations and refresh the AI writing target dropdown without requiring page navigation or refresh. - Select newly inserted AI regions immediately after insertion and keep a live DOM fallback for generation. - Harden AI region insertion so it still appends the region if execCommand has no active editor selection. - Escape AI region names before injecting template HTML and add an accessible label for the insert button. - Add Playwright coverage for inserting an AI region and seeing it immediately in the AI writing dropdown. - Update report editor, feature, progress, testing, and AGENTS documentation for AI region synchronization.
This commit is contained in:
@@ -41,7 +41,7 @@
|
||||
| 视频上传 | 真实集成 | 使用浏览器 File API 和对象 URL即时预览,并优先通过 `/api/files` 以 `kind = VIDEO` 写入后端文件资源。 |
|
||||
| 自动抽帧 | 真实集成 | 使用 `<video>` + `<canvas>` 按百分比截取 JPEG,关键帧优先通过 `/api/files` 以 `kind = FRAME` 写入后端文件资源。 |
|
||||
| 关键帧插入 | 真实集成 | 关键帧可点击插入或拖入图片占位符;上传成功后编辑器会把插入图片从 Data URL 替换为受控文件 URL。 |
|
||||
| AI 辅助撰写 | 真实集成 | 前端调用 `/api/ai/chat`,后端使用全局共用 Provider Key 代理 OpenAI 兼容 `/chat/completions`;需要有效 Provider 配置、模型和网络。 |
|
||||
| AI 辅助撰写 | 真实集成 | 前端调用 `/api/ai/chat`,后端使用全局共用 Provider Key 代理 OpenAI 兼容 `/chat/completions`;AI 可编辑区域插入后会立即同步到目标下拉栏;需要有效 Provider 配置、模型和网络。 |
|
||||
| AI 差异确认 | 真实可用 | 使用 `diff` 生成左右差异,确认后写入 AI 区域。 |
|
||||
| 讯飞语音听写 | 真实集成 | 前端使用麦克风采集音频并连接 `/api/speech/iat`;后端读取讯飞配置、生成鉴权 URL、补齐首帧 APPID/业务参数并转发 IAT 结果。需要浏览器权限、安全上下文(`localhost` 或 HTTPS)、有效配置和网络;Docker 提供 `https://localhost:4443` 演示入口。 |
|
||||
| AI/语音密钥管理 | 真实集成 | AI Key 和讯飞 APIKey/APISecret 均由后端代理读取和使用;普通用户读取设置时不返回真实密钥。 |
|
||||
|
||||
@@ -71,6 +71,8 @@ AI 面板支持两种模式:
|
||||
- 对话模式:根据当前报告内容和图片上下文回答问题。
|
||||
- 修改模式:选中 `.ai-region` 后要求模型返回 JSON,其中包含 `reply` 和 `updatedHtml`。
|
||||
|
||||
编辑器会监听正文中的 `.ai-region` 变化;用户插入新的 AI 可编辑区域后,AI 撰写面板的目标下拉栏会立即更新,不需要离开页面或刷新。
|
||||
|
||||
模型返回 HTML 后,系统会清理换行和 `<br>`,生成差异预览。用户确认后才写入目标 `.ai-content`。
|
||||
|
||||
当前 AI 调用使用后端代理:
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
- 报告编辑、模板选择、字段绑定、富文本编辑已实现。
|
||||
- 视频上传、自动抽帧、手动截帧、关键帧插入已实现;视频和关键帧优先上传到后端 Files API。
|
||||
- AI 对话、AI 区域改写、差异确认和调用日志已实现;AI 对话已改为后端 `/api/ai/chat` 代理。
|
||||
- 报告编辑器会监听正文 AI 区域变化,新插入的 AI 可编辑区域会立即同步到 AI 撰写目标下拉栏。
|
||||
- 讯飞语音听写入口已实现,并已改为后端 `/api/speech/iat` WebSocket 代理;前端启动前会检查麦克风采集能力和安全上下文。
|
||||
- 报告管理、查看、历史恢复、打印、JSON/PDF 导出已实现。
|
||||
- 报告 API 已实现列表、详情、创建、保存、完成修订、历史记录和软删除;`ReportManage`、`ReportView`、`ReportEditor` 已优先调用后端,只有开发/显式回退模式下才保留本地回退。
|
||||
@@ -85,3 +86,4 @@
|
||||
| 2026-05-02 | 新增 Docker HTTPS 演示入口和麦克风访问说明,解决非安全上下文下语音听写不可启动的问题。 |
|
||||
| 2026-05-02 | 修复模板管理中新建模板后点击保存内容导致模板从列表消失的问题,并补充单元测试和 E2E。 |
|
||||
| 2026-05-02 | 模板管理新增 HTML 模板包导出/导入,修正右上角 JSON 导出为标准模板包。 |
|
||||
| 2026-05-02 | 修复报告编辑器新增 AI 可编辑区域后 AI 撰写下拉栏不立即更新的问题,并补充 E2E。 |
|
||||
|
||||
@@ -42,6 +42,7 @@ npm run build
|
||||
| E2E 登录流程 | Playwright 验证默认快捷登录进入工作台。 |
|
||||
| E2E 权限过滤 | Playwright 验证超级管理员、管理员、医生在报告管理页的可见范围。 |
|
||||
| E2E 报告修订 | Playwright 验证已完成报告再次完成保存后 `revision` 递增并保留历史。 |
|
||||
| E2E 报告 AI 区域同步 | Playwright 验证报告编辑器中新插入的 AI 可编辑区域会立即出现在 AI 撰写目标下拉栏。 |
|
||||
| E2E 个人模板 | Playwright 验证医生可保存个人模板且模板仅归属本人。 |
|
||||
| E2E 模板管理 | Playwright 验证管理员新增模板后点击保存内容,模板仍保留在列表且后端可查询。 |
|
||||
| E2E 路由守卫和审计日志 | Playwright 验证医生不能直进管理页,超级管理员可查看审计日志。 |
|
||||
@@ -87,6 +88,7 @@ AI 第三方接口、讯飞语音上游 WebSocket、麦克风权限和真实视
|
||||
| 默认快捷登录 | 已覆盖 | `e2e/login.spec.ts` |
|
||||
| 报告权限 E2E | 已覆盖 | `e2e/report-permissions.spec.ts` |
|
||||
| 报告修订版本 E2E | 已覆盖 | `e2e/report-revision.spec.ts` |
|
||||
| 报告 AI 区域同步 E2E | 已覆盖 | `e2e/report-ai-region.spec.ts` |
|
||||
| 医生个人模板 E2E | 已覆盖 | `e2e/personal-template.spec.ts` |
|
||||
| 模板管理新增保存 E2E | 已覆盖 | `e2e/template-management.spec.ts` |
|
||||
| 路由守卫和审计日志 E2E | 已覆盖 | `e2e/audit-and-route-guards.spec.ts` |
|
||||
|
||||
Reference in New Issue
Block a user