Files

29 KiB

元境幻生管理台一期菜单与交互图示规划

本文是管理台历史页面蓝本。当前长期目标的唯一权威入口是 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. 一级/二级菜单规划

后台左侧采用可折叠的二级菜单。一级标题只负责分组,不直接承载业务表格;二级菜单才是可访问页面。

元境幻生管理台
├─ 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. 通用页面交互规范

+--------------------------------------------------------------------------------+
| 一级菜单 / 二级菜单                         面包屑       刷新  帮助  管理员菜单 |
+--------------------------------------------------------------------------------+
| 页面标题 + 描述                         [搜索] [筛选] [批量操作] [新增/配置]    |
+--------------------------------------------------------------------------------+
| 标签/统计卡片                                                                  |
+--------------------------------------------------------------------------------+
| 表格:选择 | 关键字段 | 状态 | 更新时间 | 操作(详情/编辑/启停/更多)              |
|      固定列宽、中文状态、长文本摘要、分页、空态、错误态、重试                  |
+--------------------------------------------------------------------------------+
| 右侧抽屉/弹窗:字段分组 | 校验提示 | 取消 | 保存/提交                          |
+--------------------------------------------------------------------------------+

页面必须具备:加载态、空态、接口错误态、403 态、提交中态、成功 Toast、版本冲突态;禁止把所有配置字段直接堆在首屏。

4. 管理员登录与错误页 SSII

4.1 /admin/login

+-----------------------------------------------+
| 元境幻生管理台                                |
| 管理员登录                                    |
| 邮箱 [admin@admin.com.......................] |
| 密码 [••••••••••••••••......................] |
|                         [登录]                |
| 登录失败:账号或密码不正确 / 账户已冻结       |
+-----------------------------------------------+

交互:登录按钮提交中禁用;MFA/CAPTCHA 开关开启时才动态插入对应步骤;成功进入 /admin/dashboard/base,不直接进入上一次无权限页面。

4.2 /403 与 /404

+-------------------------------------------------------------+
| 403 你没有权限访问此页面                                  |
| 当前角色:{role}   需要权限:{scope}                       |
| [返回系统概览] [重新登录] [切换管理员]                     |
+-------------------------------------------------------------+

5. 业务页面 SSII 图示

5.1 /admin/dashboard/base 系统概览

+--------------------------------------------------------------------------------+
| 系统概览                       [时间范围▼] [刷新] [导出摘要]                  |
+--------------------------------------------------------------------------------+
| 用户总数 | 活跃用户 | 今日任务 | 今日消耗 | 队列等待 | 渠道告警              |
+--------------------------------------------------------------------------------+
| 任务趋势折线图                         | 渠道健康卡片                        |
| 图片/音频/工具任务 · 成功率 · 平均耗时  | 健康 12  降级 2  熔断 1             |
+--------------------------------------------------------------------------------+
| 待处理事项:渠道异常 / unknown 任务 / 审批 / WebDAV 失败     [查看全部]       |
+--------------------------------------------------------------------------------+

交互:卡片点击进入带筛选条件的二级页面;无权限时显示权限卡片而非白板;接口失败可单独重试。

5.2 /admin/users 用户管理

+--------------------------------------------------------------------------------+
| 用户管理                                      [新增用户] [导出]                |
| [邮箱/手机号/ID 搜索........] [状态▼] [创建时间▼] [筛选]                     |
+--------------------------------------------------------------------------------+
| 选择 | 用户 | 联系方式 | 状态 | MFA | 余额 | 最近登录 | 操作                 |
| □    | ...  | 脱敏     | 正常 | 关  | ...  | ...      | [详情] [冻结] [更多]    |
+--------------------------------------------------------------------------------+
| 新增用户抽屉:邮箱/手机号、昵称、初始密码、状态、是否发送欢迎消息 [保存]      |
+--------------------------------------------------------------------------------+

