feat: add admin model capability overview
This commit is contained in:
@@ -4,6 +4,12 @@
|
|||||||
|
|
||||||
## 2026-04-07
|
## 2026-04-07
|
||||||
|
|
||||||
|
### 管理员模型配置页新增统一能力总览
|
||||||
|
|
||||||
|
- `管理员配置台 -> 模型与接入` 新增了 `统一能力总览`,把 `语言模型 / ASR / 文生图 / 图生图 / 生视频` 五类能力做成了可点击总览卡。
|
||||||
|
- 每张卡都会直接带到对应锚点,管理员不需要再自己判断是去 `系统模型`、`运行时接入` 还是 `Huobao` 的图片/视频配置区。
|
||||||
|
- 这样“所有需要模型的能力都在一个配置页里”不只是文案层成立,实际管理路径也更清楚了。
|
||||||
|
|
||||||
### 管理员模型配置页明确覆盖全部模型能力
|
### 管理员模型配置页明确覆盖全部模型能力
|
||||||
|
|
||||||
- `管理员配置台 -> 模型与接入` 顶部新增了统一能力说明,直接标明这里覆盖 `语言模型 / ASR / 文生图 / 图生图 / 生视频`。
|
- `管理员配置台 -> 模型与接入` 顶部新增了统一能力说明,直接标明这里覆盖 `语言模型 / ASR / 文生图 / 图生图 / 生视频`。
|
||||||
|
|||||||
@@ -5867,6 +5867,69 @@ function renderAdminHuobaoConfigPanel(serviceType, label, description) {
|
|||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderAdminModelCapabilityOverviewPanel() {
|
||||||
|
const state = getAdminModelAccessState();
|
||||||
|
const textConfigs = safeArray(state.huobao_configs?.text?.items);
|
||||||
|
const imageConfigs = safeArray(state.huobao_configs?.image?.items);
|
||||||
|
const videoConfigs = safeArray(state.huobao_configs?.video?.items);
|
||||||
|
const runtime = state.runtime || {};
|
||||||
|
const systemModels = safeArray(state.system_model_profiles);
|
||||||
|
const cards = [
|
||||||
|
{
|
||||||
|
label: "语言模型",
|
||||||
|
summary: `${formatNumber(systemModels.length)} 条系统模型 / ${formatNumber(textConfigs.length)} 条文本接入`,
|
||||||
|
hint: "主 Agent、策略分析和文案生成默认都走这组配置。",
|
||||||
|
anchorId: "admin-system-models-anchor"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "ASR",
|
||||||
|
summary: runtime.asr?.configured ? `已配置 · ${runtime.asr?.active_device || runtime.asr?.runtime_device_mode || "auto"}` : "未配置",
|
||||||
|
hint: "语音转文字入口,当前会显示实际运行设备和模型。",
|
||||||
|
anchorId: "admin-model-runtime-asr-anchor"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "文生图",
|
||||||
|
summary: `${formatNumber(imageConfigs.length)} 条图片配置`,
|
||||||
|
hint: "封面图、海报图和图片生成都在这里维护。",
|
||||||
|
anchorId: "admin-model-image-anchor"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "图生图",
|
||||||
|
summary: `${formatNumber(imageConfigs.length)} 条图片配置`,
|
||||||
|
hint: "图生图和素材加工与文生图共用同一组图片模型配置。",
|
||||||
|
anchorId: "admin-model-image-anchor"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "生视频",
|
||||||
|
summary: `${formatNumber(videoConfigs.length)} 条视频配置`,
|
||||||
|
hint: "AI 视频、Seedance 2.0 和火山视频引擎统一从这里接。",
|
||||||
|
anchorId: "admin-model-video-anchor"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
return `
|
||||||
|
<div class="panel pad">
|
||||||
|
<div class="panel-head">
|
||||||
|
<div>
|
||||||
|
<h3>统一能力总览</h3>
|
||||||
|
<div class="panel-subtitle">先看每类模型能力当前是否具备可用配置,再点进去做管理员维护。</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layout-grid grid-2">
|
||||||
|
${cards.map((item) => `
|
||||||
|
<div class="task-item compact">
|
||||||
|
<h4>${escapeHtml(item.label)}</h4>
|
||||||
|
<p>${escapeHtml(item.hint)}</p>
|
||||||
|
<div class="task-meta">
|
||||||
|
<span class="tag blue">${escapeHtml(item.summary)}</span>
|
||||||
|
<span class="tag clickable-tag" data-action="focus-admin-model-access" data-anchor-id="${escapeHtml(item.anchorId)}">前往配置</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`).join("")}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
function renderAdminModelAccessPanel() {
|
function renderAdminModelAccessPanel() {
|
||||||
return `
|
return `
|
||||||
<div id="admin-model-access-anchor">
|
<div id="admin-model-access-anchor">
|
||||||
@@ -5885,6 +5948,7 @@ function renderAdminModelAccessPanel() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div style="margin-top:18px;">${renderAdminModelCapabilityOverviewPanel()}</div>
|
||||||
${renderAdminModelRuntimePanel()}
|
${renderAdminModelRuntimePanel()}
|
||||||
<div style="margin-top:18px;">${renderAdminSystemModelPanel()}</div>
|
<div style="margin-top:18px;">${renderAdminSystemModelPanel()}</div>
|
||||||
<div style="margin-top:18px;">${renderAdminHuobaoConfigPanel("text", "文本模型服务", "大模型文本、策略、文案与分析模型统一在这里维护。")}</div>
|
<div style="margin-top:18px;">${renderAdminHuobaoConfigPanel("text", "文本模型服务", "大模型文本、策略、文案与分析模型统一在这里维护。")}</div>
|
||||||
|
|||||||
@@ -273,11 +273,17 @@ test("admin workbench exposes a dedicated model access workspace and actions", (
|
|||||||
assert.match(loadControls, /\/v2\/admin\/model-access\/overview/);
|
assert.match(loadControls, /\/v2\/admin\/model-access\/overview/);
|
||||||
assert.match(admin, /运行时接入/);
|
assert.match(admin, /运行时接入/);
|
||||||
assert.match(admin, /统一模型配置/);
|
assert.match(admin, /统一模型配置/);
|
||||||
|
assert.match(admin, /统一能力总览/);
|
||||||
assert.match(admin, /语言模型/);
|
assert.match(admin, /语言模型/);
|
||||||
assert.match(admin, /ASR/);
|
assert.match(admin, /ASR/);
|
||||||
assert.match(admin, /文生图/);
|
assert.match(admin, /文生图/);
|
||||||
assert.match(admin, /图生图/);
|
assert.match(admin, /图生图/);
|
||||||
assert.match(admin, /生视频/);
|
assert.match(admin, /生视频/);
|
||||||
|
assert.match(admin, /data-action="focus-admin-model-access"/);
|
||||||
|
assert.match(admin, /admin-system-models-anchor/);
|
||||||
|
assert.match(admin, /admin-model-runtime-asr-anchor/);
|
||||||
|
assert.match(admin, /admin-model-image-anchor/);
|
||||||
|
assert.match(admin, /admin-model-video-anchor/);
|
||||||
assert.match(admin, /系统模型/);
|
assert.match(admin, /系统模型/);
|
||||||
assert.match(admin, /文生图 \/ 图生图模型服务/);
|
assert.match(admin, /文生图 \/ 图生图模型服务/);
|
||||||
assert.match(admin, /生视频模型服务/);
|
assert.match(admin, /生视频模型服务/);
|
||||||
|
|||||||
Reference in New Issue
Block a user