85 lines
2.7 KiB
Markdown
85 lines
2.7 KiB
Markdown
# PDF ↔ 思维导图集成实施计划(基于 Grok 方案)
|
||
|
||
## 阶段 0:准备
|
||
|
||
- 明确依赖:`@pdfme/pdfjs-dist`(或 `pdfjs-dist`)、simple-mind-map、自研事件总线、Yjs/Supabase 持久化。
|
||
- 输出数据结构草案:`PDFQuote`、`app://pdf/{fileId}?page=&range=` 协议、Yjs/Supabase 存储字段。
|
||
- 收集 MinerU OCR 样例,定义图片型 PDF 的转换策略。
|
||
|
||
### 阶段 0 Checklist
|
||
|
||
- [x] 依赖/许可确认(pdf.js、simple-mind-map、矿U OCR)
|
||
- [x] `PDFQuote`/URI schema 初稿
|
||
- [x] MinerU OCR 样例与坐标规范
|
||
|
||
## 阶段 1:基础 Viewer 与选区
|
||
|
||
- 开发 `PDFViewerWithQuote` 组件:基于 pdf.js,监听 `selectionchange`,生成 `rects` 并绘制 overlay。
|
||
- 提供 `onQuoteCreate` 回调与 `activeQuote` 反向高亮,实现跨页滚动定位。
|
||
|
||
### 阶段 1 Checklist
|
||
|
||
- [x] 初始化 pdf.js viewer + text layer
|
||
- [x] 选区捕获逻辑(支持跨页、多 range)
|
||
- [x] 高亮 overlay 渲染/清理
|
||
- [x] `PDFQuote` 对象结构与类型定义
|
||
- [x] 反向滚动 + 高亮入口
|
||
|
||
## 阶段 2:思维导图节点接入
|
||
|
||
- 在 simple-mind-map 注册 `pdfQuote` 节点,封装渲染样式与点击事件。
|
||
- 建立全局事件:`pdf:quote-created`、`mindmap:jump-to-pdf`,实现双向联动。
|
||
|
||
### 阶段 2 Checklist
|
||
|
||
- [x] 自定义节点 renderer(UI/交互)
|
||
- [x] PDF→mindmap 插入流程
|
||
- [x] mindmap→PDF 因点击触发跳转
|
||
- [x] Slash/工具栏入口(浮动工具栏 “打开 PDF 引用”)
|
||
|
||
## 阶段 3:持久化与 URI 协议
|
||
|
||
- 将 `PDFQuote`/节点引用写入 Yjs + Supabase,统一 `app://pdf/{fileId}?page=&range=` 协议。
|
||
- 页面加载解析 URI,完成跳转与权限校验。
|
||
|
||
### 阶段 3 Checklist
|
||
|
||
- [x] Supabase `pdf_quotes` Schema / 迁移(含 API)
|
||
- [x] Yjs 引用同步 schema
|
||
- [x] URI 解析器 + 跳转钩子
|
||
- [x] 权限/安全校验(RLS + API 鉴权)
|
||
|
||
## 阶段 4:图片型 PDF(MinerU 支持)
|
||
|
||
- 调用 MinerU OCR,生成虚拟 TextLayer 供前端选择/高亮。
|
||
- 统一文本/图片型 PDF 的渲染与编辑接口。
|
||
|
||
### 阶段 4 Checklist
|
||
|
||
- [x] OCR 数据解析 & 坐标转换
|
||
- [x] 自定义 TextLayer(基于 OCR)
|
||
- [x] 高亮 overlay 兼容
|
||
- [x] 失败回退/提示
|
||
|
||
## 阶段 5:性能与体验
|
||
|
||
- 虚拟滚动、懒加载、移动端选区、暗色主题适配。
|
||
|
||
### 阶段 5 Checklist
|
||
|
||
- [ ] 大文档性能基线
|
||
- [ ] 移动端/触屏交互
|
||
- [ ] UI 适配(暗色、缩放)
|
||
- [ ] 错误兜底
|
||
|
||
## 阶段 6:QA 与文档
|
||
|
||
- Playwright/Storybook 覆盖“选区 → 节点 → 跳转”闭环。
|
||
- 输出使用指南、API 文档、发布说明。
|
||
|
||
### 阶段 6 Checklist
|
||
|
||
- [ ] 自动化测试脚本
|
||
- [ ] 开发/运营文档
|
||
- [ ] 发布与观察项
|