Files
MediaOrganizer/docs/adr/0007-failure-cooldown-retry-backoff.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.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 失败冷却(fail_cooldown.json):失败条目的重试退避
`skip_unidentified`(AI 尽力后仍失败 / 无 AI 密钥)与 `request_failed`(网络/密钥重试耗尽)条目在下次 cron 运行会被自动重试——语义可逆正确,但持续失败(密钥失效、站点长期不可达、源文件永久不可识别)会每轮全量重试同一批条目,浪费请求与 AI 额度。决定:引入 `$CACHE_DIR/media_organizer/fail_cooldown.json`(`{src: {retry_at, reason}}`),上述两类条目登记冷却(默认 24 小时,`FAIL_RETRY_COOLDOWN_HOURS` 可配,0=禁用),冷却期内识别池入口直接跳过(结局 `cooldown`),过期后自动恢复重试。
**边界语义**:① 只冷却"尽力后失败"——`skip_type`(电影特典)无成本不冷却;② 源文件已消失的冷却条目不生效(不阻止新文件重试);③ `--rerun` 显式重跑绕过冷却(用户主动纠错不受退避限制);④ 冷却过期条目在 flush 时惰性清理,不单独维护过期任务;⑤ 冷却条目不计入退出码 3 的失败判定(冷却是"等待重试"而非"本次失败")。
**Considered Options**: 不冷却(原状)——每轮全量重试;永久跳过——破坏"可逆"语义,站点恢复后永不重试;按结局计数退避(指数)——过度设计,小时级固定冷却已覆盖 cron 场景。