feat(reader): add selection annotations and server-side book search

This commit is contained in:
hectorqin committed 2026-09-24 16:03:35 +08:00
1 parent 9c83e3e013
commit 1d86efab34
18 files changed
+369 -23

No files matched your search

+23
View File
@@ -40,6 +40,29 @@
---
## 书内搜索
### `GET /books/:id/search?q=关键词&cursor=上一页游标`
仅允许搜索当前用户书架中的书籍,支持 TXT、EPUB 和远程章节。关键词去除首尾空白后搜索,原始长度限 1–200 个字符。响应不缓存。
```json
{
"hits": [{ "title": "第一章", "excerpt": "匹配附近的文字", "anchor": {
"sectionId": "chapter:0", "start": 10, "end": 12,
"quote": "关键词", "prefix": "前文", "suffix": "后文"
}}],
"failures": [], "scanned": 8, "total": 30, "limited": false,
"nextCursor": "8.签名"
}
```
服务端按需扫描正文,每页本地最多 8 章、远程最多 1 章,每页最多返回 200 条匹配;`limited` 表示达到匹配上限。客户端连续请求 `nextCursor`,最多展示 200 条。游标绑定书籍目录、版本、关键词和个人整理版本,条件变化需重新搜索。此接口不是预建全文索引。
单章限制 8 MiB,远程章节有 12 秒超时;失败章节在 `failures` 中返回 `{title, code}`,保留其他章节结果。客户端停止请求会取消后续扫描。返回定位包含当前用户的个人纠错。
使用自定义 TXT 标题规则时返回 `400 SEARCH_LOCAL_LAYOUT`,客户端使用本地目录和缓存搜索并明确提示。断网时同样仅搜索已缓存内容,缓存不完整时提示结果可能不完整,不下载整书到浏览器搜索。
## 认证
### `POST /auth/register` — 公开