feat(editor): refine toc hierarchy and search scope

This commit is contained in:
xin61
2026-07-07 15:48:45 +08:00
parent 0aa568636d
commit 9b5c55688a
7 changed files with 530 additions and 137 deletions
+8 -4
View File
@@ -40,8 +40,8 @@ epub_review_sessions/
结构接口 `/api/structure` 应保持向后兼容:
- text chapter: `kind: "text"``parts``row_count``touched_count``marked_count`
- image chapter: `kind: "image"``images``parts: []``row_count: 0`
- 统计字段同时保留总数和细分:`chapter_count``text_chapter_count``image_chapter_count``image_count``asset_count`
- image item: 优先作为 text chapter 的 `items` 子项返回,字段为 `kind: "image"``images``parts: []``row_count: 0`;没有所属文字章时才保留顶层 image chapter
- 统计字段同时保留总数和细分:`chapter_count``text_chapter_count``image_chapter_count``top_level_image_chapter_count``image_count``asset_count`。其中 `image_chapter_count` 表示目录里的图片条目数,不一定是顶层章节数
- part 标题默认使用 `part0000` 形式,真实标题可保留在 `source_title`
- 插图通过 `/api/asset/<entry>` 读取,必须继续使用 `extracted_path()` 防止路径穿越;只把 raster 图片纳入 `/api/structure``/api/asset` 白名单,不能任意读取解包目录文件
@@ -49,16 +49,20 @@ epub_review_sessions/
1. EPUB 内部目录页的中文条目
2. `nav.xhtml` / `toc.xhtml`
3. 正文标题
3. 正文 `<h1-6>` 标题
4. 文件名 fallback
不要把正文首段或第一句对白作为章节标题 fallback。宁可显示 `part0000`,也不要让目录被正文内容污染。
## 阅读与侧栏交互
验收口径:
- 初始进入审校时,左侧侧栏隐藏,正文占主要空间。
- 顶部“目录”只打开目录,“检索”只打开搜索/段落列表,不合并成一个常驻面板。
- 目录可展开/收起章节,插图章节可点击阅读,文字 part 可点击定位。
- 目录可展开/收起章节,插图作为所属章节的次级目录条目可点击阅读,文字 part 可点击定位。
- 点击目录章节、part 或插图条目后,侧栏不得自动收起;用户仍可点“隐藏”或按 `Escape` 关闭。
- 检索必须保留“当前范围 / 全书全局”切换;当前范围随当前章节或 part 更新,全局检索可跨章节返回并跳转。
- 阅读模式不显示每段编号、快速编辑、快速标记按钮。
- 点击正文段落打开右侧精修与重翻面板。
- 右侧面板打开或关闭导致正文宽度变化时,应恢复用户原来正在看的段落位置。