fix(downloads): humanized reasons and TechInfo on the download panel (DL-2b)

- board organize hint uses DEAI-2 reasonLine; add transfer_failed, blocked,
  blocked_by_conflict, main_failed, not_imported_kind, target_root_not_managed,
  download_removed to the reason table with tests
- download detail / plans tab: internal ids, raw codes and JSON moved into TechInfo
- library versions tech block switched to TechInfo (TODO(DEAI-2))
- copy: glossary terms (no 接管/候选), plan reason codes no longer shown raw

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
rootandClaude Opus 5.5 committed 2026-09-29 22:00:04 +08:00
1 parent 8315ece4d1
commit 3f1c4d6c3b
11 files changed
+105 -65

No files matched your search

+1 -1
View File
@@ -179,7 +179,7 @@ export const DOWNLOAD_STATUS_TONE: Record<DownloadStatus, "success" | "warning"
};
export const PAUSE_REASON_LABEL = {
user: "用户暂停",
user: "手动暂停",
threshold: "下载盘满暂停",
policy: "策略暂停",
agent: "智能体暂停",
+2 -2
View File
@@ -191,7 +191,7 @@ export function buildTimeline(input: {
key: "dl-submit",
stage: "download",
at: task.createdAt,
title: task.origin === "adopted" ? "接管已有下载" : "提交下载",
title: task.origin === "adopted" ? "开始管理已有下载" : "提交下载",
detail: task.name,
tone: "neutral",
});
@@ -230,7 +230,7 @@ export function buildTimeline(input: {
stage: "download",
at: task.updatedAt,
title: "下载器报错",
detail: String((task.lastError as { message?: unknown }).message ?? JSON.stringify(task.lastError)),
detail: humanizeReason(String((task.lastError as { message?: unknown }).message ?? "")) || null,
tone: "destructive",
});
for (const r of records) {