feat(recipes): add manual checkpoint reconnect for broken recipe entries

Checkpoint entries that cannot be restored by download (deleted,
unresolvable hash, or name-only remnants with no CivitAI identifiers)
now get the same remediation chain LoRAs already had:

- scanner: parameterized reconnect-suggestion ranking, update/restore/
  set-hash-invalid for the checkpoint entry, and clear hashInvalid on
  rematch write-back (was only done for LoRAs)
- persistence/handlers/routes: reconnect/restore/reconnect-suggestions/
  mark-hash-invalid endpoints under /api/lm/recipe/checkpoint/*
- modal: checkpoint reconnect UI (deleted/hash-invalid badges, inline
  form with suggestions, undo for reconnected entries); download
  failures mark the hash invalid only on explicit unresolvable signals
  (not found/deleted/404/410), matching the LoRA rule
- css: checkpoint undo button shares the LoRA undo styles
- i18n: the 14 new keys translated in all 9 locales
This commit is contained in:
Will Miao
2026-08-30 18:02:15 +08:00
parent bce7d1d30c
commit c8b9db5bf4
21 changed files with 2031 additions and 38 deletions
+15 -1
View File
@@ -948,7 +948,14 @@
"undoReconnectTooltipNamed": "恢复为 {name}(重新关联前的关联)",
"viewOnCivitai": "在 CivitAI 上查看",
"openLoraDetails": "在 LoRA 库中查看 {name}",
"openCheckpointDetails": "在模型库中查看 {name}"
"openCheckpointDetails": "在模型库中查看 {name}",
"checkpointDeletedTooltip": "此 Checkpoint 已从来源删除,无法再下载 - 请使用本地模型重新关联",
"checkpointHashInvalidTooltip": "此 Checkpoint 的哈希无法在 CivitAI 上解析 - 模型可能已更新",
"reconnectCheckpoint": "重新关联",
"reconnectCheckpointTooltip": "与本地 Checkpoint 重新关联",
"checkpointReconnectInstructions": "输入 Checkpoint 名称以重新关联:",
"checkpointReconnectPlaceholder": "输入 Checkpoint 名称",
"checkpointReconnectSuggestionsEmpty": "本地库中没有匹配的 Checkpoint"
},
"controls": {
"import": {
@@ -2097,6 +2104,13 @@
"missingCheckpointPath": "缺少Checkpoint路径",
"missingCheckpointInfo": "缺少Checkpoint信息",
"downloadCheckpointFailed": "下载Checkpoint失败:{message}",
"enterCheckpointName": "请输入 Checkpoint 名称",
"checkpointReconnectedSuccessfully": "Checkpoint 重新连接成功",
"reconnectCheckpointBaseModelMismatch": "已重新关联,但基础模型不同(配方:{recipe}Checkpoint{checkpoint})——两者架构兼容",
"checkpointReconnectFailed": "Checkpoint 重新连接出错:{message}",
"checkpointRestored": "Checkpoint 已恢复为重新关联前的关联",
"checkpointRestoreFailed": "Checkpoint 恢复出错:{message}",
"checkpointDownloadUnavailable": "缺少 CivitAI 标识,无法下载此 Checkpoint - 请尝试使用本地 Checkpoint 重新关联",
"missingLoraDownloadInfo": "缺少此 LoRA 的下载信息",
"hashNotFoundOnCivitai": "此 LoRA 哈希无法在 CivitAI 上解析——模型可能已更新或哈希无效",
"downloadLoraFailed": "下载 LoRA 失败:{message}",