# 元境幻生管理台一期菜单与交互图示规划 > 本文是管理台历史页面蓝本。当前长期目标的唯一权威入口是 [`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、网络断开均有可见反馈和恢复路径。