505 lines
29 KiB
Markdown
505 lines
29 KiB
Markdown
# 元境幻生管理台一期菜单与交互图示规划
|
|
|
|
> 本文是管理台历史页面蓝本。当前长期目标的唯一权威入口是 [`docs/miragenflow-long-task-goal-prompt.md`](docs/miragenflow-long-task-goal-prompt.md);如旧蓝本与综合目标冲突,以综合目标为准,尤其是渠道只支持 OpenAI、使用统一弹窗和三个可自由切换 Tab。
|
|
|
|
> 本文是管理台重构的交互基线。本轮只规划,不改变后台业务接口。
|
|
> ASCII 图即 SSII 页面图;Mermaid 图用于菜单、权限和跨页面状态流转。
|
|
|
|
> 实现同步:当前代码已接入渠道/渠道组/模型产品编辑抽屉、渠道健康全部探活、审批状态筛选与驳回、任务详情/调用记录;认证消息列表不返回目标哈希。详情请求失败会保留抽屉并提供重试,设置与调用记录抽屉显式支持关闭按钮、遮罩和 ESC。管理台请求在 401 刷新后的重试会复用原始请求头和幂等键,渠道生成测试会按模型映射把平台显示模型 ID 转为供应商请求模型 ID。上述交互仍需浏览器逐页验收,未验证项保留在 `pending-test.mdx`。
|
|
|
|
## 1. 本轮结论与边界
|
|
|
|
### 1.1 必须修复的问题
|
|
|
|
| 问题 | 规划结论 |
|
|
| --- | --- |
|
|
| 系统概览 403、白板无权限 | 统一角色到权限映射;进入后台后先加载 `me` 和权限,再决定页面;无权限页必须提供返回总览/重新登录按钮。 |
|
|
| 用户管理没有新增用户 | 增加“新增用户”按钮和抽屉;管理员创建的用户默认状态由表单选择,密码只显示一次并强制首次修改。 |
|
|
| 认证消息换行 | 内容列使用多行预览抽屉,模板编辑使用 Textarea;表格不显示超长原文,只显示摘要和“查看详情”。 |
|
|
| 消息供应商 | 本期不接入、不显示在主菜单;保留后端适配器和页面占位,不提供未完成的配置表单。 |
|
|
| 渠道无法新增 | 页面只展示列表和“新增渠道”按钮;点击后打开弹窗/抽屉,不在首屏铺开全部字段。 |
|
|
| 渠道健康英文 | `healthy/degraded/open/disabled` 统一映射为“健康/降级/熔断/已停用”,状态用中文标签和颜色。 |
|
|
| 渠道分组、模型产品 | 分组先选渠道再排序;模型产品先选公开 ID、档位、能力、分辨率、价格和渠道组,未绑定渠道组时默认下架。 |
|
|
| capability 列异常换行 | 能力使用中文标签和固定宽度;超过宽度显示 `+N`,悬停或详情抽屉显示完整能力,不让 JSON 撑高表格。 |
|
|
| 价格规则不能调整 | 价格表显示版本、当前生效状态和 If-Match 版本;“调整价格”弹窗提交后刷新列表,冲突时显示当前版本并要求重载。 |
|
|
|
|
### 1.2 一期不进入可见菜单
|
|
|
|
- 消息供应商、消息模板:只保留认证消息列表和发送状态;供应商接入等待第三方邮件/SMS 文档。
|
|
- 视频、动画、真实 3D、团队、内容治理、插件市场、Local Agent、远程 Prompt:不在管理台或用户端出现入口。
|
|
- 3D 仅保留后台能力开关字段,关闭时返回 `CAPABILITY_NOT_ENABLED`。
|
|
|
|
## 2. 一级/二级菜单规划
|
|
|
|
后台左侧采用可折叠的二级菜单。一级标题只负责分组,不直接承载业务表格;二级菜单才是可访问页面。
|
|
|
|
```text
|
|
元境幻生管理台
|
|
├─ 01 总览
|
|
│ └─ 系统概览 /admin/dashboard/base admin:read
|
|
├─ 02 用户与认证
|
|
│ ├─ 用户管理 /admin/users admin:security
|
|
│ ├─ 认证消息 /admin/auth-messages admin:security
|
|
│ └─ 管理员安全 /admin/security/mfa admin:security
|
|
├─ 03 渠道与模型
|
|
│ ├─ 渠道管理 /admin/channels admin:read
|
|
│ ├─ 渠道健康 /admin/channel-health admin:read
|
|
│ ├─ 渠道分组 /admin/channel-groups admin:read
|
|
│ ├─ 模型产品 /admin/model-products admin:read
|
|
│ └─ 价格规则 /admin/pricing admin:read
|
|
├─ 04 计费与套餐
|
|
│ ├─ 金币单位与换算 /admin/billing/units admin:finance
|
|
│ ├─ 余额与账本 /admin/billing admin:finance
|
|
│ ├─ 套餐管理 /admin/plans admin:read
|
|
│ ├─ 充值订单 /admin/recharges admin:finance
|
|
│ ├─ 支付事件 /admin/payments admin:finance
|
|
│ ├─ 支付适配器 /admin/payment-providers admin:finance
|
|
│ └─ 审批中心 /admin/approvals admin:finance
|
|
├─ 05 任务与运行
|
|
│ ├─ 任务中心 /admin/tasks admin:read
|
|
│ └─ 实时指标 /admin/ws-metrics admin:read
|
|
├─ 06 存储与系统
|
|
│ ├─ 存储策略 /admin/storage admin:read
|
|
│ └─ 系统设置 /admin/settings admin:security
|
|
└─ 07 审计
|
|
├─ 日志大板 /admin/audit admin:audit
|
|
└─ 详细日志 /admin/audit-logs admin:audit
|
|
```
|
|
|
|
### 2.1 菜单交互规则
|
|
|
|
1. 一级菜单支持展开/收起;收起时完全隐藏侧栏,不保留窄图标栏。
|
|
2. 当前二级路由高亮;刷新后根据 URL 自动展开对应一级菜单。
|
|
3. 没有权限的二级项不显示,不允许先显示后跳 403。
|
|
4. 页面接口 403 时保留页面壳,显示“权限不足”卡片,不出现白板。
|
|
5. 侧栏底部固定放“帮助/退出登录”;供应商消息不出现在本期导航。
|
|
6. `admin:read` 只允许查看;新增、编辑、启停、调价等操作额外检查 `admin:write` 或 `admin:finance`。
|
|
7. 所有写操作统一使用弹窗/抽屉,成功后刷新对应列表并保留筛选条件。
|
|
|
|
## 3. 通用页面交互规范
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 一级菜单 / 二级菜单 面包屑 刷新 帮助 管理员菜单 |
|
|
+--------------------------------------------------------------------------------+
|
|
| 页面标题 + 描述 [搜索] [筛选] [批量操作] [新增/配置] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 标签/统计卡片 |
|
|
+--------------------------------------------------------------------------------+
|
|
| 表格:选择 | 关键字段 | 状态 | 更新时间 | 操作(详情/编辑/启停/更多) |
|
|
| 固定列宽、中文状态、长文本摘要、分页、空态、错误态、重试 |
|
|
+--------------------------------------------------------------------------------+
|
|
| 右侧抽屉/弹窗:字段分组 | 校验提示 | 取消 | 保存/提交 |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
页面必须具备:加载态、空态、接口错误态、403 态、提交中态、成功 Toast、版本冲突态;禁止把所有配置字段直接堆在首屏。
|
|
|
|
## 4. 管理员登录与错误页 SSII
|
|
|
|
### 4.1 `/admin/login`
|
|
|
|
```text
|
|
+-----------------------------------------------+
|
|
| 元境幻生管理台 |
|
|
| 管理员登录 |
|
|
| 邮箱 [admin@admin.com.......................] |
|
|
| 密码 [••••••••••••••••......................] |
|
|
| [登录] |
|
|
| 登录失败:账号或密码不正确 / 账户已冻结 |
|
|
+-----------------------------------------------+
|
|
```
|
|
|
|
交互:登录按钮提交中禁用;MFA/CAPTCHA 开关开启时才动态插入对应步骤;成功进入 `/admin/dashboard/base`,不直接进入上一次无权限页面。
|
|
|
|
### 4.2 `/403` 与 `/404`
|
|
|
|
```text
|
|
+-------------------------------------------------------------+
|
|
| 403 你没有权限访问此页面 |
|
|
| 当前角色:{role} 需要权限:{scope} |
|
|
| [返回系统概览] [重新登录] [切换管理员] |
|
|
+-------------------------------------------------------------+
|
|
```
|
|
|
|
## 5. 业务页面 SSII 图示
|
|
|
|
### 5.1 `/admin/dashboard/base` 系统概览
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 系统概览 [时间范围▼] [刷新] [导出摘要] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 用户总数 | 活跃用户 | 今日任务 | 今日消耗 | 队列等待 | 渠道告警 |
|
|
+--------------------------------------------------------------------------------+
|
|
| 任务趋势折线图 | 渠道健康卡片 |
|
|
| 图片/音频/工具任务 · 成功率 · 平均耗时 | 健康 12 降级 2 熔断 1 |
|
|
+--------------------------------------------------------------------------------+
|
|
| 待处理事项:渠道异常 / unknown 任务 / 审批 / WebDAV 失败 [查看全部] |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
交互:卡片点击进入带筛选条件的二级页面;无权限时显示权限卡片而非白板;接口失败可单独重试。
|
|
|
|
### 5.2 `/admin/users` 用户管理
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 用户管理 [新增用户] [导出] |
|
|
| [邮箱/手机号/ID 搜索........] [状态▼] [创建时间▼] [筛选] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 选择 | 用户 | 联系方式 | 状态 | MFA | 余额 | 最近登录 | 操作 |
|
|
| □ | ... | 脱敏 | 正常 | 关 | ... | ... | [详情] [冻结] [更多] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 新增用户抽屉:邮箱/手机号、昵称、初始密码、状态、是否发送欢迎消息 [保存] |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
交互:新增成功显示一次性初始密码;冻结/解冻和密码重置需要确认并写入审计;详情抽屉分账户、任务、账本、权益和审计 Tab。
|
|
|
|
### 5.3 `/admin/auth-messages` 认证消息
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 认证消息 [状态▼] [通道▼] [时间▼] [刷新] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 目标(脱敏) | 类型 | 模板 | 状态 | 重试次数 | 创建时间 | 操作 |
|
|
| ... | 邮件 | 注册 | 成功 | 0 | ... | [查看详情] [重试] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 消息详情抽屉:目标、用途、状态时间线、错误摘要、内容预览(保留换行) |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
交互:长文本只在抽屉中 `pre-wrap` 展示;重试需二次确认;不展示供应商密钥和未接入的供应商配置。
|
|
|
|
### 5.4 `/admin/security/mfa` 管理员安全
|
|
|
|
```text
|
|
+---------------------------------------------------------------+
|
|
| 管理员安全 |
|
|
| 当前管理员 | 角色 | MFA 状态 | 全局策略 |
|
|
| [启用 MFA] [验证设备] [关闭 MFA] |
|
|
| 恢复码:仅在生成后显示一次;关闭需要当前 TOTP + 原因 |
|
|
+---------------------------------------------------------------+
|
|
```
|
|
|
|
### 5.5 `/admin/channels` 渠道管理
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 渠道管理 [新增渠道] [批量启停] [刷新] |
|
|
| [名称/供应方式/模型 ID 搜索] [状态▼] [健康▼] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 渠道名称 | 供应方式 | 能力/状态 | 健康 | 优先级 | 更新时间 | 操作 |
|
|
| ... | OpenAI | 图片 | 健康 | 1 | ... | [详情] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 新增/编辑渠道弹窗: |
|
|
| [基础信息] [模型列表] [模型映射] |
|
|
| 基础信息:名称、完整请求地址示例、API Key;模型列表:主动拉取后勾选加入; |
|
|
| 模型映射:平台显示模型 ID ↔ 供应商请求模型 ID(可选) |
|
|
| [取消] [保存] |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
交互:首屏只显示列表和新增按钮;当前只支持 OpenAI 图片端点;拉取模型是管理员主动点击的独立动作,不在新增/编辑保存时隐式发起;模型列表与模型映射独立;密钥只写服务端密文;支持编辑回填、Tab 草稿保留、启停、凭证轮换、手动探活和版本冲突提示。渠道生成测试提交时,若存在平台显示模型 ID 到供应商请求模型 ID 的映射,必须使用供应商请求模型 ID 调用上游;无映射时沿用平台显示模型 ID。弹窗必须支持取消、右上角、遮罩和 ESC 关闭,异步成功自动关闭,失败保留表单。
|
|
|
|
### 5.6 `/admin/channel-health` 渠道健康
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 渠道健康 [全部探活] [自动刷新○] |
|
|
| [状态▼] [渠道组▼] [最近窗口▼] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 渠道 | 中文状态 | 最近探活 | 延迟 | 连续失败 | 熔断剩余 | 操作 |
|
|
| ... | 健康/降级/熔断/已停用 | ... | ... | ... | ... | [单项探活] [查看日志] |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
### 5.7 `/admin/channel-groups` 渠道分组
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 渠道分组 [新增分组] [刷新] |
|
|
| 分组 | 用途/档位 | 状态 | 渠道数 | 重试预算 | 版本 | 操作 |
|
|
+--------------------------------------------------------------------------------+
|
|
| 旗舰图像组 | 旗舰 | 启用 | 4 | 3 | v5 | [配置顺序] [启停] [详情] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 分组编辑抽屉:可用渠道池 → 已选渠道排序(拖拽) → 重试预算 → 保存 |
|
|
| 渠道 1 ──> 渠道 2 ──> 渠道 3 ──> 渠道 4 [模拟故障切换] |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
### 5.8 `/admin/model-products` 模型产品
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 模型产品 [新增产品] [发布/下架] |
|
|
| 公开 ID | 档位 | 能力 | 分辨率 | 绑定分组 | 价格 | 状态 | 版本 | 操作 |
|
|
| basic-image-v1 | 基础 | 文生图/图生图 | 低/中 | 基础组 | 10 | 上架 | v3 | [编辑] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 产品抽屉:公开 ID/名称/档位 → 能力多选 → 分辨率矩阵 → 渠道组 → 价格预览 |
|
|
| 能力标签超出宽度显示 +N,点击“查看全部”打开能力详情,不撑高表格。 |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
### 5.9 `/admin/pricing` 价格规则
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 价格规则 [新增规则] [刷新] |
|
|
| 产品 | 分辨率 | 数量阶梯 | 基础价格 | 倍率 | 生效版本 | 状态 | 操作 |
|
|
+--------------------------------------------------------------------------------+
|
|
| ... | 中 | 1-4 | 10 | 1.0 | v7 | 生效 | [调整价格] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 调价弹窗:新价格/倍率/生效时间/原因/预览;提交 If-Match;冲突时显示当前版本。 |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
### 5.10 `/admin/billing/units` 金币单位与换算
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------+
|
|
| 金币单位 [编辑单位] |
|
|
| 图标 🪙 | 名称 金币 | 短码 COIN | 精度 0 | 换算比例 1:1 | 版本 v2 |
|
|
+--------------------------------------------------------------------------+
|
|
| 换算规则 [编辑单位] |
|
|
| 支付货币 | 金币比例 | 舍入方式 | 生效版本 | [编辑] |
|
|
+--------------------------------------------------------------------------+
|
|
```
|
|
|
|
### 5.11 `/admin/plans` 套餐管理
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 套餐管理 [新增套餐] [上架/下架] |
|
|
| 名称 | 时长 | 包含金币 | 售价 | 并发 | 队列级别 | 可用渠道组 | 状态 | 操作 |
|
|
+--------------------------------------------------------------------------------+
|
|
| ... | 30天 | 1000 | ¥99 | 2 | 1 | 基础/高级 | 上架 | [编辑] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 套餐抽屉:名称/介绍/时长/包含金额/购买金额/并发/队列优先级/保留期/渠道组权益 |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
### 5.12 `/admin/billing`、`/admin/recharges`、`/admin/payments`、`/admin/approvals`
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 余额与账本 / 充值订单 / 支付事件 / 审批中心 [Tab 切换] [筛选] [导出] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 余额与账本:用户 | available | reserved | reserve/settle/release/refund | 时间 |
|
|
| 充值订单:订单 | 用户 | 金额 | 状态 | mock/人工 | 创建时间 | [详情] |
|
|
| 支付事件:eventId | 订单 | 签名 | 金额 | 状态 | 收到时间 | [对账] |
|
|
| 审批中心:类型 | 申请人 | 审批人 | 状态 | 过期时间 | [审批] [驳回] |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
### 5.13 `/admin/payment-providers` 支付适配器
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 支付适配器 [新增适配器] [刷新] |
|
|
| 名称 | 模式(mock/adapter) | 状态 | 密钥状态 | 版本 | 更新时间 | 操作 |
|
|
+--------------------------------------------------------------------------------+
|
|
| ... | mock | 启用 | 已配置 | v2 | ... | [编辑] [探活] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 适配器抽屉:名称/模式/回调地址/签名密钥(仅服务端保存)/启用状态 |
|
|
| [测试 webhook] [保存] |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
交互:仅保留 mock、人工充值和支付 adapter 接口;第三方支付文档到位后再接入具体 provider。
|
|
|
|
### 5.14 `/admin/tasks` 任务中心
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 任务中心 [状态▼] [类型▼] [模型▼] [刷新] |
|
|
| taskId | 用户 | 类型 | 公开模型 | 状态 | 预扣/实扣 | attempt | 更新时间 | 操作 |
|
|
+--------------------------------------------------------------------------------+
|
|
| ... | ... | 图片 | basic-v1 | 运行中 | 10/-- | 2 | ... | [详情] [取消] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 任务详情抽屉:输入快照 → attempt 时间线 → 输出 → 账本 → 脱敏错误 → [重试/对账] |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
### 5.15 `/admin/ws-metrics`
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------+
|
|
| 实时指标 [时间窗▼] [自动刷新○] [断线重连] |
|
|
| 在线 WS | 活跃订阅 | 事件吞吐 | 轮询降级 | 断线率 | 心跳超时 | 队列深度 |
|
|
+--------------------------------------------------------------------------+
|
|
| 时间序列:WS 连接 / 任务事件 / fallback 轮询 / Redis 租约 |
|
|
+--------------------------------------------------------------------------+
|
|
```
|
|
|
|
### 5.16 `/admin/storage` 与 `/admin/settings`
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 存储策略 [保存策略] [立即 GC] |
|
|
| 本地 staging TTL | WebDAV 保留期 | 最大延长 | 归档模式 | 扫描策略 | 版本 |
|
|
+--------------------------------------------------------------------------------+
|
|
| WebDAV 连接 | manifest | queued/running/conflict | 归档/删除任务 | [详情] |
|
|
| 系统设置 Tab:功能开关、用户认证增强、管理员安全增强、默认限流、审计保留期 |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
### 5.17 `/admin/audit` 与 `/admin/audit-logs`
|
|
|
|
```text
|
|
+--------------------------------------------------------------------------------+
|
|
| 审计日志 [导出摘要] [校验链] |
|
|
| 时间 | 操作者 | 角色 | 动作 | 对象 | requestId | 结果 | 操作 |
|
|
+--------------------------------------------------------------------------------+
|
|
| ... | admin@... | super_admin | pricing.update | ... | ... | 成功 | [详情] |
|
|
+--------------------------------------------------------------------------------+
|
|
| 详情抽屉:before/after 脱敏摘要、IP、关联任务、hash、前后链校验状态 |
|
|
+--------------------------------------------------------------------------------+
|
|
```
|
|
|
|
`/admin/audit` 是日志大板,负责分类、HTTP 结果和趋势概览;`/admin/audit-logs` 是详细日志列表,负责按业务分类查看具体操作人、请求来源和详情抽屉。两者共用 `audit-logs` 读取接口,但必须作为两个可见路由分别验收。
|
|
|
|
### 5.18 延期页面(不出现在菜单)
|
|
|
|
```text
|
|
消息供应商 /message-providers、消息模板 /message-templates
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ 本期暂不接入第三方邮件/SMS provider │
|
|
│ 认证消息仍可查看 outbox 状态;供应商配置待文档确认后启用。 │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
## 6. 管理台 Mermaid 图示
|
|
|
|
### 6.1 菜单与权限
|
|
|
|
~~~mermaid
|
|
flowchart TB
|
|
LOGIN[管理员邮箱+密码登录] --> SESSION[admin audience 会话]
|
|
SESSION --> POLICY{增强开关}
|
|
POLICY -->|MFA/CAPTCHA 关闭| RBAC[加载角色与 scopes]
|
|
POLICY -->|任一开启| CHALLENGE[按策略追加挑战]
|
|
CHALLENGE --> RBAC
|
|
RBAC --> ROOT[管理台壳层]
|
|
ROOT --> G[总览]
|
|
ROOT --> U[用户与认证]
|
|
ROOT --> C[渠道与模型]
|
|
ROOT --> B[计费与套餐]
|
|
ROOT --> T[任务与运行]
|
|
ROOT --> S[存储与系统]
|
|
ROOT --> A[审计]
|
|
U --> U1[用户管理]
|
|
U --> U2[认证消息]
|
|
U --> U3[管理员安全]
|
|
C --> C1[渠道]
|
|
C --> C2[健康]
|
|
C --> C3[分组]
|
|
C --> C4[模型产品]
|
|
C --> C5[价格规则]
|
|
B --> B1[金币/换算]
|
|
B --> B2[余额/充值/支付]
|
|
B --> B3[套餐]
|
|
B --> B4[审批]
|
|
T --> T1[任务中心]
|
|
T --> T2[WS 指标]
|
|
S --> S1[存储策略]
|
|
S --> S2[系统设置]
|
|
A --> A1[审计日志]
|
|
RBAC -.->|无 scope| FORBIDDEN[403 卡片:返回总览/重新登录]
|
|
~~~
|
|
|
|
### 6.2 渠道到模型产品的强交互流
|
|
|
|
~~~mermaid
|
|
sequenceDiagram
|
|
participant Admin as 管理员
|
|
participant UI as 管理台弹窗
|
|
participant API as Admin API
|
|
participant DB as 配置存储
|
|
Admin->>UI: 点击新增渠道
|
|
UI->>UI: 三个 Tab 共享一份草稿
|
|
Admin->>UI: 点击“拉取模型”(可选)
|
|
UI->>API: GET {baseUrl}/v1/models
|
|
API-->>UI: 候选模型列表(不自动创建映射)
|
|
Admin->>UI: 勾选模型并(可选)填写显示 ID/请求 ID 映射
|
|
UI->>API: POST/PATCH /admin/channels
|
|
API->>API: HTTPS、密钥、协议校验
|
|
API->>DB: 保存密文 + version=1
|
|
API-->>UI: 渠道摘要
|
|
Admin->>UI: 新增分组并拖拽渠道顺序
|
|
UI->>API: POST/PATCH /admin/channel-groups
|
|
API->>DB: 保存 channelIds + priorities + version
|
|
Admin->>UI: 新增模型产品
|
|
UI->>API: POST /admin/model-products
|
|
API->>API: 校验启用分组、能力、分辨率
|
|
API->>DB: 保存公开 ID/价格/路由快照
|
|
API-->>UI: 上架预览或校验错误
|
|
~~~
|
|
|
|
### 6.3 价格调整与版本冲突
|
|
|
|
~~~mermaid
|
|
stateDiagram-v2
|
|
[*] --> Loaded
|
|
Loaded --> Editing: 点击调整价格
|
|
Editing --> Submitting: 提交 If-Match(version)
|
|
Submitting --> Saved: 200 + version+1
|
|
Submitting --> Conflict: 409 VERSION_CONFLICT
|
|
Conflict --> Reloaded: 查看当前版本
|
|
Reloaded --> Editing: 重新编辑
|
|
Submitting --> Error: 422/503
|
|
Error --> Editing: 修正或重试
|
|
Saved --> Loaded: 刷新列表并保留筛选
|
|
~~~
|
|
|
|
### 6.4 后台任务监控
|
|
|
|
~~~mermaid
|
|
flowchart LR
|
|
FILTER[筛选/搜索] --> LIST[任务列表]
|
|
LIST --> DETAIL[详情抽屉]
|
|
DETAIL --> ATTEMPTS[attempt 时间线]
|
|
DETAIL --> OUTPUTS[输出/资产]
|
|
DETAIL --> LEDGER[预扣/结算/释放]
|
|
DETAIL -->|取消| CANCEL[任务取消 API]
|
|
DETAIL -->|重试| RETRY[幂等重试 API]
|
|
DETAIL -->|unknown| RECONCILE[对账 API]
|
|
CANCEL --> LIST
|
|
RETRY --> LIST
|
|
RECONCILE --> LIST
|
|
~~~
|
|
|
|
### 6.5 统一写入反馈
|
|
|
|
~~~mermaid
|
|
flowchart TD
|
|
ACTION[新增/编辑/启停/审批/调账] --> VALIDATE[前端字段校验]
|
|
VALIDATE --> API[带 If-Match + Idempotency-Key 的请求]
|
|
API -->|200/201| REFRESH[刷新当前列表/统计]
|
|
API -->|403| PERM[权限卡片]
|
|
API -->|409| VERSION[版本冲突弹窗]
|
|
API -->|422| FIELD[定位字段错误]
|
|
API -->|503| RETRY[保留表单并重试]
|
|
~~~
|
|
|
|
> 实施状态:P0 菜单/权限壳层已接入代码;用户、渠道、渠道组、模型产品和价格规则已切换为弹窗入口,认证消息详情/重试 API 已接入。管理台 401 自动刷新重试会保留原幂等键,渠道生成测试会执行显示模型 ID 到供应商请求模型 ID 的转换。完整逐页浏览器验收仍记录在 `docs/content/docs/progress/pending-test.mdx`。
|
|
|
|
## 7. 实施顺序与验收
|
|
|
|
1. **P0 壳层与权限**:修正角色 scopes、总览 403、403/404 按钮、二级菜单和面包屑。
|
|
2. **P0 渠道/模型闭环**:新增渠道弹窗、中文健康状态、分组排序、模型产品绑定、能力标签。
|
|
3. **P1 用户与认证**:新增用户抽屉、认证消息详情/多行模板展示;消息供应商页面保持隐藏。
|
|
4. **P1 计费**:金币单位、换算、价格调整、套餐和审批统一表单/版本冲突反馈。
|
|
5. **P1 任务/存储/审计**:详情抽屉、WS 指标、WebDAV 策略、审计详情。
|
|
6. **P2 视觉优化**:固定列宽、响应式抽屉、空/错/加载状态、中文标签、无障碍键盘操作。
|
|
|
|
验收必须逐页确认:
|
|
|
|
- 一级菜单可折叠,二级菜单和 URL 一致,权限不足不白屏。
|
|
- 每个新增/编辑动作都从按钮打开弹窗或抽屉,而不是把字段永久铺开。
|
|
- 渠道 → 分组 → 模型产品 → 价格规则可以连续完成并在列表中看到版本和状态。
|
|
- 用户管理可以新增、冻结、解冻、查看详情;认证消息多行内容不破坏表格布局。
|
|
- 所有状态、能力、错误码和操作按钮使用中文;长文本、能力标签、JSON 均不能撑高表格。
|
|
- 写操作成功、403、409、422、503、网络断开均有可见反馈和恢复路径。
|