修复已停用厂商找回交互:选中先进确认层(可看出厂模型/返回),点恢复才入队reset

This commit is contained in:
ypshidifu
2026-10-20 10:08:58 +08:00
parent 19e16a42e0
commit b911a43940
+53 -4
View File
@@ -670,7 +670,7 @@ function mmFindDisabled(connected) {
async function openModelManager(context) {
try {
// 层级状态机:view = list | scope | provider | model | action | find
// 层级状态机:view = list | scope | provider | model | action | find | found
let view = "list"
let target = null // 当前厂商 {id,name,models}
let pendingModel = null
@@ -876,7 +876,7 @@ async function openModelManager(context) {
}
const pick = await context.ui.dialog.select({
title: "已停用/已删除的厂商",
placeholder: "选一个恢复(← 返回上一级)",
placeholder: "选一个进入(← 返回上一级)",
options: [
{ title: "← 返回上级", value: MM_BACK },
...disabled.map((d) => ({
@@ -889,9 +889,58 @@ async function openModelManager(context) {
view = "list"
continue
}
mmEnqueue("reset", { provider: pick })
// 2026-10-20:选中不再直接入队+弹回最外层(用户反馈「点不进去,复原不了」),
// 改为进入该厂商的确认层,由用户明确点「恢复」才入队
const d = disabled.find((x) => x.id === pick)
if (!d) {
view = "list"
continue
}
target = d
view = "found"
continue
}
// ── 已停用/已删除厂商 · 恢复确认层 ───────────────────────────────
if (view === "found") {
const d = target
if (!d) {
view = "list"
continue
}
const status = d.deleted ? "已删除(彻底摘除节点)" : "已停用(models 已清空)"
const pick = await context.ui.dialog.select({
title: "找回厂商 · " + d.name,
placeholder: status + ",可从出厂集恢复…",
options: [
{ title: "← 返回上级(已停用列表)", value: MM_BACK },
{
title: "♻️ 恢复该厂商(从出厂集拉回 " + d.models.length + " 个模型)",
value: "__restore__",
},
{
title: "📋 出厂模型:" + (d.models.length ? d.models.slice(0, 6).join(", ") + (d.models.length > 6 ? " …" : "") : "(无)"),
value: "__info__",
},
],
})
if (!pick || pick === MM_BACK) {
view = "find"
continue
}
if (pick === "__info__") {
try {
context.ui.toast.show({
message: d.name + " 出厂模型(" + d.models.length + "):" + d.models.join(", ").slice(0, 300),
variant: "info",
duration: 6000,
})
} catch {}
continue // 停留在本层
}
mmEnqueue("reset", { provider: d.id })
context.ui.toast.show({
message: "已入队:恢复 " + pick + "(从出厂集拉回),daemon 写完自动热重载",
message: "已入队:恢复 " + d.name + "(从出厂集拉回),daemon 写完自动热重载",
variant: "info",
})
view = "list"