feat(identify-words): 识别词——全局识别词(MP 语法)+ 作品识别词(季集换算),规则页「识别词」页签

- 新表 identify_words(0094):全局一块 + 每部作品一块原文,带版本与审计;episode_mapping_rule 转成文本行后删表
- 全局识别词移植 MP WordsMatcher(屏蔽 / 替换 / 集数偏移 / 替换+偏移 / {[tmdbid=…]}),所有按标题 / 文件名识别的地方解析前套用,命中的行记在解析结果上;保存后后台按改动行重新识别
- 作品识别词:S02 >> S01 EP+24 / S01E13 >> S00E01 / S01 @组 >> 忽略,解析器 + 打印器 + 编译;发布组繁简视为同一个
- 去掉规则自动停用:算出来对不上季表只待确认,要停用就注释掉那一行
- 集数待确认的采用 / 忽略与智能体 apply_rule 改为往作品识别词追加一行(带来历注释)
- 编辑器可视化 / 文本两种模式改同一份原文,保存前试算;作品页「集数映射」用同一个编辑器

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
This commit is contained in:
rootandClaude Opus 5.5 committed 2026-10-08 17:03:00 +08:00
1 parent 12f8fc59c3
commit 63e94b308e
90 files changed
+6366 -2131

No files matched your search

+17
View File
@@ -2,6 +2,23 @@
版本号遵循 [SemVer](https://semver.org/lang/zh-CN/)。所有成员包(`apps/*`、`packages/*`)与根 `deno.json` 使用同一个版本号;`/api/v1/health` 与备份清单里的版本取自 `apps/server/deno.json`。
## [Unreleased]
迁移 `0094`。
### 新增
- 规则页加了「识别词」页签,一处看全所有识别词:上面是全局识别词,下面是写了作品识别词的作品(可搜索,显示规则行数、停用行数、最后修改),点一部作品在右侧抽屉里改,也可以「为作品添加」。
- 全局识别词:写法和 MoviePilot 的自定义识别词一样(屏蔽词、`A => B` 替换、`前 <> 后 >> EP+1` 集数偏移、替换 + 偏移、`{[tmdbid=…;type=tv;s=1]}` 指定作品),MP 的列表可以直接粘贴。站点 / RSS / 搜索来的资源、整理时的文件名、文件管理识别、下载时选文件、刮削,识别前都会先过一遍;命中的行在集数映射预览里显示「命中识别词」。
- 作品识别词:一部作品一块文本,一行一条,例如 `S02 >> S01 EP+24`、`S03 @ADWeb @MWeb >> S01 EP`、`S01E13 >> S00E01`、`S01 @某组 >> 忽略`;作品页「集数映射」里改的是同一份。
- 识别词编辑器有「可视化」和「文本」两种方式,随时切换不丢内容:可视化里一行一张卡,选类型填字段、开关停用、拖动排序、写备注,卡片下面拿近期资源试这一行;文本里有行号、语法着色,写错的行标红。改完先试算(哪些资源会变、哪些仍对不上季表、哪一行写错了),确认再保存。
- 全局识别词保存后在后台把标题命中改动行的资源重新识别,页签里能看进度。
### 调整
- 作品原来的结构化集数映射规则自动转成作品识别词:同一季同一换算的发布组合成一行,停用的规则变成注释行。
- 识别词照写的用:算出来的集数对不上作品季表时,资源保持集数待确认、在预览里标「对不上」,不再自动停用规则(原来的「映射规则算出的集数对不上作品季表,规则已停用」没有了)。要停用某一行,把它注释掉或在可视化里关掉开关。
- 集数待确认的「采用建议」「忽略」和智能体写规则,都是往作品识别词末尾加一行,上面一行注释写清楚来历;用户注释掉过同范围的行,智能体就不再自动写。
- 发布组比较不分繁简:`綠茶字幕組` 的规则也认 `绿茶字幕组` 的资源。
## [0.3.42] - 2026-10-08
### 修复