# 识别候选结构评分:季数/特典结构参与候选选择 TV 搜索选择此前是"精确名匹配 → 排除前缀 → results[0]",无精确匹配时结构信息(文件季号、特典类型)完全不参与——`S03` 文件可能落到只有 2 季的候选、特典文件可能落到无 season 0 的候选。决定:`pick_tv_show_id` 增加**结构评分层**——精确名匹配失败后,对前 5 候选(前缀排除后)各查一次 detail(TMDB 缓存命中免费),按 `(候选季数 ≥ 文件季号 +40;名称 norm 互相包含 +30;特典文件候选含 season 0 +20)` 评分取最高,全不满足才兜底 results[0]。 **边界语义**:① 精确名匹配(name/original_name 与 query 相等)始终最高优先——评分层只在歧义场景介入,不改变正常识别路径;② 评分请求走 `tmdb_api`(缓存封装),冷缓存最多 5 个 detail 请求,仅无精确匹配时发生;③ 电影侧维持既有年份过滤(`alt_id` 泛化已覆盖),不引入新评分;④ 前缀排除语义不变("Sword Art Online" 不选 "Sword Art Online Abridged"——同人排除优先于季数)。 **Considered Options**: 维持 results[0](原状)——歧义场景依赖 AI 甄别,多一轮成本且结构信息闲置;评分后直接改 `build_tv_dest` 的偏移语义——评分只管选候选,偏移逻辑不动(职责分离)。