mirror of
https://github.com/truewhile/MeBox.git
synced 2026-10-02 04:16:38 +08:00
feat(reader): P2 收尾——冒烟 CLI、书架正文链路、替换净化规则
- SmokeChain 结构化全链路冒烟(搜索→详情→目录→正文,分阶段失败定位), SmokeSource 支持不落库直测;Debug 接口改为结构化日志输出 - cmd/reader-smoke:批量书源冒烟 CLI(-file/-url 导入、并发、 各阶段通过率汇总、-json 完整报告) - GetContentForBook:书架维度正文(章节缓存 + 书源 replaceRegex + 用户替换净化规则),前端阅读器切换到该接口 - 替换净化规则 CRUD(后端 + /reader/replace 前端页),用户规则 按 scope/excludeScope 书名过滤、正则带匹配超时防回溯挂死 - rule.ApplyUserReplace 导出(regexp2 MatchTimeout)
This commit is contained in:
+25
-1
@@ -152,8 +152,32 @@ export const readerAPI = {
|
||||
listChapters: (id: string) =>
|
||||
api.get<{ chapters: ReaderChapter[] }>(`/reader/books/${id}/chapters`).then((r) => r.data.chapters),
|
||||
saveChapters: (id: string, chapters: ReaderChapter[]) => api.post(`/reader/books/${id}/chapters`, { chapters }),
|
||||
// 书架维度正文(服务端已应用书源 replaceRegex 与用户替换净化规则)
|
||||
bookContent: (id: string, chapter: number) =>
|
||||
api
|
||||
.get<ReaderChapterContent>(`/reader/books/${id}/content`, { params: { chapter }, timeout: LONG_REQUEST_TIMEOUT })
|
||||
.then((r) => r.data),
|
||||
|
||||
// ── 替换规则 ──
|
||||
// ── 替换净化规则 ──
|
||||
listReplaceRules: () =>
|
||||
api.get<{ rules: ReaderReplaceRule[] }>('/reader/replace-rules').then((r) => r.data.rules),
|
||||
createReplaceRule: (body: ReplaceRuleInput) =>
|
||||
api.post<ReaderReplaceRule>('/reader/replace-rules', body).then((r) => r.data),
|
||||
updateReplaceRule: (id: string, body: ReplaceRuleInput) => api.patch(`/reader/replace-rules/${id}`, body),
|
||||
deleteReplaceRule: (id: string) => api.delete(`/reader/replace-rules/${id}`),
|
||||
}
|
||||
|
||||
export interface ReplaceRuleInput {
|
||||
name: string
|
||||
group: string
|
||||
pattern: string
|
||||
replacement: string
|
||||
scope: string
|
||||
scope_title: boolean
|
||||
scope_content: boolean
|
||||
exclude_scope: string
|
||||
is_enabled: boolean
|
||||
is_regex: boolean
|
||||
timeout_millisecond: number
|
||||
order: number
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user