# 模块 M8 Admin V2 管理后台 审计报告 > **审计版本**: V12 | **日期**: 2026-04-04 ## 1. 链路完整性 14 个页面全部与后端 API 对齐。认证流程(HttpOnly Cookie + JWT)完整。权限检查一致。 | 页面 | CRUD 完整性 | 权限 | 状态 | |------|------------|------|------| | Login | R(认证) | 公开 | ✅ | | Dashboard | R | admin | ✅ | | Accounts | R + U | admin | ✅ | | ModelServices | CRUD | provider/model:manage | ✅ | | Relay | R only | relay:use/admin | ⚠️ 缺 retry | | Billing | R + Payment | billing | ✅ | | Logs | R | admin | ✅ | | Prompts | CRUD + 版本 | prompt:manage | ✅ | | Roles | CRUD | role:manage | ✅ | | Knowledge | CRUD + 搜索 + 版本 | knowledge:manage | ✅ | | ScheduledTasks | CRUD | scheduler:manage | ✅ | | AgentTemplates | C + R + U + D | template:manage | ✅ | | Usage | R | admin | ✅ | | Config | R + U | admin | ✅ | **链路完整性评分: 88/100** ## 2. 问题清单 | ID | 文件:行号 | 级别 | 描述 | 修复建议 | |----|----------|------|------|---------| | M8-01 | `api-keys.ts:6` | P2 | API Key 列表只返回当前用户的,Admin 需要全局视角 | 后端新增 admin 级 key 列表端点 | | M8-02 | `Relay.tsx` | P2 | 缺少 retry 操作,后端有但前端未暴露 | 添加 retry 按钮 | | M8-03 | `authStore.ts:13-25` | P2 | ROLE_PERMISSIONS 硬编码前端,与后端可能不同步 | 改为从 API 动态获取 | | M8-04 | `config.ts:10` | P3 | config list 返回类型不一致(数组 vs 分页) | 统一返回类型 | | M8-05 | `Accounts.tsx:122` | P3 | 引用 last_login_at 但后端 AccountPublic 无此字段 | 后端添加字段 | | M8-06 | `Login.tsx:39` | P3 | TOTP 检测靠字符串匹配('TOTP'),不够健壮 | 改为结构化 error code | | M8-07 | `agent-templates.ts:31` | P3 | update 用 POST 而非 PUT/PATCH,REST 语义不规范 | 前后端统一为 PUT | | M8-08 | `billing.ts` | P3 | 类型定义在 service 内重复,未复用 @/types | 统一到 types 目录 | **综合健康度: 82/100** — 14 页面 CRUD 整体对齐良好,前端权限硬编码和缺少 retry 是主要扣分项。