guanghulab/server/portal/routes/active-model.js
Guanghu Domestic Migration d1e47f4565
Some checks are pending
自动更新代码和重启 / update-and-restart (push) Waiting to run
CI检查 + 自动部署 / check (push) Waiting to run
CI检查 + 自动部署 / deploy (push) Blocked by required conditions
重启聊天服务 / restart (push) Waiting to run
chore: import sanitized domestic snapshot for REPO-002
Source snapshot: ca48d3ddf926d79aa138306164169baf764bb829
2026-07-17 15:54:41 +08:00

44 lines
1.4 KiB
JavaScript

/*
* /api/active-model — 当前激活的模型 (mother | coder)
* 守护: 铸渊 · ICE-GL-ZY001
*
* GET / → 当前
* POST / {name} → 切换 (本地状态 + 转发推理端)
*
* 注意: 推理端 switch-model 失败时, 本地状态不回滚.
* 原因: 推理端可能没起 (AutoDL 关机 / 还没 refresh-endpoint), 但用户在前端
* 切 tab 应该立即生效, 等推理端起来再连. 这跟 cc-004 "不让用户做无用功"
* 一致. 如果回滚, 用户每次切 tab 都失败, 体验崩.
*/
"use strict";
const express = require("express");
const router = express.Router();
router.get("/", (req, res) => {
res.json({
name: req.ctx.inference.getActiveModel()
});
});
router.post("/", async (req, res) => {
const body = req.body || {};
const name = body.name;
if (name !== "mother" && name !== "coder") {
return res.status(400).json({ error: true, code: "bad_name", message: "name 只允许 mother 或 coder" });
}
// 本地立即生效
req.ctx.inference.setActiveModel(name);
// 异步通知推理端 (失败不挡前端)
let upstream = { ok: false, message: "推理端尚未联通, 切换稍后生效" };
try {
const r = await req.ctx.inference.switchUpstreamModel(name);
upstream = { ok: true, ...r };
} catch (e) {
upstream = { ok: false, message: e.message };
}
res.json({ name, upstream });
});
module.exports = router;