Files
MediaOrganizer/docs/adr/0004-pipeline-execution-contract.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.6 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.
# 流水线执行契约:识别池、结局账本与错误分类
主流水线(scan → 识别 → AI → link)重构为三个新契约:**识别池**(`MEDIA_WORKERS` 默认 4)——`process_video` 与 `process_audio` 共用同一 worker 池,子进程产出 `key\tvalue` 行由父进程合并(bash 子 shell 无法写父关联数组,这是唯一并行契约);**结局账本**——`MEDIA_OUTCOME_MAP` 记录每条目结局(identified/fallback/skip_type/skip_unidentified/request_failed/pending_ai),跳过与失败条目不进入目的映射,`register_*` 层原子完成"映射+账本+计数器";**错误分类**——区分"查询无结果"(可恢复,跳过继续)与"请求失败"(计入失败,连续 ≥5 次或失败率 ≥50% 时终止),网络请求改为递增重试(`2^n` 封顶 16s,`TMDB_CURL_RETRY`/`AI_CURL_RETRY` 分别控制次数,共享实现)。
运行级汇总在结尾列出各分类数量与文件清单(每类前 10 条,automated 全量入日志文件);退出码分级:0=全部成功、1=运行期错误、2=用法错误、3=部分失败(skip>0)。回退命名仅限"AI 尽力后仍失败"(无 AI → 显式 `skip_unidentified`),其条目在汇总中记为"降级成功"。
**Considered Options**: 后台 job 各自写回(无法共享关联数组,需临时文件合并——正是所选方案的机制);完整 per-file 状态机(bash 关联数组收益有限);全失败即终止(网络抖动即死);无 AI 时也回退命名(批量伪命名污染库且被幂等锁死,跳过可逆——下次运行自动重试)。