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

@@ -431,7 +431,7 @@ export const EXCLUDE_REASON: Record<string, string> = {
below_min_size: "低于最小体积",
sample: "样片",
too_small: "体积过小",
not_imported_kind: "不入库的文件类型",
not_imported_kind: "不整理的文件类型",
orphan_sidecar: "孤立附属文件",
no_episode: "解析不出集号",
special_extra: "特典/花絮",
@@ -488,7 +488,7 @@ export function OrganizeWizard({ source, onClose }: { source: OrganizeSource; on
<p className="text-meta text-muted-foreground">{source.scanSummary}</p>
) : null}
<FormSelect
label={inPlace ? "入库位置" : "来源配置"}
label={inPlace ? "整理位置" : "来源配置"}
value={inPlace ? "none" : (profile?.id ?? (ambiguous ? "choose" : "none"))}
onChange={pickProfile}
choices={[
@@ -631,9 +631,9 @@ export function OrganizeWizard({ source, onClose }: { source: OrganizeSource; on
})
}
choices={[
{ value: "in_place", label: "原地入库 · 保留位置与名称", disabled: !canInPlace },
{ value: "in_place", label: "原地整理 · 保留位置与名称", disabled: !canInPlace },
{ value: "copy", label: "复制 · 保留源文件" },
{ value: "move", label: "移动 · 入库后删除源文件", disabled: hnrCount > 0 },
{ value: "move", label: "移动 · 整理后删除源文件", disabled: hnrCount > 0 },
]}
/>
{!inPlace ? (
@@ -109,7 +109,7 @@ export function StepOptions({
onSelect={() => set({ action: "move" })}
disabled={hnrCount ? `${hnrCount} 项做种中且 H&R 未满足,不能移动` : null}
title="移动"
hint="入库后删源;跨卷时按复制 → 核验 → 删源"
hint="整理后删源;跨卷时按复制 → 核验 → 删源"
/>
</div>
</Section>
@@ -207,7 +207,7 @@ export function StepOptions({
</div>
</Section>
<Section title="入库后">
<Section title="整理后">
<div className="flex items-start justify-between gap-3 rounded-xl border border-border px-3 py-2">
<span className="text-body">
刷新元数据
@@ -216,7 +216,7 @@ export function StepOptions({
<Switch
checked={options.refreshMetadata}
onCheckedChange={(v) => set({ refreshMetadata: v })}
aria-label="入库后刷新元数据"
aria-label="整理后刷新元数据"
/>
</div>
<p className="text-meta text-muted-foreground">
@@ -112,7 +112,7 @@ function FileLine({ f, roots, nested }: { f: GroupFile; roots: FileRoot[]; neste
) : f.target === f.source ? (
<StatusBadge>原地登记</StatusBadge>
) : !f.target ? (
<StatusBadge>不入库</StatusBadge>
<StatusBadge>不整理</StatusBadge>
) : null;
return (
<li className={cn("min-w-0 py-1", nested && "pl-5")}>