交互:新增成功显示一次性初始密码;冻结/解冻和密码重置需要确认并写入审计;详情抽屉分账户、任务、账本、权益和审计 Tab。

5.3 /admin/auth-messages 认证消息

+--------------------------------------------------------------------------------+
| 认证消息                                    [状态▼] [通道▼] [时间▼] [刷新]     |
+--------------------------------------------------------------------------------+
| 目标(脱敏) | 类型 | 模板 | 状态 | 重试次数 | 创建时间 | 操作                 |
| ...        | 邮件 | 注册 | 成功 | 0        | ...      | [查看详情] [重试]      |
+--------------------------------------------------------------------------------+
| 消息详情抽屉:目标、用途、状态时间线、错误摘要、内容预览(保留换行)            |
+--------------------------------------------------------------------------------+

交互:长文本只在抽屉中 pre-wrap 展示;重试需二次确认;不展示供应商密钥和未接入的供应商配置。

5.4 /admin/security/mfa 管理员安全

+---------------------------------------------------------------+
| 管理员安全                                                     |
| 当前管理员 | 角色 | MFA 状态 | 全局策略                         |
| [启用 MFA] [验证设备] [关闭 MFA]                              |
| 恢复码:仅在生成后显示一次;关闭需要当前 TOTP + 原因           |
+---------------------------------------------------------------+

5.5 /admin/channels 渠道管理

+--------------------------------------------------------------------------------+
| 渠道管理                                      [新增渠道] [批量启停] [刷新]       |
| [名称/供应方式/模型 ID 搜索] [状态▼] [健康▼]                                  |
+--------------------------------------------------------------------------------+
| 渠道名称 | 供应方式 | 能力/状态 | 健康 | 优先级 | 更新时间 | 操作       |
| ...       | OpenAI  | 图片       | 健康 | 1      | ...      | [详情]     |
+--------------------------------------------------------------------------------+
| 新增/编辑渠道弹窗:                                                            |
| [基础信息] [模型列表] [模型映射]                                               |
| 基础信息:名称、完整请求地址示例、API Key;模型列表:主动拉取后勾选加入;     |
| 模型映射:平台显示模型 ID ↔ 供应商请求模型 ID(可选)                          |
| [取消] [保存]                                                                  |
+--------------------------------------------------------------------------------+

交互:首屏只显示列表和新增按钮;当前只支持 OpenAI 图片端点;拉取模型是管理员主动点击的独立动作,不在新增/编辑保存时隐式发起;模型列表与模型映射独立;密钥只写服务端密文;支持编辑回填、Tab 草稿保留、启停、凭证轮换、手动探活和版本冲突提示。渠道生成测试提交时,若存在平台显示模型 ID 到供应商请求模型 ID 的映射,必须使用供应商请求模型 ID 调用上游;无映射时沿用平台显示模型 ID。弹窗必须支持取消、右上角、遮罩和 ESC 关闭,异步成功自动关闭,失败保留表单。

5.6 /admin/channel-health 渠道健康

+--------------------------------------------------------------------------------+
| 渠道健康                                      [全部探活] [自动刷新○]            |
| [状态▼] [渠道组▼] [最近窗口▼]                                                  |
+--------------------------------------------------------------------------------+
| 渠道 | 中文状态 | 最近探活 | 延迟 | 连续失败 | 熔断剩余 | 操作                 |
| ...  | 健康/降级/熔断/已停用 | ... | ... | ... | ... | [单项探活] [查看日志] |
+--------------------------------------------------------------------------------+

5.7 /admin/channel-groups 渠道分组

