TMDB
- 查不到时,按标题搜索网页:读平台和百科网站,其它网站只用搜索摘要,抽取字段并附出处和置信度。先看建议,确认后才建作品。
+ 查不到时,按标题搜索网页,从平台和百科页面抽取字段,附出处和置信度。确认后才建作品。
) : (
diff --git a/apps/web/app/components/library/identity-pool-sheet.tsx b/apps/web/app/components/library/identity-pool-sheet.tsx
index 7d5ad452..3551393e 100644
--- a/apps/web/app/components/library/identity-pool-sheet.tsx
+++ b/apps/web/app/components/library/identity-pool-sheet.tsx
@@ -160,12 +160,12 @@ function ManualAssign({ item }: { item: IdentityPoolItem }) {
await dismiss.mutateAsync({ id: item.id });
toast.success("已忽略");
} catch (err) {
- toast.error(errorMessage(err, "操作失败"));
+ toast.error(errorMessage(err, "忽略失败"));
}
}}
>
- 忽略此资源
+ 忽略这个资源
);
@@ -229,7 +229,7 @@ export function PoolSheet({ item, onClose }: { item: IdentityPoolItem | null; on
) : null}
-
+
{item.candidates.length ? (
{item.candidates.map((c, i) => (
@@ -245,7 +245,7 @@ export function PoolSheet({ item, onClose }: { item: IdentityPoolItem | null; on
{item.reason === "unmatched"
? "没有命中订阅或本地作品,未查询 TMDB。点「重新识别」会查一次 TMDB;新增相近别名时自动重试。"
- : "没有候选。有新证据时自动重试。"}
+ : "没有候选作品。有新证据时自动重试。"}
)}
diff --git a/apps/web/app/components/library/identity-views.tsx b/apps/web/app/components/library/identity-views.tsx
index 7f052abb..8fd7d37b 100644
--- a/apps/web/app/components/library/identity-views.tsx
+++ b/apps/web/app/components/library/identity-views.tsx
@@ -73,7 +73,7 @@ export function PoolTab() {
},
{
key: "cands",
- header: "候选",
+ header: "候选作品",
hideBelow: "sm",
align: "right",
cell: (r) => {r.candidates.length},
diff --git a/apps/web/app/components/library/labels.ts b/apps/web/app/components/library/labels.ts
index 958ce731..8dd72f3c 100644
--- a/apps/web/app/components/library/labels.ts
+++ b/apps/web/app/components/library/labels.ts
@@ -43,12 +43,12 @@ export const ENTITY_STATUS: Record = {
/** Slot 状态(REQ §6.1):每个状态有明确文本,不只靠颜色 */
export const SLOT_STATUS: Record = {
empty: { label: "空缺", tone: "neutral" },
- reserved: { label: "已预留", tone: "neutral" },
+ reserved: { label: "准备下载", tone: "neutral" },
downloading: { label: "下载中", tone: "neutral" },
verifying: { label: "核验中", tone: "neutral" },
satisfied: { label: "已满足", tone: "success" },
upgrade_pending: { label: "等待升级", tone: "warning" },
- attention: { label: "需处理", tone: "destructive" },
+ attention: { label: "需要处理", tone: "destructive" },
};
export const SLOT_STATUS_ORDER: SlotStatus[] = [
"attention",
@@ -64,7 +64,7 @@ export const IDENTITY_STATUS: Record = {
accepted: { label: "已确认", tone: "success" },
proposed: { label: "待确认", tone: "warning" },
conflicted: { label: "冲突", tone: "destructive" },
- retired: { label: "已退役", tone: "neutral" },
+ retired: { label: "已停用", tone: "neutral" },
};
export const EVIDENCE_LEVEL: Record = {
@@ -100,7 +100,7 @@ export const LOCATION_KIND: Record = {
};
export const DOWNLOAD_STATUS: Record = {
- queued: { label: "排队", tone: "neutral" },
+ queued: { label: "排队中", tone: "neutral" },
submitting: { label: "提交中", tone: "neutral" },
downloading: { label: "下载中", tone: "neutral" },
paused: { label: "已暂停", tone: "warning" },
@@ -110,15 +110,15 @@ export const DOWNLOAD_STATUS: Record = {
imported: { label: "已整理", tone: "success" },
failed: { label: "失败", tone: "destructive" },
removed: { label: "已移除", tone: "neutral" },
- missing: { label: "下载器中缺失", tone: "warning" },
+ missing: { label: "下载器里没有", tone: "warning" },
};
export const ORG_STATUS: Record = {
- queued: { label: "排队", tone: "neutral" },
+ queued: { label: "排队中", tone: "neutral" },
running: { label: "整理中", tone: "neutral" },
- succeeded: { label: "核验通过", tone: "success" },
- partial: { label: "部分成功", tone: "warning" },
- failed: { label: "失败", tone: "destructive" },
+ succeeded: { label: "已整理", tone: "success" },
+ partial: { label: "部分整理", tone: "warning" },
+ failed: { label: "整理失败", tone: "destructive" },
cancelled: { label: "已取消", tone: "neutral" },
};
@@ -127,8 +127,8 @@ export const CANDIDATE_DECISION: Record = {
upgrade: { label: "可升级", tone: "success" },
reject: { label: "拒绝", tone: "destructive" },
unknown_field: { label: "字段未知", tone: "warning" },
- skipped: { label: "跳过", tone: "neutral" },
- deferred: { label: "延后:已有计划在途", tone: "warning" },
+ skipped: { label: "已跳过", tone: "neutral" },
+ deferred: { label: "延后:已有下载在进行", tone: "warning" },
};
export const DECISION_KIND: Record = {
@@ -141,7 +141,7 @@ export const DECISION_KIND: Record = {
space_insufficient: "空间不足",
approval_required: "需要审批",
metadata_conflict: "元数据冲突",
- source_unreachable: "来源不可达",
+ source_unreachable: "来源连不上",
downloader_offline: "下载器连不上",
cache_volume_unknown: "下载目录读不到容量",
other: "其他",
@@ -163,7 +163,7 @@ export const SEVERITY: Record = {
};
export const POOL_REASON: Record = {
- ambiguous: { label: "多个候选", tone: "warning" },
+ ambiguous: { label: "匹配到多部作品", tone: "warning" },
no_match: { label: "没有匹配", tone: "neutral" },
proposed: { label: "待确认", tone: "warning" },
lookup_failed: { label: "查询失败", tone: "destructive" },
@@ -207,7 +207,7 @@ export const POLICY_STATUS: Record = {
export const SUB_MODE: Record = { once: "单次收录", continuous: "持续追踪" };
export const SEASON_SCOPE: Record = {
current_season: "仅本季",
- following_seasons: "接续后续季",
+ following_seasons: "包括后续季",
};
export const PRIORITY: Record = {
immediate: "立即",
@@ -336,9 +336,9 @@ export const opts = (rec: Record`)→ 中文;不认识的原样显示 */
const SLOT_REASON: Record = {
"blocked:no_main_video": "没有可整理的主视频",
- "deferred:slot_busy": "已有计划在途,等它结束再评估",
- verified: "已核验整理",
- verified_partial: "部分核验整理",
+ "deferred:slot_busy": "已有下载在进行,结束后再评估",
+ verified: "已整理",
+ verified_partial: "部分整理",
hard_conditions_met: "硬条件全部满足",
};
export function slotReasonText(raw: string): string {
diff --git a/apps/web/app/components/library/preferences-form.tsx b/apps/web/app/components/library/preferences-form.tsx
index 4e64c881..0f714cfa 100644
--- a/apps/web/app/components/library/preferences-form.tsx
+++ b/apps/web/app/components/library/preferences-form.tsx
@@ -108,8 +108,8 @@ export function PreferenceFormDialog({
{tag ? "编辑偏好" : "添加偏好"}
{tag
- ? "修改作用范围或规则会留下旧语义的抑制记录,智能体不会按旧证据加回。"
- : "手动添加等同对话确认。之前取消过的偏好,重新添加会解除抑制。"}
+ ? "改了作用范围或规则后,智能体不会再按旧证据把它加回来。"
+ : "手动添加和在对话里确认效果相同。之前取消过的偏好,重新添加后恢复生效。"}
);
@@ -659,7 +659,7 @@ function PolicyEditorSheet({
open
onOpenChange={(o) => !o && !pending && onClose()}
width="lg"
- title={editId ? `编辑草案 r${base?.revision}` : base ? `基于 r${base.revision} 新建草案` : "新建收录策略草案"}
+ title={editId ? `编辑草案 r${base?.revision}` : base ? `从 r${base.revision} 新建草案` : "新建收录策略草案"}
description="保存为草案,发布后才生效。"
footer={
<>
diff --git a/apps/web/app/components/library/subscriptions-slots.tsx b/apps/web/app/components/library/subscriptions-slots.tsx
index 8fc362c1..63d1d712 100644
--- a/apps/web/app/components/library/subscriptions-slots.tsx
+++ b/apps/web/app/components/library/subscriptions-slots.tsx
@@ -66,7 +66,7 @@ export function SlotsPanel({
plain
icon={Target}
title="还没有收录版本"
- description="没有时按已发布收录策略的默认模板创建,也可以手动新建。"
+ description="订阅时按已发布收录策略的默认模板自动创建,也可以手动新建。"
className="py-8"
/>
) : (
@@ -80,7 +80,7 @@ export function SlotsPanel({