fix(episode): 半转正的临时季也进季表;迁移 0091 补做 DH-1 前漏掉的季集转正

兰香缘等 26 部:季单元是资源懒建的临时单元,TMDB 集已挂在下面成了正式单元,
季单元没转正,季表丢掉整季,资源全成「元数据未覆盖」。

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 12:36:32 +08:00
1 parent 8ff1817845
commit 4866e735c8
3 files changed
+87 -1

No files matched your search

@@ -71,9 +71,17 @@ export async function loadSeasonTable(exec: Exec, entityId: string): Promise<Sea
.orderBy("created_at")
.execute();
const seasons = new Map<number, SeasonInfo>();
// 季单元还是临时、但下面已有元数据建的正式集(DH-1 之前的旧数据,季单元没跟着转正)也算元数据覆盖,
// 否则整季从季表里消失,资源一律成了「元数据未覆盖」
const covered = new Set(
units
.filter((u) => u.kind === "episode" && u.status === "confirmed" && (u.source === "tmdb" || u.source === "user"))
.map((u) => u.season_number),
);
for (const u of units) {
if (u.kind !== "season" || u.season_number === null || u.season_number < 0) continue;
if (u.status !== "confirmed" && u.source !== "tmdb" && u.source !== "user") continue;
if (u.status !== "confirmed" && u.source !== "tmdb" && u.source !== "user" && !covered.has(u.season_number))
continue;
const cur = seasons.get(u.season_number);
// 重复季单元(并发懒建遗留)取已知的较大总集数
const total = u.episode_total ?? null;