feat(reader): legado 书源规则引擎 Go 移植 + 阅读 P0 后端

- internal/service/reader/rule/:逐方法移植 legado analyzeRule 包
  (AnalyzeRule/AnalyzeByJSoup/AnalyzeByJSonPath/AnalyzeByXPath/
  AnalyzeByRegex/AnalyzeUrl/RuleAnalyzer),JS 规则留 P2 接入点
- 书源导入(JSON数组/对象/Base64/URL)、多源聚合搜索(legado 四档
  排序合并)、详情/目录/正文(nextContentUrl 翻页合并)
- 数据模型 4 表注册迁移;/api/reader/* 路由组(书源/搜索/书架/进度/调试)
- 单测 + httptest 全链路端到端测试
- docs/reader-ui-spec.md:legado UI 交互仿制规格(供 P1 前端使用)
This commit is contained in:
truewhile
2026-09-30 15:41:58 +08:00
parent c84f2604ed
commit b8e6418326
28 changed files with 5736 additions and 14 deletions
+17
View File
@@ -0,0 +1,17 @@
// Package rule 移植自 legado(refgd/legado,GPL-3.0)的规则引擎:
// io.legado.app.model.analyzeRule 包下的 AnalyzeRule / AnalyzeByJSoup /
// AnalyzeByJSonPath / AnalyzeByXPath / AnalyzeByRegex / AnalyzeUrl / RuleAnalyzer。
// 语义以 legado 源码为基准逐项对齐,注释中标注了对应的 Kotlin 方法名。
package rule
import "errors"
var (
// ErrJsUnsupported 书源规则中包含 JS(<js>/@js:/{{}}/js 选项)。
// JS 引擎(goja + java.* 桥)在 P2 阶段接入,届时移除本错误路径。
ErrJsUnsupported = errors.New("书源使用了 JS 规则,当前阶段暂不支持")
// ErrWebJSUnsupported 书源依赖 webView/webJs 抓取,服务端无头浏览器不在支持范围。
ErrWebJSUnsupported = errors.New("书源依赖 webView 抓取,暂不支持")
// ErrTypeUnsupported 书源 URL 声明了 type(zip/file 等),暂不支持。
ErrTypeUnsupported = errors.New("书源 URL 声明了不支持的 type")
)