现代化运营后台设计:基于 React、Vite 与 Cloudflare Edge 的管理系统架构
本文介绍基于 React+Vite+Cloudflare Edge 构建现代化运营后台。采用四层分层架构,实现路由守卫、read/edit/none 细粒度权限,前后端双重校验;封装 API 客户端,做会话轮询保活、BI 查询防护,适配移动端响应式布局,使用前端加密增强通信,明确状态管理与演进方向,适配内部管理平台。
一、背景
运营后台与面向用户的业务前端不同。
用户端更关注:
- 页面体验
- 首屏性能
- 交互效率
- SEO
- 多端适配
而运营后台更关注:
- 权限边界
- 数据操作安全
- 管理效率
- 实时配置
- 数据查询
- 操作可追溯
- 多设备适配
随着前端应用逐渐承担更多运营和运维职责,一个完整的后台系统往往需要同时连接:
用户管理
数据同步
配置管理
数据分析
性能监控
审计日志
文件管理如果这些能力全部以独立页面和独立接口实现,很容易出现权限逻辑分散、认证逻辑重复、API 调用方式不一致等问题。
因此,一个现代化后台系统更适合采用:
Admin SPA
│
▼
┌─────────────────┐
│ Route / Guard │
└────────┬────────┘
│
┌──────────┴──────────┐
▼ ▼
Authentication Authorization
│ │
└──────────┬──────────┘
▼
API Client Layer
│
┌────────────┼────────────┐
▼ ▼ ▼
BFF BI R2本文介绍一个基于 React + Vite + TypeScript + Tailwind CSS + React Router + Cloudflare Edge 的后台管理系统设计,并重点讨论权限体系、认证与会话保活、数据查询、响应式布局以及前后端边界。
二、设计目标
整个后台系统主要围绕以下目标设计。
1. 统一权限体系
所有页面、路由和操作按钮使用统一权限模型。
2. 统一认证
登录、Session 验证、权限刷新由统一认证模块负责。
3. 管理能力模块化
将用户、同步、配置、BI、监控、审计等能力拆分成独立业务模块。
4. 支持移动端
后台不仅针对桌面浏览器设计,同时保证移动端基本可用。
5. 支持暗色模式
通过 Tailwind CSS 的 class 策略统一管理主题。
6. Edge 部署
使用 Cloudflare Workers Static Assets 托管前端静态资源,获得全球边缘分发能力。
原方案的技术选型也是围绕这一目标展开:React 19、Vite 8、TypeScript、Shadcn/ui、Tailwind CSS、React Router 7,以及 Cloudflare Workers Static Assets。
三、整体架构
整体可以划分为五层:
┌────────────────────────────────────────────┐
│ Admin UI │
│ │
│ Login / Users / Sync / Config / BI / ... │
└─────────────────────┬──────────────────────┘
│
▼
┌────────────────────────────────────────────┐
│ Application Layer │
│ │
│ Router / Permission / Auth / State / UI │
└─────────────────────┬──────────────────────┘
│
▼
┌────────────────────────────────────────────┐
│ API Layer │
│ │
│ API Client / Encryption / Error Handling │
└─────────────────────┬──────────────────────┘
│
┌─────────┼──────────┐
▼ ▼ ▼
Admin BFF BI Storage
│
▼
Cloudflare Edge其中前端 Admin SPA 主要负责:
UI
Routing
Permission Presentation
Session Management
API Request
Data Visualization服务端负责:
Authentication
Authorization
Data Access
Configuration
Audit这种划分可以让前端承担“管理界面”的职责,而不会将服务端权限逻辑错误地放在浏览器中。
四、技术栈
| 类别 | 技术 | 作用 |
|---|---|---|
| Framework | React | UI 与组件系统 |
| Language | TypeScript | 类型安全 |
| Build | Vite | 构建与开发环境 |
| UI | Shadcn/ui | 基础 UI 组件 |
| Primitive | Radix Primitives | 无样式交互原语 |
| CSS | Tailwind CSS | Utility-first 样式 |
| Router | React Router | 路由与页面导航 |
| Deployment | Cloudflare Workers Static Assets | Edge 静态资源托管 |
原始方案采用的技术栈与这一分层基本一致。
五、应用目录设计
后台应用可以按照业务职责组织:
src/
├── App.tsx
│
├── pages/
│ ├── Login.tsx
│ ├── Welcome.tsx
│ ├── Users.tsx
│ ├── Sync.tsx
│ ├── WorkerConfig.tsx
│ ├── BiReport.tsx
│ ├── Monitor.tsx
│ ├── Audit.tsx
│ └── Upload.tsx
│
├── hooks/
│ └── useAuth.tsx
│
└── lib/
├── api.ts
├── crypto.ts
└── permissions.ts核心原则是:
Page
↓
Hook / Business Logic
↓
API Client
↓
Backend页面组件不应该直接处理:
- 加密算法
- Session 校验
- 权限判断细节
- HTTP 错误解析
这些能力应该收敛到公共模块。
六、路由设计
后台系统采用“路由即功能模块”的设计。
/login
/welcome
/users
/sync
/worker-config
/bi-report
/monitor
/audit
/upload可以进一步抽象成:
Route
│
├── Public
│ └── /login
│
└── Protected
├── /welcome
├── /users
├── /sync
├── /worker-config
├── /bi-report
├── /monitor
├── /audit
└── /upload原方案中的路由也采用这种模块化设计,并为各模块配置独立权限标识。
七、路由守卫
不能因为用户能够访问某个 URL,就认为用户拥有该功能。
因此路由需要经过统一权限守卫:
Browser
│
▼
React Router
│
▼
Authentication
│
▼
PermissionRoute
│
├── No Permission
│ │
│ ▼
│ /welcome
│
└── Permission
│
▼
Page例如:
/users需要:
users权限。
而:
/monitor需要:
monitor权限。
八、权限模型
后台系统采用三级权限:
edit
read
none可以表示为:
Permission
│
┌─────────┼─────────┐
▼ ▼ ▼
edit read none含义:
edit
可以查看和修改。
read
只能查看。
none
无权访问。
这种模型比单纯的:
admin / user更加细粒度。
九、权限与 UI
权限不仅用于路由。
对于页面内部的操作,也应该根据权限控制。
例如:
User List
│
├── View
│
├── Edit
│
├── Delete
│
└── Reset Password如果用户只有:
users = read则:
View → enabled
Edit → hidden / disabled
Delete → hidden / disabled
Reset → hidden / disabled可以封装成:
const canEdit = useCanEdit("users");或者:
const permission = usePermission("users");原方案也是通过 usePermission、useCanEdit 等 Hook 将权限判断统一收敛。
十、权限的两层防线
需要特别注意:
前端权限控制只是用户体验层面的控制,真正的权限边界必须位于服务端。
因此应该形成:
User Request
│
┌───────┴───────┐
▼ ▼
Frontend Backend
Guard Guard
│ │
▼ ▼
UI UX Security Boundary前端负责:
是否显示菜单
是否显示按钮
是否允许进入页面服务端负责:
是否真的允许执行操作即使用户手动构造 HTTP 请求绕过前端,服务端仍然应该返回:
403 Forbidden十一、认证体系
登录页面提供:
Email
Password登录流程:
┌──────────┐
│ Admin UI │
└────┬─────┘
│
│ credentials
▼
┌───────────────┐
│ Encrypt │
└────┬──────────┘
│
│ POST /login
▼
┌───────────────┐
│ Admin BFF │
├───────────────┤
│ decrypt │
│ verify user │
│ create session│
└────┬──────────┘
│
▼
Session Token前端收到 Session 后进入管理控制台。
十二、Session 保活
后台系统与普通内容网站不同。
管理员可能长时间打开页面,同时网络环境可能发生短暂变化。
因此采用周期性的 Session 验证。
当前方案设置:
15 秒执行一次 Session Verify。
Browser
│
├── 15s → /verify
├── 15s → /verify
├── 15s → /verify
└── ...原方案明确采用 15 秒轮询,并连续失败 3 次后才登出,以容忍短暂网络抖动。
十三、为什么不是一次失败就登出
如果:
verify
↓
network error立即退出用户,会产生非常差的管理体验。
例如:
网络瞬断
↓
verify 失败
↓
立即 logout
↓
重新登录因此采用:
Failure Count
│
├── 1 → Continue
├── 2 → Continue
└── 3 → Logout这相当于增加了一层简单的网络抖动容错。
十四、认证状态机
可以进一步将 Session 抽象成状态机:
┌─────────────┐
│ Unauthenticated
└──────┬──────┘
│ login
▼
┌─────────────┐
│ Authenticated
└──────┬──────┘
│ verify
▼
┌─────────────┐
│ Refresh │
└──────┬──────┘
│
┌─────────┴─────────┐
▼ ▼
Success Failure
│ │
▼ ▼
Authenticated Retry Counter
│
▼
Threshold Reached
│
▼
Unauthenticated这样比在多个组件中分别管理 Session 状态更加清晰。
十五、首次使用流程
对于尚未初始化的系统,可以提供首次设置密码流程:
Login
│
▼
Account Exists?
│
├── Yes
│ ↓
│ Normal Login
│
└── No
↓
Set Initial Password
↓
Create Root Account初始化账号拥有完整管理权限。
需要注意,生产系统应根据具体安全要求增加:
- 初始化凭据保护
- 一次性初始化 Token
- 初始化有效期
- 审计记录
- 强密码策略
避免简单的“账号不存在即自动初始化”成为安全入口。
十六、API Client
前端不建议在页面中直接使用:
fetch(...)而应该统一封装 API Client:
Page
│
▼
API Client
│
├── Encrypt
├── Headers
├── Timeout
├── Error Handling
├── 401 Handling
│
▼
Backend原方案中的 API 客户端统一负责加密请求、30 秒超时和 401 跳转。
十七、统一 HTTP 超时
后台系统不能让请求无限等待。
可以统一设置:
Request Timeout
↓
30 seconds流程:
Request
│
▼
30s Timeout
│
├── Success → Response
│
└── Timeout → Error尤其是 BI 大查询和数据同步类请求,更需要明确的超时边界。
十八、401 统一处理
如果 API 返回:
401 Unauthorized说明当前 Session 已经失效。
API Client 可以统一处理:
API Response
│
├── 2xx → Return
│
├── 401 → Clear Session
│ ↓
│ /login
│
└── Other → Error Handler这样页面不需要重复实现:
if (response.status === 401)十九、BI 报表设计
BI 报表属于后台系统中数据量较大的功能。
原方案设置:
Default Limit: 500
Maximum Limit: 100,000同时限制表格实际展示数量。
整体数据链路:
Admin UI
│
▼
BI Query
│
▼
BI Service
│
▼
Result
│
├── Filter
├── Sort
├── Deduplicate
└── Visualization二十、为什么查询数量与展示数量分离
这是 BI 页面中一个很实用的设计。
例如:
Query Result
↓
50,000 rows并不意味着浏览器需要同时渲染 50,000 行。
因此可以拆成:
Data Query
│
▼
Up to 100k
│
▼
Frontend Dataset
│
├── Table → First 100
├── Chart → Aggregated
└── CSV → Full Dataset这样可以在保留数据处理能力的同时,避免 DOM 渲染过量。
二十一、多字段筛选
BI 查询支持多个字段组合:
Condition A
Condition B
Condition C并支持:
AND
OR例如:
(A AND B) OR C前端应该将筛选条件抽象成结构化 Query Model,而不是拼接字符串。
例如:
interface Filter {
field: string;
operator: string;
value: unknown;
}进一步:
interface FilterGroup {
operator: "AND" | "OR";
filters: Filter[];
}这样可以让:
- UI
- Query Builder
- API 参数
- 数据导出
共享同一套数据结构。
二十二、BI 缓存策略
后台查询通常存在明显的时间特征。
例如:
今日数据
↓
变化频繁而:
历史数据
↓
变化较少因此采用不同缓存 TTL:
| 数据 | TTL |
|---|---|
| 今日数据 | 2 分钟 |
| 历史数据 | 30 分钟 |
原方案也明确采用这一缓存策略。
可以抽象成:
Query
│
▼
Cache
│
├── Hit → Return
│
└── Miss
│
▼
BI API
│
▼
Cache二十三、缓存边界
当前缓存属于页面级 / 模块级缓存。
因此:
Component Mount
↓
Create Cache
↓
Query
↓
Reuse
↓
Component Unmount
↓
Clear这种策略简单可靠,但不会自动形成跨用户、跨页面的全局缓存。
因此多人同时查询相同数据时,并不会天然共享同一份浏览器缓存。
这是客户端缓存与服务端缓存之间的重要区别。
二十四、CSV 导出
BI 数据导出与表格展示应该解耦。
Query Result
│
┌─────────┴─────────┐
▼ ▼
Table CSV
First 100 Full Data表格:
100 rowsCSV:
Full Dataset这样既能保证 UI 性能,又可以满足数据导出需求。
对于大数据量导出,还需要关注浏览器内存占用。
二十五、响应式设计
后台系统不能简单地把桌面布局缩小到手机。
应该根据设备尺寸改变信息组织方式。
整体策略:
Desktop
│
├── Sidebar
├── Table
└── Multi-column Layout
Mobile
│
├── Sheet Navigation
├── Card List
└── Single-column Layout二十六、侧边栏
桌面:
┌──────┬───────────────────┐
│ │ │
│ Side │ Content │
│ bar │ │
│ │ │
└──────┴───────────────────┘移动端:
┌───────────────────┐
│ ☰ Page │
├───────────────────┤
│ │
│ Content │
│ │
└───────────────────┘侧边栏隐藏后,通过顶部菜单按钮打开 Sheet。
原方案采用 lg 断点控制桌面侧边栏,并在移动端通过 Sheet 唤出。
二十七、列表双布局
用户管理等数据列表不应该强制使用桌面 Table。
桌面:
┌──────┬──────┬──────┬──────┐
│ Name │ Role │ State│ Action│
├──────┼──────┼──────┼──────┤
│ ... │ ... │ ... │ ... │
└──────┴──────┴──────┴──────┘移动端:
┌──────────────────┐
│ User │
│ Role: ... │
│ State: ... │
│ [Action] │
└──────────────────┘即:
Desktop → Table
Mobile → Card这种方式比简单给 Table 加横向滚动更适合后台操作。
二十八、Dialog 移动端适配
桌面端 Dialog 可以拥有较大的固定宽度。
移动端则需要:
width: calc(100% - 2rem);
max-height: 90dvh;
overflow-y: auto;核心目标是:
Viewport
│
├── Safe Margin
│
▼
Dialog
│
└── Internal Scroll避免表单内容超出屏幕。
二十九、Worker 配置页面
配置管理属于典型的管理型 UI。
桌面:
┌───────────────┬──────────────────┐
│ Config Name │ Value │
├───────────────┼──────────────────┤
│ interval │ 5 │
│ threshold │ 2.5 │
└───────────────┴──────────────────┘移动端:
Config Name
↓
Value即:
Desktop → Row
Mobile → Column这种布局转换可以通过 Tailwind 响应式 class 实现。
三十、监控数据可视化
性能监控页面通常包含:
Total
Average
Good
Warning
Poor移动端采用单列:
┌──────────┐
│ P3 │
└──────────┘
┌──────────┐
│ P2 │
└──────────┘
┌──────────┐
│ P1 │
└──────────┘
┌──────────┐
│ P0 │
└──────────┘桌面端则可以使用:
grid-cols-4提高信息密度。
三十一、暗色模式
主题切换采用 Tailwind CSS:
class strategy基本模型:
<html class="dark">组件通过:
dark:*提供暗色样式。
这样主题状态只需要在应用根节点维护,而无需让每个业务组件自己维护 Theme State。
三十二、加密通信
管理后台与 BFF 之间采用:
AES-256-GCM
+
HMAC-SHA256进行请求保护。
数据链路:
Admin SPA
│
▼
Encrypt
│
▼
HTTPS
│
▼
Admin BFF
│
▼
Verify / Decrypt具体加密机制由 API Client 与 Crypto 模块统一处理,而业务页面无需感知底层实现。
原方案明确将 AES-256-GCM + HMAC-SHA256 封装为独立加密模块。
三十三、加密方案的安全边界
需要明确一个工程上的事实:
如果加密密钥需要随前端应用一起发布,那么它并不能被视为真正的服务端秘密。
因此:
Frontend Encryption主要提供的是额外的数据保护,而不是替代:
HTTPS
+
Session Authentication
+
Server Authorization真正的权限边界始终应该位于 BFF 服务端。
因此后台系统的安全模型应该理解为:
TLS
+
Authentication
+
Authorization
+
Request Integrity而不是单纯依赖前端加密。
三十四、数据同步模块
后台可以提供手动触发的数据同步能力:
Admin
│
▼
Sync Task
│
▼
External API
│
▼
Transform
│
▼
Storage同步操作属于具有副作用的操作,因此需要:
Permission Check
+
Loading State
+
Error Handling
+
Audit页面应该明确显示:
Syncing...
Success
Failed而不是让用户点击按钮后无法判断任务状态。
三十五、配置管理与数据同步的区别
虽然两者都是管理操作,但语义不同。
配置管理
Admin
↓
Configuration
↓
Runtime Worker目标是:
改变系统行为。
数据同步
Admin
↓
External API
↓
Storage目标是:
更新系统数据。
因此在 UI 和权限模型中最好保持两个独立模块。
三十六、审计日志
后台系统中的关键操作应该可以追踪:
Who
What
When
Resource
Result例如:
{
"operator": "user",
"action": "config.update",
"resource": "worker",
"timestamp": 1710000000000
}建议将审计作为一个独立领域,而不是散落在各业务页面中。
三十七、前端状态管理边界
后台系统不应该把所有状态都塞进一个全局 Store。
可以按照状态生命周期划分:
Application State
│
├── Authentication State
│
├── UI State
│
├── Permission State
│
└── Server Data例如:
Authentication State
currentUser
session
authenticatedUI State
sidebarOpen
theme
dialogServer Data
users
metrics
auditLogs
biReportServer Data 应该尽量保持与服务端数据模型一致,而不是复制出大量派生状态。
三十八、性能设计
后台系统的性能重点与用户端不同。
不应该单纯追求首屏几十毫秒,而应该重点关注:
操作响应时间
大数据查询
DOM 渲染数量
网络请求数量
Session 请求
缓存命中率尤其是 BI 报表。
三十九、BI 大数据量保护
对于最大 100,000 条数据的查询,需要设置多层保护:
BI Query
│
┌──────┴──────┐
▼ ▼
Limit Cache
│ │
└──────┬──────┘
▼
Dataset
│
┌─────────┼─────────┐
▼ ▼ ▼
Table Chart CSV
100 Aggregate Full这样避免“大查询 = 大 DOM”。
四十、Session 轮询的成本
15 秒一次的 Session Verify 意味着:
1 user
≈ 4 requests / minute因此如果后台用户规模增长,需要重新评估这种轮询模型。
可以考虑:
Polling
↓
Longer TTL
↓
Refresh Token
↓
Event-driven / On-demand Verify当前方案的风险分析也指出,持续轮询会增加 Worker 请求量,在并发用户较多时需要关注运行成本。
四十一、缓存策略的进一步演进
当前 BI 缓存属于客户端模块缓存:
Browser
│
▼
Component Cache如果未来出现大量用户查询相同报表,可以进一步增加服务端缓存:
Browser Cache
│
▼
Admin BFF Cache
│
▼
BI Service甚至:
┌── Browser
│
Query ───────┼── BFF Cache
│
└── BI从而减少重复查询。
四十二、错误处理模型
前端应该统一处理:
Network Error
Timeout
401
403
404
500
Business Error建议抽象:
interface ApiError {
code: string;
message: string;
status?: number;
}页面只关心:
成功
失败而具体 HTTP 错误解析交给 API Client。
四十三、测试策略
测试应该覆盖三个层面。
1. Authentication
✓ 正确登录
✓ 错误密码
✓ Session 验证
✓ Session 过期
✓ 网络短暂失败
✓ 连续失败后登出2. Authorization
✓ edit
✓ read
✓ none
✓ 无权限路由
✓ 无权限按钮
✓ 服务端 403原方案也将登录、Session、路由守卫以及 edit/read/none 权限作为核心测试项。
3. Business
✓ User CRUD
✓ Sync
✓ Worker Config
✓ BI Query
✓ Monitor
✓ Audit
✓ Upload四十四、响应式测试
至少需要覆盖:
Desktop
Tablet
Mobile重点检查:
Sidebar
Dialog
Table
Card
Form
Chart
Navigation例如:
Users
Desktop → Table
Mobile → CardSidebar
Desktop → Fixed
Mobile → SheetDialog
Desktop → Centered
Mobile → Full-width + Scroll四十五、上线流程
前端应用采用:
Source
│
▼
TypeScript Check
│
▼
Vite Build
│
▼
Static Assets
│
▼
Cloudflare Edge例如:
npm run build
npm run deploy构建阶段至少应该保证:
TypeScript
+
Vite Build全部通过。
四十六、生产环境配置
前端需要的配置主要分为:
Application Config
│
├── Worker Endpoint
├── BI Endpoint
└── Client Runtime Config敏感配置则应该重新审视是否真的需要进入浏览器。
原方案的生产环境依赖 Worker Endpoint、BI Endpoint 以及对应的客户端配置。
尤其需要注意:
任何进入 Vite 前端构建产物的变量,都应该默认视为客户端可见。
因此不能因为变量名叫:
SECRET
API_KEY
TOKEN就认为它是秘密。
真正的服务端 Secret 应该只存在于服务端运行环境。
四十七、整体数据流
最终整个后台系统可以抽象为:
┌──────────────┐
│ Admin SPA │
└──────┬───────┘
│
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
Authentication Authorization UI State
│ │
└────────┬───────┘
▼
API Client
│
┌─────────────┼──────────────┐
▼ ▼ ▼
Admin BFF BI R2
│
┌─────┼─────┐
▼ ▼ ▼
Users Config Sync
│ │ │
└─────┴─────┘
│
▼
Audit四十八、架构分层总结
从职责上,可以最终形成:
┌───────────────────────────────────┐
│ Presentation │
│ Pages / Components / Responsive UI│
├───────────────────────────────────┤
│ Application │
│ Router / Auth / Permission / Hooks│
├───────────────────────────────────┤
│ Infrastructure │
│ API Client / Crypto / Cache │
├───────────────────────────────────┤
│ Backend │
│ BFF / BI / Storage / External API │
└───────────────────────────────────┘每一层都有明确职责:
| 层 | 负责 |
|---|---|
| Presentation | 页面与交互 |
| Application | 路由、认证、权限 |
| Infrastructure | API、加密、缓存 |
| Backend | 数据与业务控制 |
| Storage | 持久化 |
这样可以避免页面组件逐渐变成“大杂烩”。
四十九、架构演进方向
随着后台系统规模增加,可以从当前架构继续演进。
1. 权限模型
Resource + Level
↓
RBAC
↓
Role + Permission进一步支持:
Role
├── Resource
├── Action
└── Scope2. Session
Polling
↓
Refresh Token
↓
Short-lived Access Token降低长期轮询成本。
3. BI
Client Cache
↓
BFF Cache
↓
Query Cache
↓
Pre-aggregation针对高频报表进一步降低查询压力。
4. Audit
JSON / API
↓
Structured Event
↓
Queue
↓
Log Storage将审计从业务请求中进一步解耦。
5. 文件
Upload
↓
Object Storage
↓
CDN
↓
Image Processing形成独立的静态资源管理链路。
五十、总结
一个现代化运营后台真正需要解决的并不是“如何把页面做出来”,而是如何建立一套可持续演进的管理系统基础设施。
核心架构可以归纳为:
React
+
TypeScript
+
Route Guard
+
Permission Model
+
Session Management
+
API Client
+
Cloudflare Edge其中最重要的设计原则有四个:
1. 权限前后端双重校验
前端控制体验,服务端控制安全边界。
2. 认证逻辑统一
登录、Session、401、权限刷新全部由统一认证层处理。
3. Server Data 与 UI State 分离
避免把服务端数据和界面状态混在一起。
4. 根据设备改变信息结构
移动端不是缩小版桌面后台,而应该使用:
Table → Card
Sidebar → Sheet
Multi-column → Single-column
Dialog → Full-width Scroll最终,一个成熟的后台系统可以抽象成:
┌─────────────────┐
│ Admin SPA │
└────────┬────────┘
│
┌──────────┴──────────┐
│ │
Authentication Authorization
│ │
└──────────┬──────────┘
▼
API Client
│
┌──────────────┼──────────────┐
▼ ▼ ▼
Admin BFF BI R2
│
┌────┼─────┬─────┐
▼ ▼ ▼ ▼
Users Config Sync Audit这套设计适合中小型运营后台、内部管理平台、数据管理控制台以及基于 Cloudflare Edge 部署的轻量级 SaaS 管理端。
其核心价值不在于某一个具体 UI 框架,而在于建立:
路由 → 认证 → 权限 → API → 数据 → 审计
这一条清晰、统一且可演进的管理链路。