+--------------------------------------------------------------------------------+
| 渠道分组                                      [新增分组] [刷新]                 |
| 分组 | 用途/档位 | 状态 | 渠道数 | 重试预算 | 版本 | 操作                      |
+--------------------------------------------------------------------------------+
| 旗舰图像组 | 旗舰 | 启用 | 4 | 3 | v5 | [配置顺序] [启停] [详情]          |
+--------------------------------------------------------------------------------+
| 分组编辑抽屉:可用渠道池 → 已选渠道排序(拖拽) → 重试预算 → 保存               |
| 渠道 1 ──> 渠道 2 ──> 渠道 3 ──> 渠道 4       [模拟故障切换]                   |
+--------------------------------------------------------------------------------+

5.8 /admin/model-products 模型产品

+--------------------------------------------------------------------------------+
| 模型产品                                      [新增产品] [发布/下架]             |
| 公开 ID | 档位 | 能力 | 分辨率 | 绑定分组 | 价格 | 状态 | 版本 | 操作          |
| basic-image-v1 | 基础 | 文生图/图生图 | 低/中 | 基础组 | 10 | 上架 | v3 | [编辑] |
+--------------------------------------------------------------------------------+
| 产品抽屉:公开 ID/名称/档位 → 能力多选 → 分辨率矩阵 → 渠道组 → 价格预览       |
| 能力标签超出宽度显示 +N,点击“查看全部”打开能力详情,不撑高表格。           |
+--------------------------------------------------------------------------------+

5.9 /admin/pricing 价格规则

+--------------------------------------------------------------------------------+
| 价格规则                                      [新增规则] [刷新]                 |
| 产品 | 分辨率 | 数量阶梯 | 基础价格 | 倍率 | 生效版本 | 状态 | 操作           |
+--------------------------------------------------------------------------------+
| ...  | 中     | 1-4      | 10       | 1.0  | v7       | 生效 | [调整价格]     |
+--------------------------------------------------------------------------------+
| 调价弹窗:新价格/倍率/生效时间/原因/预览;提交 If-Match;冲突时显示当前版本。 |
+--------------------------------------------------------------------------------+

5.10 /admin/billing/units 金币单位与换算

+--------------------------------------------------------------------------+
| 金币单位                                                     [编辑单位]  |
| 图标 🪙 | 名称 金币 | 短码 COIN | 精度 0 | 换算比例 1:1 | 版本 v2          |
+--------------------------------------------------------------------------+
| 换算规则                                                     [编辑单位]  |
| 支付货币 | 金币比例 | 舍入方式 | 生效版本 | [编辑]             |
+--------------------------------------------------------------------------+

5.11 /admin/plans 套餐管理

+--------------------------------------------------------------------------------+
| 套餐管理                                      [新增套餐] [上架/下架]             |
| 名称 | 时长 | 包含金币 | 售价 | 并发 | 队列级别 | 可用渠道组 | 状态 | 操作   |
+--------------------------------------------------------------------------------+
| ...  | 30天 | 1000     | ¥99  | 2    | 1        | 基础/高级   | 上架 | [编辑] |
+--------------------------------------------------------------------------------+
| 套餐抽屉:名称/介绍/时长/包含金额/购买金额/并发/队列优先级/保留期/渠道组权益  |
+--------------------------------------------------------------------------------+

5.12 /admin/billing、/admin/recharges、/admin/payments、/admin/approvals

+--------------------------------------------------------------------------------+
| 余额与账本 / 充值订单 / 支付事件 / 审批中心  [Tab 切换] [筛选] [导出]         |
+--------------------------------------------------------------------------------+
| 余额与账本:用户 | available | reserved | reserve/settle/release/refund | 时间 |
| 充值订单:订单 | 用户 | 金额 | 状态 | mock/人工 | 创建时间 | [详情]            |
| 支付事件:eventId | 订单 | 签名 | 金额 | 状态 | 收到时间 | [对账]              |
| 审批中心:类型 | 申请人 | 审批人 | 状态 | 过期时间 | [审批] [驳回]            |
+--------------------------------------------------------------------------------+

5.13 /admin/payment-providers 支付适配器

