51 lines
4.0 KiB
Markdown
51 lines
4.0 KiB
Markdown
# 需求分析 — 2026-04-16-17-40-20
|
||
|
||
## 需求背景
|
||
用户在持续使用 report-editor 过程中发现了三个关联问题/优化点,涉及草稿恢复、模板状态显示以及视频自动抽帧后的自动插入体验。
|
||
|
||
## 功能目标
|
||
|
||
### 需求 A:自动抽帧图片在切换页面后丢失
|
||
**现状**:从 `/report-manage` 等其他界面进入 `/report-editor` 后,**视频分析 - 关键帧摘取** 中自动摘取的图片全部丢失,但手动摘取的可能保留。
|
||
|
||
**期望**:无论是自动抽帧还是手动截取的图片,在用户切换界面后重新进入 report-editor 时都应正确保留。
|
||
|
||
**初步分析**:
|
||
- `saveDraftToStorage` 在组件卸载时会保存 `capturedFrames`,但 `autoCaptureFrames` 中生成的帧 `isManual` 为 `false`。
|
||
- 在恢复草稿时,条件可能过度过滤了 `isManual === false` 的帧,或者在某个 effect 中清除了自动帧。
|
||
- 需要审阅 `ReportEditor.tsx` 中所有涉及 `capturedFrames` 赋值/过滤的代码路径,尤其是 `isManual` 字段的处理。
|
||
|
||
### 需求 B:编辑报告后切换界面,模板选择器显示"无"
|
||
**现状**:如果用户在 report-editor 中**编辑了报告内容**(如输入文字、插入图片),然后切换到其他界面再返回,顶部 **"当前模板(及重置模板):"** 会显示为 **"无"**。但如果不编辑直接进去,能正确显示原模板名称。
|
||
|
||
**期望**:无论从何种状态返回 report-editor,模板选择器都应正确反映当前加载的模板(或默认模板),不应因编辑过内容而变为"无"。
|
||
|
||
**初步分析**:
|
||
- 之前修复空白模板时,在 `saveDraftToStorage` 中追加了 `loadedTemplateId`,但可能在**编辑已有报告**(`reportId` 存在)的场景下,`loadedTemplateId` 未被正确写入草稿,或恢复时未正确读取。
|
||
- 编辑已有报告时,报告的 `content` 来自已有报告而非模板,`loadedTemplateId` 可能为空,导致恢复草稿后模板选择器显示"无"。
|
||
- 另一种可能是:编辑已有报告后,`loadedTemplateId` 在 saveDraft 时被覆盖了,但恢复时该字段未同步。
|
||
|
||
### 需求 C:system-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` 构建通过。
|