Files
MediaOrganizer/docs/adr/0010-search-fallback-chain.md
Shuery c1ed1795c2
CI / lint + test + build (push) Canceled after 0s
docs: 重写 README、新增项目报告与开发工具配置
- README 现代化重写:徽章区、特性一览、统一 GitHub 提示块格式、修正版本号与 AI 默认值
- 新增 docs/PROJECT_REPORT.md 学术项目报告(含许可证合规分析与死链修复记录)
- 收录 23 份 ADR 架构决策记录与 CONTEXT.md 领域术语表
- 新增开发配置:.editorconfig / .shellcheckrc / .markdownlint-cli2.jsonc
- .gitignore 补充 mo_map/、检查报告、编辑器临时文件
- 新增 config.example.json 配置模板(不含真实密钥)
2026-08-14 22:41:40 +08:00

8 lines
1.5 KiB
Markdown

# 搜索重试链:zh-CN → en-US → MAL(可选)
中文标题搜不到(简体译名与 TMDB 条目名不一致、条目只有英文/日文名)是识别失败的主要来源之一,此前直接进 AI 纠正。决定:识别搜索失败时先做**语言重试**——zh-CN 空结果 → `en-US` 重搜(同一 TMDB 端点、`tmdb_api_lang` 局部覆盖 `TMDB_LANG`,缓存 key/路径含语言段天然隔离,零新依赖),仍失败且 `SEARCH_FALLBACK_MAL=true`(默认关)→ MyAnimeList (jikan v4) 取候选标题(罗马音/英文/日文,最多 3 个)逐个回 TMDB en-US 重搜。
**边界语义**:① 请求失败(rc=2,网络/密钥)**不重试**——重搜无意义,直接进失败路径;② MAL 是**可选开关**——外部 API(限流 1 req/3s)需要网络,默认关闭保持零新依赖;③ MAL 独立缓存于 `$CACHE_DIR/media_organizer/mal/`(包裹格式 + 空哨兵 3 天 TTL),不污染 TMDB 缓存镜像;④ MAL 请求失败静默降级(回退到原有 PENDING → AI 路径),不阻断主流程;⑤ en-US 重搜的详情/季数据与 zh 缓存按语言段隔离(id 类路径带 `.lang` 后缀),互不污染。
**Considered Options**: 仅 AI 纠正词(原状)——每次失败都消耗 AI 额度且延迟一轮;直接信任 MAL 标题入库——MAL 与 TMDB 条目可能不一致,必须经 TMDB 搜索验证;中文占比启发式去拉丁字符重搜(BAR 做法)——零新依赖但只解决混合标题,解决不了纯译名不一致。