+--------------------------------------------------------------------------------+
| 支付适配器                                    [新增适配器] [刷新]              |
| 名称 | 模式(mock/adapter) | 状态 | 密钥状态 | 版本 | 更新时间 | 操作         |
+--------------------------------------------------------------------------------+
| ...  | mock               | 启用 | 已配置   | v2   | ...      | [编辑] [探活] |
+--------------------------------------------------------------------------------+
| 适配器抽屉:名称/模式/回调地址/签名密钥(仅服务端保存)/启用状态                |
| [测试 webhook] [保存]                                                         |
+--------------------------------------------------------------------------------+

交互:仅保留 mock、人工充值和支付 adapter 接口;第三方支付文档到位后再接入具体 provider。

5.14 /admin/tasks 任务中心

+--------------------------------------------------------------------------------+
| 任务中心                                      [状态▼] [类型▼] [模型▼] [刷新]    |
| taskId | 用户 | 类型 | 公开模型 | 状态 | 预扣/实扣 | attempt | 更新时间 | 操作 |
+--------------------------------------------------------------------------------+
| ...    | ...  | 图片 | basic-v1  | 运行中 | 10/-- | 2 | ... | [详情] [取消] |
+--------------------------------------------------------------------------------+
| 任务详情抽屉:输入快照 → attempt 时间线 → 输出 → 账本 → 脱敏错误 → [重试/对账] |
+--------------------------------------------------------------------------------+

5.15 /admin/ws-metrics

+--------------------------------------------------------------------------+
| 实时指标                         [时间窗▼] [自动刷新○] [断线重连]         |
| 在线 WS | 活跃订阅 | 事件吞吐 | 轮询降级 | 断线率 | 心跳超时 | 队列深度 |
+--------------------------------------------------------------------------+
| 时间序列:WS 连接 / 任务事件 / fallback 轮询 / Redis 租约                 |
+--------------------------------------------------------------------------+

5.16 /admin/storage 与 /admin/settings

+--------------------------------------------------------------------------------+
| 存储策略                                      [保存策略] [立即 GC]             |
| 本地 staging TTL | WebDAV 保留期 | 最大延长 | 归档模式 | 扫描策略 | 版本       |
+--------------------------------------------------------------------------------+
| WebDAV 连接 | manifest | queued/running/conflict | 归档/删除任务 | [详情]       |
| 系统设置 Tab:功能开关、用户认证增强、管理员安全增强、默认限流、审计保留期   |
+--------------------------------------------------------------------------------+

5.17 /admin/audit 与 /admin/audit-logs

+--------------------------------------------------------------------------------+
| 审计日志                                      [导出摘要] [校验链]               |
| 时间 | 操作者 | 角色 | 动作 | 对象 | requestId | 结果 | 操作                  |
+--------------------------------------------------------------------------------+
| ...  | admin@... | super_admin | pricing.update | ... | ... | 成功 | [详情]      |
+--------------------------------------------------------------------------------+
| 详情抽屉:before/after 脱敏摘要、IP、关联任务、hash、前后链校验状态            |
+--------------------------------------------------------------------------------+

/admin/audit 是日志大板,负责分类、HTTP 结果和趋势概览;/admin/audit-logs 是详细日志列表,负责按业务分类查看具体操作人、请求来源和详情抽屉。两者共用 audit-logs 读取接口,但必须作为两个可见路由分别验收。

5.18 延期页面(不出现在菜单)

消息供应商 /message-providers、消息模板 /message-templates
┌─────────────────────────────────────────────────────────────┐
│ 本期暂不接入第三方邮件/SMS provider                         │
│ 认证消息仍可查看 outbox 状态;供应商配置待文档确认后启用。   │
└─────────────────────────────────────────────────────────────┘

6. 管理台 Mermaid 图示

6.1 菜单与权限

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 渠道到模型产品的强交互流

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 价格调整与版本冲突

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 后台任务监控

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 统一写入反馈

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、网络断开均有可见反馈和恢复路径。