feat(copy): 处理状态的「入库」改为「整理」,术语表与 check:copy 同步

真正入库取决于媒体服务器有没有扫到,本工具只负责整理(元数据、NFO 与图片、按规则归到目录)。
界面与面向用户的服务端文案里「已入库 / 未入库 / 部分入库 / 入库失败 / 入库中 / 入库后 / 原地入库…」
改为「已整理 / 未整理 / 部分整理 / 整理失败 / 整理中 / 整理后 / 原地整理…」;文件管理快速筛选「已整理」、
目录副行「n 个已整理 / 未整理」、季卡片「已整理 x/y」。代码标识符不改,「Emby 已有」这类媒体服务器状态保留。
glossary 加「整理」口径条目;check:copy 拦处理状态语境的「入库」搭配,其它线待替换的文件暂列 TERM_PENDING。

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-06 17:54:28 +08:00
1 parent 79c3b8c9b9
commit 550ac285f4
67 files changed
+171 -143

No files matched your search

+1 -1
View File
@@ -717,7 +717,7 @@ export default function FilesPage() {
key: "scrape",
label: "刷新元数据",
icon: RefreshCw,
disabled: selected.every((e) => e.asset) ? null : "只对已入库的文件",
disabled: selected.every((e) => e.asset) ? null : "只对已整理的文件",
onSelect: () => act("scrape", selected),
});
items.push({
+6 -6
View File
@@ -141,7 +141,7 @@ function PathsPanel({ detail }: { detail: LibraryDetail }) {
<EmptyState
plain
icon={FolderTree}
title="还没有入库文件"
title="还没有整理过的文件"
description="收录版本满足后,文件位置显示在这里。"
className="py-8"
/>
@@ -608,7 +608,7 @@ function UnitsPanel({ entity, detail }: { entity: ReturnType<typeof useEntityDet
hideBelow: "sm",
cell: (u) =>
covered.has(u.id) ? (
<StatusBadge tone="success">已入库</StatusBadge>
<StatusBadge tone="success">已整理</StatusBadge>
) : (
<span className="text-muted-foreground">—</span>
),
@@ -711,10 +711,10 @@ function EpisodesPanel({ detail, units }: { detail: LibraryDetail; units: Conten
if (hit) return hit;
const season = seasonUnitOf(u.seasonNumber!);
if (covered.has(u.id) || (season && covered.has(season.id)))
return { label: "已入库", tone: "success", have: true };
return { label: "已整理", tone: "success", have: true };
const air = finalOf(u, "airDate")?.value ?? u.airDate;
if (typeof air === "string" && air > today()) return { label: "未播出", tone: "neutral", have: false };
return { label: sub ? "缺失" : "未入库", tone: sub ? "destructive" : "neutral", have: false };
return { label: sub ? "缺失" : "未整理", tone: sub ? "destructive" : "neutral", have: false };
};
const haveIn = (n: number) => episodes.filter((u) => u.seasonNumber === n && statusOf(u)?.have).length;
const initial =
@@ -747,7 +747,7 @@ function EpisodesPanel({ detail, units }: { detail: LibraryDetail; units: Conten
description={
sub
? "库内状态按订阅的覆盖矩阵;标题与简介按语言回退链取值"
: "没有订阅时只看是否已入库;标题与简介按语言回退链取值"
: "没有订阅时只看是否已整理;标题与简介按语言回退链取值"
}
actions={
<Button variant="outline" size="sm" disabled={refresh.isPending} onClick={refreshFull}>
@@ -817,7 +817,7 @@ function EpisodesPanel({ detail, units }: { detail: LibraryDetail; units: Conten
})(),
summary: (
<StatusBadge tone={total && have >= total ? "success" : "neutral"}>
已入库 {have}/{total ?? "?"}
已整理 {have}/{total ?? "?"}
</StatusBadge>
),
}}
+1 -1
View File
@@ -166,7 +166,7 @@ function WorksView() {
},
{
key: "org",
header: "最近入库",
header: "最近整理",
hideBelow: "lg",
cell: (r) => <span className="text-meta text-muted-foreground">{relTime(r.lastOrganizedAt)}</span>,
},
@@ -208,7 +208,7 @@ function InventoryPanel({ d }: { d: TmdbMediaDetail }) {
) : (
<>
<p>
{inv.versionCount} 个版本已入库
{inv.versionCount} 个版本已整理
{inv.downloadingCount ? ` · ${inv.downloadingCount} 个正在下载` : ""}
{inv.subscribed ? " · 已订阅" : ""}
</p>
@@ -284,7 +284,7 @@ function SeasonsPanel({ d }: { d: TmdbMediaDetail }) {
});
const seasons = [...d.seasons].sort((a, b) => (a.seasonNumber || 999) - (b.seasonNumber || 999));
return (
<Panel title="季与集" description={d.localEntityId ? "本地一列是已入库集数" : "不在媒体库"}>
<Panel title="季与集" description={d.localEntityId ? "本地一列是已整理集数" : "不在媒体库"}>
<PaginatedList rows={seasons} label="季列表" resetKey={d.externalId} className="space-y-2">
{(s) => (
<SeasonSection
@@ -299,7 +299,7 @@ function SeasonsPanel({ d }: { d: TmdbMediaDetail }) {
summary:
d.localEntityId && s.localHave !== null ? (
<StatusBadge tone={s.localHave >= s.episodeCount && s.episodeCount > 0 ? "success" : "neutral"}>
已入库 {s.localHave}/{s.episodeCount}
已整理 {s.localHave}/{s.episodeCount}
</StatusBadge>
) : undefined,
}}
@@ -48,7 +48,7 @@ const TOTAL_SOURCE: Record<string, string> = {
tmdb: "TMDB",
injected: "注入",
manual: "手动",
covered_floor: "按已入库",
covered_floor: "按已整理",
previous: "沿用",
};