30 KiB
MiragenFlow 管理台重构 Goal
本轮综合长任务入口:
docs/miragenflow-long-task-goal-prompt.md。本文继续维护管理台 22 页、权限和业务闭环细节;前后台组件统一规则见该入口及docs/miragenflow-tdesign-unification-goal.md。如本文与综合入口的渠道交互描述冲突,以综合入口的“OpenAI 单一供应方式 + 三个可自由切换 Tab”规则为准。
0. 目标状态
- 目标对象:
/Users/qiu/Desktop/MiragenFlow - 目标名称:管理台商业业务工作台重构
- 当前阶段:目标文档与逐页 SSII 基线已完成;代码已完成 P0 壳层/权限、认证开关、独立系统设置、用户详情分 Tab、任务详情/审批驳回、渠道/分组/模型产品编辑抽屉、渠道健康批量探活、任务并发投递、跨实例任务 dispatch 回载、系统概览趋势/告警、业务维度筛选、PostgreSQL 任务租约心跳/过期恢复、消息 outbox 发送期续租与业务幂等键、WebDAV 完成事务与保留期行锁扫描、管理员 MFA 开关门禁。仍需浏览器逐页验收,以及完整 PostgreSQL 领域表 CAS、远端 WebDAV/消息竞态、管理台列表跨路由异步回写保护和真实 provider 的部署验证。未完成项不得按“已完成”发布。
- 依据:
AGENTS.md、develop.md、system-diagrams.md、admin-plan.md、summary.md - 跨端组件目标:用户端与管理端统一 TDesign 的长期执行基线见
docs/miragenflow-tdesign-unification-goal.md;本文继续只负责管理台业务目标,不把两端页面、路由、权限或状态合并。 - 禁止结果:白屏、无恢复路径的 403、假按钮、首屏堆满配置字段、mock 冒充业务、未接入供应商伪装成已接入。
1. 最终目标
把当前平铺的 TDesign Starter 管理台重构为商业化 V1 管理工作台:
- 管理员从
/admin/login默认只使用邮箱和密码登录(本地默认admin@admin.com/admin);MFA/CAPTCHA 仅在后台增强开关显式开启时追加,关闭时界面不得出现验证码、动态码或恢复码输入框。 - 用户端认证提供密码登录(邮箱、手机号、用户名)和手机号验证码登录;注册提供邮箱、手机号两条路径,注册邮箱验证与注册手机号验证由
/admin/settings独立开关控制,开启后先完成验证码验证再设置并确认密码。 - 登录后加载管理员角色、scope、MFA 状态和可见菜单;权限不足隐藏菜单,不能白屏。
- 左侧使用一级分组 + 二级页面,URL 统一为
/admin/...。 - 新增、编辑、启停、调价、审批、调账全部通过 Modal/Drawer 完成。
- 用户、渠道、分组、模型产品、价格、套餐、余额、支付、任务、存储、审计形成真实业务闭环。
- 供应商消息暂不接入;消息供应商和模板页面隐藏,只保留认证消息 outbox 状态和详情。
- 状态、能力、错误码、按钮全部中文;长文本和 capability 不能撑高表格。
- 所有写操作提供成功、加载、空态、403、409、422、503、网络断开和重试反馈。
2. 必读文件
实施前依次读取以下绝对路径:
/Users/qiu/Desktop/MiragenFlow/AGENTS.md/Users/qiu/Desktop/MiragenFlow/develop.md/Users/qiu/Desktop/MiragenFlow/system-diagrams.md/Users/qiu/Desktop/MiragenFlow/admin-plan.md/Users/qiu/Desktop/MiragenFlow/summary.md/Users/qiu/Desktop/MiragenFlow/admin/src/router/index.ts/Users/qiu/Desktop/MiragenFlow/admin/src/layouts/components/Menu.tsx/Users/qiu/Desktop/MiragenFlow/admin/src/layouts/components/AppRouter.tsx/Users/qiu/Desktop/MiragenFlow/admin/src/components/ErrorPage/index.tsx/Users/qiu/Desktop/MiragenFlow/admin/src/pages/Business/index.tsx/Users/qiu/Desktop/MiragenFlow/admin/src/services/platform.ts/Users/qiu/Desktop/MiragenFlow/server/src/app/http.ts/Users/qiu/Desktop/MiragenFlow/server/src/shared/auth.ts/Users/qiu/Desktop/MiragenFlow/packages/contracts/src/index.ts- 根目录、
admin/、web/、server/的package.json /Users/qiu/Desktop/MiragenFlow/scripts/dev-all.mjs/Users/qiu/Desktop/MiragenFlow/scripts/build-all.mjs
页面/API变更必须同步 admin-plan.md、system-diagrams.md、summary.md、CHANGELOG.md、docs/content/docs/progress/todo.mdx 和 docs/content/docs/progress/pending-test.mdx。
3. 产品边界
必须进入 V1
管理员登录/RBAC/审计、菜单分组、系统概览、用户管理、认证消息、管理员安全、渠道、渠道健康、渠道组、模型产品、价格、金币单位、换算、套餐、余额账本、充值订单、支付事件、支付适配器、审批、任务中心、WS 指标、存储策略、系统设置、审计日志。
不进入可见菜单
消息供应商、消息模板、视频、动画、真实 3D、团队、云端项目 CRUD、内容治理、Local Agent、Codex、MCP、Skill、远程 Prompt、插件市场。支付只保留人工充值、mock 和 adapter 接口,等待第三方支付文档。
前台、公开 API、日志和导出不得暴露 provider 名称、Base URL、API Key、内部 provider model ID、渠道顺序、Cookie、WebDAV 密文或完整敏感提示词。
4. 菜单信息架构
元境幻生管理台
├─ 总览
│ └─ 系统概览 /admin/dashboard/base
├─ 用户与认证
│ ├─ 用户管理 /admin/users
│ ├─ 认证消息 /admin/auth-messages
│ └─ 管理员安全 /admin/security/mfa
├─ 渠道与模型
│ ├─ 渠道管理 /admin/channels
│ ├─ 渠道健康 /admin/channel-health
│ ├─ 渠道分组 /admin/channel-groups
│ ├─ 模型产品 /admin/model-products
│ └─ 价格规则 /admin/pricing
├─ 计费与套餐
│ ├─ 金币单位与换算 /admin/billing/units
│ ├─ 余额与账本 /admin/billing
│ ├─ 套餐管理 /admin/plans
│ ├─ 充值订单 /admin/recharges
│ ├─ 支付事件 /admin/payments
│ ├─ 支付适配器 /admin/payment-providers
│ └─ 审批中心 /admin/approvals
├─ 任务与运行
│ ├─ 任务中心 /admin/tasks
│ └─ 实时指标 /admin/ws-metrics
├─ 存储与系统
│ ├─ 存储策略 /admin/storage
│ └─ 系统设置 /admin/settings
└─ 审计
├─ 日志大板 /admin/audit
└─ 详细日志 /admin/audit-logs
菜单规则:一级节点可展开/收起;收起时侧栏完全隐藏,不保留窄图标栏;刷新 URL 自动展开;无 scope 的二级项不渲染;admin:read 只读,写操作需 admin:write 或 admin:finance;登录、403、404 不入业务菜单。
5. 统一布局与交互
+--------------------------------------------------------------------------------+
| 元境幻生 | 一级菜单/二级菜单 | 面包屑 | 刷新 | 帮助 | 管理员菜单 |
+--------------------------------------------------------------------------------+
| 页面标题+描述 [搜索] [筛选] [批量操作] [新增/配置] |
+--------------------------------------------------------------------------------+
| KPI/统计卡/当前版本/告警 |
+--------------------------------------------------------------------------------+
| 固定列宽表格:选择 | 关键字段 | 中文状态 | 更新时间 | 操作 |
+--------------------------------------------------------------------------------+
| 右侧 Drawer/Modal:字段分组 | 校验 | 风险提示 | 取消 | 保存/提交 |
+--------------------------------------------------------------------------------+
全页面必须有加载骨架、空态、网络错误重试、403权限卡、提交中禁用、成功 Toast、422 字段错误、409 版本冲突、503 保留表单重试;支持 Tab/Enter/Escape 和焦点回收。窄屏页面整体不得产生无意义的横向溢出,但业务表格允许在局部容器内横向滚动,以保留列表语义和列可读性。长文本用摘要/Tooltip/详情抽屉,不能撑高表格。
6. 页面目标、布局和验收
6.1 登录/错误
/admin/login:居中邮箱密码卡片;开关开启时追加 CAPTCHA/MFA;成功进入/admin/dashboard/base;失败保留输入并显示错误。/admin/403、/admin/404:错误码、角色、所需 scope、返回系统概览、重新登录、切换管理员;按钮必须可用,禁止静态白板。
6.2 系统概览 /admin/dashboard/base
顶部时间范围/刷新;KPI 展示用户、活跃用户、任务、金币消耗、充值金额、队列深度、WS 在线;图表展示任务成功/失败率、P50/P95、模型可用率、渠道错误率、邮件/SMS 成功率和支付回调异常;卡片可带筛选跳转,单卡片可重试。
6.3 用户管理 /admin/users
搜索、状态/等级/验证/创建时间筛选;表格展示脱敏身份、验证状态、MFA、套餐、并发、每日额度、余额、最近登录;新增用户 打开 Drawer,填写用户名、邮箱、手机号和初始密码;详情包含账户/会话/任务/账本/权益/审计 Tab;支持冻结、解冻、重置密码、重发认证和调账申请。新增成功只显示一次初始密码,冻结后计费任务必须拒绝。
6.4 认证消息 /admin/auth-messages
状态/通道/用途/时间筛选;表格展示目标脱敏、用途、通道、状态、重试次数、错误摘要、时间;详情 Drawer 展示状态时间线和完整多行内容;重试需确认;内容使用 white-space: pre-wrap;供应商配置不在此页面实现。
6.5 管理员安全 /admin/security/mfa
状态卡、全局策略、启用/验证/关闭操作和恢复码 Drawer;关闭需要当前 TOTP/原因;开关关闭时登录只需邮箱密码,开启时追加 MFA;恢复码只显示一次,全部操作写审计。
6.6 渠道管理 /admin/channels
列表首屏仅展示搜索/筛选/新增渠道按钮和固定列;列使用中文业务字段(名称、供应方式、环境、区域、能力、状态、健康、优先级、并发/限流、成本、维护窗口、版本),不直接展示密钥、Base URL 或供应商内部模型 ID。新增和编辑共用同一风格的 Drawer,内部只有三个可自由切换的 Tab:基础信息、模型列表、模型映射;不使用上一步/下一步,也不提供没有真实逻辑的“通用”供应商模板。支持编辑、启停、凭证轮换、手动探活和 If-Match;密钥不回显。
基础信息填写名称、完整请求地址(示例 https://example.com 或 https://example.com/v1)和 API Key;API Key 只校验去除首尾空白后非空。模型列表仅在管理员主动点击按钮后请求 {基础地址}/v1/models,结果由管理员勾选加入渠道模型列表;模型映射是可选的,分别保存平台显示模型 ID 与供应商请求模型 ID,不能自动把拉取结果变成映射。切换 Tab、编辑回填、保存失败和关闭重开都必须保留或恢复正确草稿。
6.7 渠道健康 /admin/channel-health
状态/分组/时间筛选、健康统计卡和固定表格;列为渠道、中文状态、延迟、成功率、连续失败、熔断剩余、探活时间、维护窗口;映射 healthy=健康、degraded=降级、open=熔断、disabled=已停用;支持单项/批量探活和错误时间线。
6.8 渠道分组 /admin/channel-groups
分组列表和 新增分组;详情 Drawer 包含用途/档位、启停、可用渠道池、拖拽顺序、重试预算、超时、并发、熔断、退避、half-open、公共失败文案、替代模型、发布和回滚。保存前校验渠道存在、启用、顺序唯一;模拟首渠道失败必须展示 fallback 顺序。
6.9 模型产品 /admin/model-products
列表和 新增产品;Drawer 配置公开 ID、名称、档位、默认质量、能力、分辨率、最大数量、参考图数量、mask、渠道组、价格、替代模型、生效时间、状态和版本。能力用中文标签,超出显示 +N 和详情 Drawer;启用产品必须绑定启用渠道组;公开 API 只显示公开 ID。
6.10 价格规则 /admin/pricing
产品/分辨率/档位筛选;价格版本表;新增规则/调整价格弹窗包含基础价、数量阶梯、分辨率倍率、金币单位、生效时间、原因;提交携带 If-Match;旧版本返回 409,展示当前版本并允许重载;成功刷新且保留筛选。
6.11 金币单位与换算 /admin/billing/units
单位卡展示图标、名称、短码、精度、比例、版本;换算规则表支持新增/编辑/停用/生效期;账本使用最小整数金币,比例变更有审计和版本。
6.12 套餐 /admin/plans
卡片/表格切换;新增和编辑 Drawer 配置公开编码、名称、图标、介绍、排序、时长、包含金币、购买金额、并发、队列优先级、保留期、最大延长、允许模型/渠道组、上架、归档、版本;上下架即时影响公开目录,支持回滚。
6.13 余额 /admin/billing
余额统计、用户/流水类型筛选、账本表和调账申请;展示 available/reserved、reserve/settle/release/refund,支持按用户/任务/订单追踪;调账必须申请→审批→执行,available + reserved 不变量成立。
6.14 充值/支付 /admin/recharges、/admin/payments
充值表展示订单、用户、金额、金币、渠道、状态、创建/回调时间;支付表展示 eventId、订单、签名、金额/币种、状态、重放结果和异常;重复 webhook 必须幂等,状态和账本同事务。
6.15 支付适配器 /admin/payment-providers
列表展示名称、mock/adapter 模式、状态、密钥状态、版本;Drawer 支持新增 mock、启停、测试 webhook、服务端加密签名密钥;第三方支付等待文档,不伪造 provider。
6.16 审批 /admin/approvals
待审批/已执行/已驳回/已过期 Tab;详情显示申请人、审批人、原因、金额/对象、审计;人工充值、退款、调账和高风险配置要求申请人/审批人分离,过期自动标记,策略开启时要求审批 MFA。
6.17 任务 /admin/tasks
状态/类型/模型/用户/时间筛选;列表展示 taskId、用户、类型、公开模型、状态、预扣/实扣、attempt、更新时间;详情 Drawer 展示输入快照、状态时间线、attempt、输出、账本、错误、脱敏 provider request ID;支持取消、重试、unknown 对账。
6.18 实时指标 /admin/ws-metrics
展示在线连接、订阅、事件吞吐、心跳、断线、轮询降级、事件积压;支持时间窗口、自动刷新暂停、断线恢复和实例/任务筛选;重连 cursor 不重复。
6.19 存储/系统 /admin/storage、/admin/settings
存储策略配置 staging TTL、结果/原图保留、WebDAV manifest 保留、最大延长、归档模式、GC、扫描/quarantine、对象存储 adapter;系统设置必须是独立资源(不能复用 storage-policies),配置用户验证/MFA/CAPTCHA、管理员 MFA/CAPTCHA、限流、队列和审计保留;默认关闭所有认证增强,开关即时影响认证并写入版本/审计,状态可追踪,对象存储默认关闭。
6.20 审计 /admin/audit、/admin/audit-logs
/admin/audit 展示分类、HTTP 结果和时间趋势,/admin/audit-logs 展示具体操作人、动作、对象和请求来源;两者均可打开详情 Drawer,展示脱敏 before/after、IP、requestId、correlationId、hash 链和摘要导出。绝不展示密钥、密码、Cookie、完整提示词、原图或 WebDAV 凭证。
6.21 逐页 SSII 索引
详细 ASCII/SSII 线框统一维护在 /Users/qiu/Desktop/MiragenFlow/admin-plan.md 第 4-5 节;每页验收按以下结构执行:顶部标题与筛选、统计/告警区、固定列宽列表、详情 Drawer/Modal、加载/空/错误/冲突状态。
| 页面 | 主布局 | 关键交互 |
|---|---|---|
| 系统概览 | KPI 卡 + 趋势 + 告警 | 时间范围、单卡跳转、局部重试 |
| 用户管理 | 筛选栏 + 用户表 + 详情 Drawer | 新增、冻结、重置、重发、强退、调账 |
| 认证消息 | 状态筛选 + outbox 表 + 消息 Drawer | 多行详情、失败重试 |
| 管理员安全 | 策略卡 + MFA 操作 Drawer | setup/verify/disable、恢复码一次性展示 |
| 渠道管理 | 渠道表 + 三 Tab 新增/编辑 Drawer | 地址校验、手动拉取模型、勾选加入、可选映射、启停、轮换密钥 |
| 渠道健康 | 健康 KPI + 渠道表 | 中文状态、单项/全部探活、日志 |
| 渠道分组 | 分组表 + 拖拽排序 Drawer | 成员校验、fallback 预览、版本保存 |
| 模型产品 | 产品表 + 产品 Drawer | 能力折叠、分辨率、渠道绑定、上下架 |
| 价格规则 | 版本表 + 价格 Modal | 新增/调价、If-Match 冲突重载 |
| 金币单位/换算 | 单位卡 + 规则表 | 比例、精度、舍入和生效期 |
| 套餐管理 | 卡片/表格 + 套餐 Drawer | 权益、发布/回滚、归档 |
| 余额与账本 | 余额 KPI + 流水表 | 调账申请、审批链、reserve/settle/release 追踪 |
| 充值订单/支付事件 | 订单表 + 事件详情 | 失败标记、退款申请、webhook 幂等 |
| 支付适配器 | 适配器表 + 配置 Drawer | mock/adapter、启停、密钥状态 |
| 审批中心 | 状态 Tab + 审批详情 | 申请人/审批人分离、条件 MFA、过期处理 |
| 任务中心 | 任务表 + 任务 Drawer | attempt、取消、重试、unknown 对账 |
| 实时指标 | 指标卡 + 时间序列 | WS 心跳、断线恢复、cursor 去重 |
| 存储策略/系统设置 | 策略表 + 设置 Drawer | TTL、WebDAV、归档、增强开关 |
| 审计日志 | 筛选表 + 审计 Drawer | 脱敏 before/after、hash 链和导出摘要 |
6.22 22 个页面的逐页 SSII 骨架
以下矩阵是开发与浏览器验收的逐页“图片蓝本”。每行对应一张页面线框:头部 固定标题/面包屑/刷新,筛选 固定在标题下方,主体 使用固定列宽表格或指标卡,侧栏 使用 Drawer/Modal;加载、空、403、409、422、503 都在同一位置替换主体,不改变页面骨架。
| # | 页面 | 头部与筛选 | 主体与详情 | 强交互验收 |
|---|---|---|---|---|
| 1 | /admin/dashboard/base |
时间范围、刷新、告警过滤 | KPI 卡、趋势图、异常列表 | 卡片跳转、单卡重试、断线恢复 |
| 2 | /admin/users |
搜索、状态、等级、验证、时间 | 用户表、账户 Drawer、六个详情 Tab | 新增、冻结、重置、重发、强退、调账 |
| 3 | /admin/auth-messages |
状态、通道、用途、时间 | outbox 表、消息详情 Drawer | 多行内容、失败重试、目标脱敏 |
| 4 | /admin/security/mfa |
管理员 MFA 状态/策略 | 策略卡、setup/verify/disable Drawer | 开关门禁、恢复码一次性展示 |
| 5 | /admin/channels |
供应方式、环境、区域、状态 | 渠道表、三 Tab 新增/编辑 Drawer | 地址校验、手动 /v1/models、勾选模型、可选映射、启停、轮换密钥 |
| 6 | /admin/channel-health |
健康、分组、时间 | 健康 KPI、渠道表、错误时间线 | 单项/批量探活、中文状态、重试 |
| 7 | /admin/channel-groups |
用途、档位、状态 | 分组表、成员排序/fallback Drawer | 拖拽排序、成员启用校验、模拟故障 |
| 8 | /admin/model-products |
档位、能力、渠道组、状态 | 产品表、产品配置 Drawer | 能力折叠、渠道绑定、发布/回滚 |
| 9 | /admin/pricing |
产品、分辨率、档位、版本 | 价格版本表、调价 Modal | If-Match 409 展示当前版本并重载 |
| 10 | /admin/billing/units |
单位、状态、版本 | 金币单位卡与换算规则表、编辑 Drawer | 比例/舍入/精度校验、版本审计 |
| 11 | /admin/billing |
用户、流水类型、时间 | 余额 KPI、账本表、调账 Drawer | reserve/settle/release/refund 追踪 |
| 12 | /admin/plans |
上架、归档、版本 | 套餐卡/表、套餐 Drawer | 权益配置、发布、回滚、归档 |
| 13 | /admin/recharges |
用户、状态、时间 | 充值订单表、订单 Drawer | 失败标记、退款申请、幂等重放 |
| 14 | /admin/payments |
provider、状态、时间 | 支付事件表、事件 Drawer | 签名/金额/币种校验、异常重试 |
| 15 | /admin/payment-providers |
模式、状态、版本 | 适配器表、配置 Drawer | mock 测试 webhook、密钥只显示状态 |
| 16 | /admin/approvals |
待处理/已执行/已驳回/已过期 Tab | 审批表、申请详情 Drawer | 申请人/审批人分离、条件 MFA、驳回 |
| 17 | /admin/tasks |
状态、类型、模型、用户、时间 | 任务表、任务详情/attempt Drawer | 取消、重试、unknown 对账、脱敏 |
| 18 | /admin/ws-metrics |
时间窗、实例、任务 | WS KPI、吞吐/心跳/积压趋势 | 暂停刷新、断线恢复、cursor 去重 |
| 19 | /admin/storage |
adapter、保留期、GC 状态 | 存储策略表、配置 Drawer | TTL、归档、扫描/quarantine、GC |
| 20 | /admin/settings |
安全增强、限流、队列、审计 | 系统设置表、版本化编辑 Drawer | 默认关闭、即时生效、If-Match |
| 21 | /admin/audit |
操作者、动作、对象、结果、时间 | 日志大板、分类占比和趋势 | 200/4xx/5xx 统计、中文分类、局部重试 |
| 22 | /admin/audit-logs |
操作者、动作、对象、结果、时间 | 详细日志表、脱敏详情 Drawer | 中文行为、requestId、hash 链、详情重试 |
7. 服务端契约工作项
权限和总览
- 统一
super_admin/operator/finance/support/auditor到 scopes;未知角色不能得到空权限。 /api/v1/admin/dashboard、me、菜单权限和前端 scope 一致。- 403/404 返回稳定错误码和 requestId,前端必须有可恢复页面。
用户
- 增加管理员创建用户 API,校验身份唯一、初始密码、状态、套餐和限制字段;密码只显示一次并只存哈希。
- 冻结、解冻、重置、重发认证、强退和调账申请审计;详情数据脱敏并按对象权限返回。
渠道和模型
- 渠道新增校验 HTTPS、DNS/私网、协议、密钥、超时、并发和限流;密钥服务端密文保存。
- 渠道组校验成员存在、启用、排序唯一;模型产品校验渠道组存在且可用;价格支持 If-Match 和幂等。
- 公共 DTO 不得包含 provider model ID、Base URL、Key 或渠道顺序。
计费、任务、存储、审计
- 余额、账本、支付订单、支付事件和审批保持一致事务;任务取消/重试/unknown 不重复扣款。
- WS 指标、attempt、队列租约、WebDAV/GC/归档状态可查询。
- 审计 before/after 递归脱敏,日志和导出不包含真实密钥或完整敏感内容。
8. 实施阶段
P0 壳层与权限
嵌套路由、一级/二级菜单、权限加载、403/404恢复、角色映射、真实总览指标和错误态。
P1 核心配置闭环
用户新增;渠道新增/探活/启停;健康中文化;渠道组排序/fallback;模型产品能力/分辨率/绑定;价格调整/版本冲突。
P2 商业和运维
金币、换算、套餐、余额、充值、支付、支付适配器、审批、任务、WS 指标、存储、设置、审计、认证消息多行详情。
P3 统一体验
加载/空/错/403/409/503、固定列宽、能力折叠、中文状态、响应式 Drawer、键盘无障碍、敏感扫描、同源回归。
9. 验收标准
静态和构建
npm --prefix server run typecheck
npm --prefix server test
npm --prefix web run typecheck
npm --prefix web run build
npm --prefix admin run typecheck
npm --prefix admin run build
npm --prefix admin run lint
npm run build:all
git diff --check
路由和菜单
/admin/自动进入/admin/dashboard/base。- 22 个可见二级页面均能进入;刷新后一级展开、二级高亮、面包屑正确。
- 无权限角色不显示对应菜单;403/404 有返回总览和重新登录按钮。
- 消息供应商/模板不出现在菜单。
业务闭环
- 创建用户→列表→详情→冻结;冻结后计费任务拒绝。
- 新增渠道→探活→分组拖拽→模型绑定→调价。
- 首渠道失败→fallback→任务 attempt 时间线。
- 旧 If-Match 调价→409→重载→成功。
- 重放 webhook→订单/余额/账本不重复增加。
- 调账→审批→执行→完整审计。
- 取消/失败/unknown→释放或按实际结算,不重复扣款。
- WebDAV 保留/归档/删除→队列/GC 状态可见。
视觉和交互
- 首屏不铺满配置字段,新增/编辑只能通过按钮打开弹窗/抽屉。
- 认证消息保留换行,capability 不撑高表格,状态均为中文。
- 所有操作在加载、失败、403、409、503 有明确反馈。
- Tab/Enter/Escape 和焦点回收可用;宽屏、窄窗口和缩放下页面整体不产生无意义的横向溢出,业务表格在局部容器内允许横向滚动以保留列可读性。
- 路由、筛选或分页切换期间,旧列表请求不会回写当前页面的行数据、加载态或错误态;必须有延迟请求回归证据。
安全扫描
git ls-files | rg '(^|/)(\.env|.*\.(pem|key))$|(^|/)(uploads?|staging|snapshots?)(/|$)'
rg -n -i 'api[_ -]?key|authorization:|bearer |providerModelId|baseUrl|BEGIN (RSA|EC|OPENSSH) PRIVATE KEY' \
web/dist admin/dist server/src web/src admin/src --glob '!*.map'
10. 交付物
- 嵌套路由、一级/二级菜单和权限安全壳层。
- 22 个可见页面的真实布局、弹窗/抽屉、错误态和业务闭环。
- 用户、渠道、分组、模型、价格、计费、任务、存储、审计 API 对齐。
- 更新
admin-plan.md、system-diagrams.md、summary.md、CHANGELOG.md、todo.mdx、pending-test.mdx。 - 完整构建、测试、同源启动和浏览器验收记录;未完成内容继续记录在 TODO/Pending Test。
10.1 进度反馈格式
每完成一个可独立验收的小任务,立即用以下格式反馈,不把未验证内容计入完成度:
已完成:{小任务名称}
验收证据:{命令、页面、API 或截图路径}
当前进度:██████▎░░░ {整数}%
剩余阻塞:{没有则写“无”;有则列出具体文件/接口}
百分比按“已通过验收的交付项 / 全部交付项”计算;文档规划、代码实现、自动化测试、同源运行和浏览器人工验收分别计项,不能用文档完成替代功能完成。
11. 目标引导提示词
你现在负责完成 /Users/qiu/Desktop/MiragenFlow 的管理台重构 Goal。
先完整读取:AGENTS.md、develop.md、system-diagrams.md、admin-plan.md、goal.md、summary.md;
再读取 admin/src/router/index.ts、Menu.tsx、AppRouter.tsx、ErrorPage、Business/index.tsx、
admin/src/services/platform.ts、server/src/app/http.ts、server/src/shared/auth.ts、
packages/contracts/src/index.ts,以及各 package.json、scripts/dev-all.mjs、scripts/build-all.mjs。
必须实现:
1. 路由统一为 /admin/...,实现 7 个一级菜单和 22 个二级页面;逐页同步 `admin-plan.md` 的 ASCII SSII 与 `system-diagrams.md` 的 Mermaid;权限不足隐藏菜单并显示可恢复 403 页面。
2. 管理员默认只显示邮箱/账号和密码输入;MFA、验证码、恢复码均由后台增强开关控制,关闭时不得渲染输入框。完成真实系统概览(含 P50/P95、渠道/模型/消息/支付异常指标)、用户新增/详情分 Tab/冻结/重置密码/重发认证、认证消息多行详情和管理员安全。
3. 完成渠道新增弹窗、编辑/探活/启停、中文健康状态、分组拖拽排序与 fallback。
4. 完成模型产品能力/分辨率/渠道组绑定、发布/回滚和价格 If-Match 冲突处理。
5. 完成金币、换算、套餐、余额、充值失败/退款申请、支付事件、支付适配器和审批中心;管理员 MFA 增强开关关闭时审批不追加动态码,开启时才校验。
6. 完成任务 attempt/unknown/取消/重试、WS 指标、独立 `/api/v1/admin/settings` 系统设置 API/持久化/If-Match、存储策略和审计;系统设置不能复用 `storage-policies`。
7. 消息供应商和模板本期隐藏,不接入第三方 provider,不伪造可用配置。
8. 所有新增/编辑/启停/调价/审批/调账均用弹窗或 Drawer;固定列宽,中文状态,长文本和 capability 不撑表格。
9. 不向前台、公开 API、日志或导出暴露 provider 名称、Base URL、API Key、内部模型 ID、渠道顺序。
按 P0 壳层权限 → P1 渠道/分组/模型/价格 → P2 用户/计费/任务/存储/审计 → P3 视觉回归实施。
不要做视频、动画、真实 3D、团队、内容治理、Local Agent、远程 Prompt 或插件市场。
不要回滚已有改动,不要用 mock 冒充业务,不要把配置字段永久铺在首屏。
每个阶段执行并记录:
npm --prefix server run typecheck
npm --prefix server test
npm --prefix web run typecheck && npm --prefix web run build
npm --prefix admin run typecheck && npm --prefix admin run build && npm --prefix admin run lint
npm run build:all
git diff --check
最终启动 npm run dev:all,用同一 origin 验证 /、/admin/、/api/health、/api/ready;
逐页验证 22 个页面、权限角色、弹窗/抽屉、ASCII SSII 对应布局、加载/空/错误/403/409/503、中文排版、
渠道→分组→模型→价格、用户新增、任务、余额、审批、WebDAV 和审计;执行敏感扫描,
同步更新 admin-plan.md、system-diagrams.md、summary.md、CHANGELOG.md、todo.mdx、pending-test.mdx。
未完成内容必须明确记录,不能宣布全部完成。