18 KiB
渠道、模型与调度后台页面草图
这份文档是目标页面规格,不代表页面已经实现。当前只用于确认信息架构和控件职责,画布代码不在范围内。
页面总数
最终建议 8 个后台页面。模型发现不是独立页面,而是渠道管理页面中的主动操作。
后台
|
|-- 01 渠道管理 连接、凭证、主动发现、供应商模型映射
|-- 02 模型管理 公开模型目录、分辨率、能力、上架状态
|-- 03 分组管理 模型与渠道绑定、渠道优先级、路由策略
|-- 04 渠道健康 探活、成功率、延迟、容量、熔断
|-- 05 任务中心 任务状态、每次尝试、取消、重试、结果
|-- 06 人工对账 处理供应商结果未知的任务
|-- 07 价格与套餐 价格规则、金币套餐、数量和并发权益
`-- 08 审计日志 配置变更、调度决策、任务和结算记录
其中 01-06、08 是运行闭环;07 是计费闭环。价格、数量上限、并发上限不再放在“新增模型产品”里。
总体关系
渠道管理
| 点击“拉取模型”
v
模型发现候选 --勾选并加入--> 模型管理
|
| 管理公开参数并主动上架
v
分组管理
|
| 选择渠道并排序
v
路由策略
|
用户选择公开模型 ------------+
v
智能调度
|
过滤 -> 排序 -> 选路
|
任务队列 -> 任务执行
| |
可确认失败 结果未知
| |
故障切换 人工对账
核心数据边界:
- 公开模型 ID 是平台对用户展示和匹配的 ID。
- 供应商请求模型 ID 只在渠道请求时使用,不能和公开模型 ID 合并。
- 分组 ID 由系统生成,管理员不手填“渠道组 ID”。
- 模型发现只产生候选,不自动建模型、不自动上架、不自动进分组。
01 渠道管理
职责保持现有页面范围不变:管理连接、凭证、渠道内模型和供应商请求映射。
列表
+--------------------------------------------------------------------------------+
| 渠道管理 [搜索渠道] [状态 v] [+ 新增渠道] |
+--------------------------------------------------------------------------------+
| 渠道名称 | 类型 | 地址 | 启用 | 模型数 | 健康 | 最近拉取 | 操作 |
|----------|------|------|------|--------|------|----------|-------------------|
| 渠道 A | 兼容 | ... | 开 | 12 | 正常 | 10:20 | [详情] [探活] [...] |
+--------------------------------------------------------------------------------+
| 说明:模型发现必须由管理员点击“拉取模型”,保存渠道时不得隐式请求上游。 |
+--------------------------------------------------------------------------------+
新增/编辑渠道抽屉
+----------------------------------+
| 新增渠道 X |
+----------------------------------+
| 渠道名称 [________________] | 输入框,管理员自定义名称
| 接口类型 [OpenAI 兼容 v] | 下拉框
| 请求地址 [https://... ] | 完整 URL,例如 https://example.com/v1
| API Key [****************] | 密码框;编辑留空表示沿用原凭证
| 启用状态 [开关 ] | 是否允许调度使用
| 请求超时 [______] 秒 | 数字框,正整数
| |
| [保存] [取消] |
+----------------------------------+
渠道详情中的模型发现
+--------------------------------------------------------------------------------+
| 渠道 A / 模型 [拉取模型列表] |
+--------------------------------------------------------------------------------+
| 上次请求:10:20 请求路径:/v1/models 状态:已发起 / 成功 |
| |
| [ ] 供应商模型 ID 状态 已加入渠道模型数 操作 |
| [ ] vendor-model-a 新候选 - [加入渠道] |
| [x] vendor-model-b 已加入 1 [查看映射] |
+--------------------------------------------------------------------------------+
| 只有点击“拉取模型列表”才请求上游。勾选结果只加入该渠道,不自动创建公开模型。 |
+--------------------------------------------------------------------------------+
渠道模型映射
+----------------------------------------------------------------+
| 渠道内模型 / 请求映射 |
+----------------------------------------------------------------+
| 平台公开模型 ID [选择公开模型 v] |
| 供应商请求模型 ID [________________] |
| 说明:公开 ID 与请求 ID 相同也要明确保存;不同则只转换请求值。 |
| [保存] [取消] |
+----------------------------------------------------------------+
控件规则:地址和 API Key 是输入框;类型和状态是下拉/开关;模型发现是独立按钮;候选模型是复选框;映射中的公开模型使用下拉框,供应商请求 ID 使用输入框。
02 模型管理
模型页面不再叫“新增模型产品”。它管理平台公开模型目录,不管理渠道连接、不管理价格套餐、不管理渠道组。
列表
+--------------------------------------------------------------------------------+
| 模型管理 [搜索公开 ID/名称] [状态 v] [能力 v] [从候选导入] |
+--------------------------------------------------------------------------------+
| 公开模型 ID | 展示名称 | 能力 | 分辨率 | 支持渠道 | 状态 | 最近发现 | 操作 |
|-------------|----------|------|--------|----------|------|----------|-----------|
| image-pro | 图像专业 | 图像 | 1K/2K | 3 | 上架 | 10:20 | [编辑] [...]|
+--------------------------------------------------------------------------------+
| 注意:列表展示“支持渠道数”,不在此处填写渠道组 ID、基础价格或并发上限。 |
+--------------------------------------------------------------------------------+
导入候选
+----------------------------------------------------------------+
| 从发现候选导入 X |
+----------------------------------------------------------------+
| 来源渠道 [全部渠道 v] |
| [ ] vendor-model-a 供应商 A 最近发现:今天 10:20 |
| [ ] vendor-model-b 供应商 B 最近发现:今天 10:18 |
| |
| [导入为草稿] [取消] |
+----------------------------------------------------------------+
导入后是草稿;管理员必须在编辑抽屉中确认参数,再点击“上架”。
模型编辑抽屉
+--------------------------------------------+
| 编辑公开模型 X |
+--------------------------------------------+
| 公开模型 ID [image-pro ] | 只读,来自发现候选
| 展示名称 [图像专业 ] | 输入框
| 能力 [图像 v] [编辑 v] | 多选框/标签选择
| |
| 分辨率配置 [+ 添加] |
| # 名称 支持比例 操作 |
| 1 [1024x1024 ] [1:1 v] [删除] |
| 2 [1536x1024 ] [1:1 v] [删除] |
| 3 [2048x1152 ] [16:9 v] [删除] |
| |
| 上架状态 [草稿 v] | 草稿 / 上架 / 下架
| |
| [保存草稿] [上架] [取消] |
+--------------------------------------------+
分辨率的“支持比例”必须是主题化多选控件,选项例如 1:1、16:9、9:16、4:3、3:4;不要使用逗号分隔字符串输入。每一行使用稳定 key,新增、删除和编辑时不能丢失焦点。
此页面明确不出现:基础价格、数量上限、并发上限、渠道组 ID、创建后自动上架、供应商请求模型 ID。
03 分组管理
分组是路由池。它决定“一个公开模型可以由哪些渠道承载,以及渠道按什么顺序尝试”。
分组列表
+--------------------------------------------------------------------------------+
| 分组管理 [搜索分组] [+ 新建分组] |
+--------------------------------------------------------------------------------+
| 分组名称 | 状态 | 公开模型数 | 路由渠道数 | 策略 | 更新时间 | 操作 |
|----------|------|------------|------------|------|----------|------------------|
| 默认图像 | 启用 | 4 | 6 | 优先级| 10:25 | [编辑] [停用] [...]|
+--------------------------------------------------------------------------------+
新建/编辑分组
+----------------------------------------------------------------+
| 编辑分组 X |
+----------------------------------------------------------------+
| 分组名称 [默认图像 ] |
| 分组 ID [group_xxx ] 只读,系统生成 |
| 状态 [启用 v] |
| 调度策略 [优先级优先 + 健康兜底 v] |
| |
| 支持的公开模型 [+ 添加模型] |
| [image-pro v] |
| |
| 渠道候选顺序 |
| 排序 渠道 请求模型 ID 健康 负载 启用 |
| [=]1 渠道 A vendor-model-a 正常 32% [开] |
| [=]2 渠道 B vendor-model-b 正常 18% [开] |
| [=]3 渠道 C vendor-model-c 熔断 -- [关] |
| |
| [保存] [取消] |
+----------------------------------------------------------------+
“支持的公开模型”使用多选下拉;每个模型下面显示可用渠道。渠道使用复选框加入候选池,再用拖拽排序或优先级数字框排序;请求模型 ID、健康、负载是只读信息。一个渠道可以出现在多个分组中,并且在不同分组中有不同顺序。
推荐策略含义:
- 第一级:过滤模型上架、分组启用、能力/分辨率、渠道启用、映射存在、容量、熔断。
- 第二级:按这里的渠道顺序选首选渠道。
- 第三级:同级或首选不可用时参考健康状态、并发负载、失败率、延迟。
04 渠道健康
+--------------------------------------------------------------------------------+
| 渠道健康 [渠道 v] [健康状态 v] [刷新] |
+--------------------------------------------------------------------------------+
| 渠道 | 状态 | 成功率 | P95 延迟 | 当前并发 | 容量 | 熔断 | 最近探活 | 操作 |
|------|------|--------|----------|----------|------|------|----------|----------|
| A | 正常 | 99.2% | 840ms | 2/10 | 80% | 关闭 | 10:26 | [探活] |
| B | 降级 | 91.4% | 2.1s | 8/8 | 100% | 半开 | 10:25 | [详情] |
+--------------------------------------------------------------------------------+
探活按钮必须显示实际请求是否发起、请求路径,以及中文化的失败原因:地址解析、网络连接、HTTP 权限/状态、返回内容。健康配置可以放在详情抽屉:失败阈值、冷却时间、半开探测数量;保存不触发模型拉取。
05 任务中心
+--------------------------------------------------------------------------------+
| 任务中心 [任务 ID/模型] [分组 v] [状态 v] [时间范围] [查询] |
+--------------------------------------------------------------------------------+
| 任务 ID | 公开模型 | 分组 | 状态 | 当前渠道 | 尝试次数 | 创建时间 | 操作 |
|---------|----------|------|------|----------|----------|----------|------------|
| task_001| image-pro| 默认 | 执行中| 渠道 A | 1/3 | 10:27 | [详情] |
| task_002| image-pro| 默认 | 未知 | 渠道 B | 1/3 | 10:20 | [去对账] |
+--------------------------------------------------------------------------------+
详情页显示:用户提交的公开模型和参数、当时的分组、候选渠道顺序、策略版本快照、每次请求的开始/结束时间、供应商请求模型 ID、HTTP 结果、结算状态。
按钮规则:排队中可取消;确认失败的任务可按失败预算重试;结果未知的任务只能进入人工对账,不能直接盲重试或重复扣费。
06 人工对账
+--------------------------------------------------------------------------------+
| 人工对账 [任务 ID] [供应商 v] [未知原因 v] [查询] |
+--------------------------------------------------------------------------------+
| 任务 ID | 模型 | 渠道 | 发起时间 | 未知原因 | 金币状态 | 等待时长 | 操作 |
|---------|------|------|----------|----------|----------|----------|--------------|
| task_002| ... | B | 10:20 | 超时 | 已冻结 | 8m | [查看] |
+--------------------------------------------------------------------------------+
+--------------------------------------------+
| 对账 task_002 X |
+--------------------------------------------+
| 本地状态 结果未知 |
| 供应商请求 已发起,未收到最终响应 |
| 请求路径/ID /v1/... / req_xxx |
| 供应商证据 [查看原始响应/回调记录] |
| 当前结算 待确认 |
| 管理员备注 [________________________] |
| |
| [确认成功] [确认失败] [取消] |
+--------------------------------------------+
确认成功后只结算一次;确认失败后释放或退回对应费用,并根据策略决定是否允许下一候选渠道继续执行。所有确认动作写入审计日志。
07 价格与套餐
这个页面是计费配置,不参与模型发现和渠道选择。
+--------------------------------------------------------------------------------+
| 价格与套餐 [价格规则] [套餐] [+ 新增] |
+--------------------------------------------------------------------------------+
| 价格规则:公开模型 | 分辨率 | 计费单位 | 单价 | 生效状态 | 更新时间 | 操作 |
| image-pro | 1K | 次 | 10 | 生效 | 10:00 | [编辑] |
+--------------------------------------------------------------------------------+
| 套餐:名称 | 金币数 | 单任务数量上限 | 并发上限 | 状态 | 操作 |
| 基础套餐 | 1000 | 20 | 2 | 生效 | [编辑] |
+--------------------------------------------------------------------------------+
价格规则表单:公开模型下拉、分辨率下拉、计费单位下拉、单价数字框、生效状态开关。
套餐表单:套餐名称输入框、金币数量数字框、单任务数量上限数字框、并发上限数字框、状态开关。这里不出现渠道地址、API Key、渠道组 ID、供应商请求模型 ID。
08 审计日志
+--------------------------------------------------------------------------------+
| 审计日志 [对象类型 v] [操作者] [时间范围] [查询] |
+--------------------------------------------------------------------------------+
| 时间 | 操作者 | 对象 | 动作 | 结果 | 摘要 | 详情 |
|------|--------|------|------|------|------|---------------------------------------|
| 10:27| admin | 分组 | 修改 | 成功 | 渠道 B 优先级 2 -> 1 | [查看] |
| 10:20| system | 任务 | 调度 | 成功 | task_001 选择渠道 A | [查看] |
+--------------------------------------------------------------------------------+
详情必须字段化展示:对象、前值、后值、策略版本、候选渠道、最终渠道、任务尝试、结算动作。禁止直接把原始 JSON 当页面主体;原始内容只能作为可展开的辅助信息。
明确删除的旧逻辑
删除:新增模型产品
删除:模型表单中的渠道组 ID
删除:模型表单中的基础价格
删除:模型表单中的数量上限
删除:模型表单中的并发上限
删除:保存模型时隐式拉取供应商
删除:发现模型后自动创建映射、自动上架、自动加入分组
保留:分辨率名称和支持比例配置
一期实现顺序
01 渠道管理中的主动发现与映射
-> 02 模型目录与分辨率配置
-> 03 分组路由池与渠道优先级
-> 04 健康、容量、熔断数据
-> 05 任务中心与路由快照
-> 06 未知结果人工对账
-> 08 审计日志
-> 07 价格与套餐(有计费需求时启用)