Files
Mdeical_Sur_Report/工程分析/需求分析-2026-04-16-17-40-20.md
2026-04-16 17:55:13 +08:00

4.0 KiB
Raw Blame History

需求分析 — 2026-04-16-17-40-20

需求背景

用户在持续使用 report-editor 过程中发现了三个关联问题/优化点,涉及草稿恢复、模板状态显示以及视频自动抽帧后的自动插入体验。

功能目标

需求 A自动抽帧图片在切换页面后丢失

现状:从 /report-manage 等其他界面进入 /report-editor 后,视频分析 - 关键帧摘取 中自动摘取的图片全部丢失,但手动摘取的可能保留。

期望:无论是自动抽帧还是手动截取的图片,在用户切换界面后重新进入 report-editor 时都应正确保留。

初步分析

  • saveDraftToStorage 在组件卸载时会保存 capturedFrames,但 autoCaptureFrames 中生成的帧 isManualfalse
  • 在恢复草稿时,条件可能过度过滤了 isManual === false 的帧,或者在某个 effect 中清除了自动帧。
  • 需要审阅 ReportEditor.tsx 中所有涉及 capturedFrames 赋值/过滤的代码路径,尤其是 isManual 字段的处理。

需求 B编辑报告后切换界面模板选择器显示"无"

现状:如果用户在 report-editor 中编辑了报告内容(如输入文字、插入图片),然后切换到其他界面再返回,顶部 "当前模板(及重置模板):" 会显示为 "无"。但如果不编辑直接进去,能正确显示原模板名称。

期望:无论从何种状态返回 report-editor模板选择器都应正确反映当前加载的模板或默认模板不应因编辑过内容而变为"无"。

初步分析

  • 之前修复空白模板时,在 saveDraftToStorage 中追加了 loadedTemplateId,但可能在编辑已有报告reportId 存在)的场景下,loadedTemplateId 未被正确写入草稿,或恢复时未正确读取。
  • 编辑已有报告时,报告的 content 来自已有报告而非模板,loadedTemplateId 可能为空,导致恢复草稿后模板选择器显示"无"。
  • 另一种可能是:编辑已有报告后,loadedTemplateId 在 saveDraft 时被覆盖了,但恢复时该字段未同步。

需求 Csystem-settings 增加"开启自动帧插入"选项

现状:视频上传后系统按百分比自动抽帧,但用户需要手动(拖拽或点击"插入")将每个关键帧放入报告占位符中。

期望

  1. 系统设置 - 视频抽帧配置 中增加一个 "开启自动帧插入" 的开关(如 Checkbox 或 Toggle
  2. 开启后,在 抽帧位置百分比 (%) 列表中,每个百分比数字的下方或旁边显示一个 对勾(✓) 或其他标记,表示该位置抽取的帧将自动按顺序插入到报告的空置 image-placeholder 中。
  3. 自动插入的行为:当视频上传后触发自动抽帧时,每抽取一帧,立即尝试插入到报告中第一个空置的 image-placeholder。如果插满了,后续帧静默丢弃不再弹出 "没有可插入图片的空位" 提示。
  4. 该开关状态保存在 systemSettings 中。

涉及页面/模块

  • src/pages/ReportEditor.tsx —— 草稿恢复逻辑(需求 A、B、自动抽帧后插入逻辑需求 C
  • src/pages/SystemSettings.tsx —— 新增"开启自动帧插入"开关及 UI 标记(需求 C
  • src/types.ts —— SystemSettings 类型扩展(需求 C
  • src/utils/storage.ts —— 无需修改,使用现有 storage API

验收标准

  • 自动抽帧图片在切换页面后重新进入 report-editor 时不丢失。
  • 手动抽帧图片在切换页面后依然保留。
  • 编辑已有报告后切换界面再返回,模板选择器正确显示(不显示"无")。
  • system-settings 中出现"开启自动帧插入"开关,状态可保存。
  • 开关开启后,自动抽帧的每帧会按顺序自动插入空置占位符,插满后无弹窗提示。
  • 开关关闭后,自动抽帧行为与现在一致(不自动插入)。
  • npm run lint 零错误,npm run build 构建通过。