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}",