Files
MiragenFlow/docs/miragenflow-channel-model-page-wireframes.md

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 价格与套餐(有计费需求时启用)