读书上传+在线读+笔记导入:上传 EPUB 解析/在线读/笔记导入仍在网页端 #28

Closed
opened 2026-10-28 12:52:46 +00:00 by laoyang · 1 comment
Owner

现象

读书模块端上明说「在线读」「上传 EPUB 解析」「笔记导入」仍然只在网页端(FbBooksPage.ets 头部注释)。Web 端有 books/read(在线读)、books/notes_import、books/new(上传解析)、books/weread(微信读书导入)。

现状与依据

  • 服务端 books API 现有:GET/POST /api/v1/books、GET/PATCH/DELETE /api/v1/books/<id>、GET/POST /api/v1/books/<id>/notes。
    缺:上传 EPUB → 解析章节链路、章节正文读取(在线读)、笔记导入。
  • 端上 FbBooksPage / FbBookSheet 只做书架 + 状态/评分/进度/笔记,无上述三项。

要做的(双端,工作量最大,放最后)

服务端:

  1. 上传解析:POST /api/v1/books/upload(multipart,EPUB/TXT)→ 解析章节 → 返回书目 + 章节。
  2. 在线读:GET /api/v1/books/<id>/chapters + GET /api/v1/books/<id>/chapters/<n>(章节正文)。
  3. 笔记导入:复用 Web 端 notes_import 的解析逻辑,补一个 API 入口。

端上:
4. 「上传书」入口 + 上传进度;「在线阅读」章节列表 + 正文阅读页(可分章);「导入笔记」入口。

验收

  • 端上能上传一本 EPUB,解析出章节,在线阅读正文。
  • 端上能导入读书笔记,Web 端一致。

标签

terminal/web + terminal/harmony · 双端 · 涉及文件上传与解析链路


本单由需求拆解生成,主单 laoyang/FamilyBook #22。

## 现象 读书模块端上明说「在线读」「上传 EPUB 解析」「笔记导入」仍然只在网页端(`FbBooksPage.ets` 头部注释)。Web 端有 `books/read`(在线读)、`books/notes_import`、`books/new`(上传解析)、`books/weread`(微信读书导入)。 ## 现状与依据 - 服务端 `books` API 现有:`GET/POST /api/v1/books`、`GET/PATCH/DELETE /api/v1/books/<id>`、`GET/POST /api/v1/books/<id>/notes`。 缺:**上传 EPUB → 解析章节链路**、**章节正文读取(在线读)**、**笔记导入**。 - 端上 `FbBooksPage` / `FbBookSheet` 只做书架 + 状态/评分/进度/笔记,无上述三项。 ## 要做的(双端,工作量最大,放最后) 服务端: 1. 上传解析:`POST /api/v1/books/upload`(multipart,EPUB/TXT)→ 解析章节 → 返回书目 + 章节。 2. 在线读:`GET /api/v1/books/<id>/chapters` + `GET /api/v1/books/<id>/chapters/<n>`(章节正文)。 3. 笔记导入:复用 Web 端 `notes_import` 的解析逻辑,补一个 API 入口。 端上: 4. 「上传书」入口 + 上传进度;「在线阅读」章节列表 + 正文阅读页(可分章);「导入笔记」入口。 ## 验收 - 端上能上传一本 EPUB,解析出章节,在线阅读正文。 - 端上能导入读书笔记,Web 端一致。 ## 标签 terminal/web + terminal/harmony · 双端 · 涉及文件上传与解析链路 --- > 本单由需求拆解生成,主单 laoyang/FamilyBook #22。
Author
Owner

收尾:已修完、已验证、已部署

两端都已提交、推送,服务端已部署上线。这是「鸿蒙端对齐网页端」6 项里的最后一项。

改了什么

服务端(commit 42aff02):

  • POST /books/upload —— 上传 EPUB/TXT 等 → Storage 存文件 → BookParser 解析 →
    建书 + replaceChapters + EPUB 自带封面(复用 Upload::image 皮书封管线)。
  • GET /books/<id>/chapters —— 章节列表(无正文)。
  • GET /books/<id>/chapter?seq=N —— 单章正文。
  • POST /books/import_notes —— 粘贴读书笔记原文 → 重新解析 → 导入(不信前端结果)。

鸿蒙端(commit f5a979f,6 文件):

  • FbBookUploadSheet:上传电子书 + 粘贴导入笔记(两个 tab)。
  • FbBookReadSheet:在线阅读(章节列表 + 单章正文,一次一章)。
  • FbBookSheet 详情态加「在线阅读」入口(有章节时才显示);FbBooksPage 加「+上传/导入」入口,设置菜单「导入笔记」接上。

验证

  • 服务端冒烟 _i28_book_api.py 11/0:上传建书+落章节 · 章节列表 · 单章正文 · 笔记导入。
  • 反证 _i28_falsify.py:注掉 upload 分支 → ① 全红。
  • 鸿蒙端编译 BUILD SUCCESSFUL。

部署

服务端 20261028-224748,两仓库已 push。

⚠️ 真机点验待设备恢复:选文件上传、翻章阅读、粘贴导入的手感要设备连上再点。

## 收尾:已修完、已验证、已部署 两端都已提交、推送,服务端已部署上线。这是「鸿蒙端对齐网页端」6 项里的最后一项。 ### 改了什么 **服务端**(commit `42aff02`): - `POST /books/upload` —— 上传 EPUB/TXT 等 → `Storage` 存文件 → `BookParser` 解析 → 建书 + `replaceChapters` + EPUB 自带封面(复用 `Upload::image` 皮书封管线)。 - `GET /books/<id>/chapters` —— 章节列表(无正文)。 - `GET /books/<id>/chapter?seq=N` —— 单章正文。 - `POST /books/import_notes` —— 粘贴读书笔记原文 → 重新解析 → 导入(不信前端结果)。 **鸿蒙端**(commit `f5a979f`,6 文件): - `FbBookUploadSheet`:上传电子书 + 粘贴导入笔记(两个 tab)。 - `FbBookReadSheet`:在线阅读(章节列表 + 单章正文,一次一章)。 - `FbBookSheet` 详情态加「在线阅读」入口(有章节时才显示);`FbBooksPage` 加「+上传/导入」入口,设置菜单「导入笔记」接上。 ### 验证 - 服务端冒烟 `_i28_book_api.py` **11/0**:上传建书+落章节 · 章节列表 · 单章正文 · 笔记导入。 - 反证 `_i28_falsify.py`:注掉 upload 分支 → ① 全红。 - 鸿蒙端编译 **BUILD SUCCESSFUL**。 ### 部署 服务端 `20261028-224748`,两仓库已 push。 ⚠️ 真机点验待设备恢复:选文件上传、翻章阅读、粘贴导入的手感要设备连上再点。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: laoyang/FamilyBook#28