15 KiB
15 KiB
管理员仪表板系统
**本文档中引用的文件** - [backend/app/main.py](file://backend/app/main.py) - [backend/app/api/admin.py](file://backend/app/api/admin.py) - [backend/app/services/admin.py](file://backend/app/services/admin.py) - [backend/app/models/user.py](file://backend/app/models/user.py) - [backend/app/models/query.py](file://backend/app/models/query.py) - [backend/app/models/citation_record.py](file://backend/app/models/citation_record.py) - [backend/app/api/deps.py](file://backend/app/api/deps.py) - [backend/app/config.py](file://backend/app/config.py) - [backend/app/services/subscription.py](file://backend/app/services/subscription.py) - [frontend/app/(dashboard)/dashboard/admin/page.tsx](file://frontend/app/(dashboard)/dashboard/admin/page.tsx) - [frontend/lib/api.ts](file://frontend/lib/api.ts) - [frontend/components/layout/sidebar.tsx](file://frontend/components/layout/sidebar.tsx) - [frontend/components/layout/header.tsx](file://frontend/components/layout/header.tsx) - [docker-compose.yml](file://docker-compose.yml) - [backend/requirements.txt](file://backend/requirements.txt) - [frontend/package.json](file://frontend/package.json)目录
简介
管理员仪表板系统是一个基于FastAPI和Next.js构建的企业级数据分析平台,主要功能包括系统统计监控、用户管理、查询监控和报告导出。该系统采用前后端分离架构,后端提供RESTful API服务,前端使用React和TypeScript构建现代化的管理界面。
系统的核心特性包括:
- 实时系统统计面板,展示用户数量、查询量、引用次数等关键指标
- 用户生命周期管理,支持用户状态控制和套餐升级
- 查询监控和历史追踪,提供完整的查询执行记录
- 多平台引用数据收集和分析
- 响应式管理界面,支持管理员权限控制
项目结构
该项目采用清晰的分层架构设计,前后端分离开发模式:
graph TB
subgraph "前端 (Frontend)"
FE_APP[Next.js 应用]
FE_COMPONENTS[UI 组件库]
FE_LIB[API 客户端]
FE_LAYOUT[布局组件]
end
subgraph "后端 (Backend)"
BE_API[FastAPI 核心]
BE_MODELS[数据模型]
BE_SERVICES[业务服务]
BE_WORKERS[工作进程]
BE_MIDDLEWARE[中间件]
end
subgraph "基础设施"
DB[(PostgreSQL)]
REDIS[(Redis 缓存)]
CONTAINER[Docker 容器]
end
FE_APP --> BE_API
FE_LIB --> BE_API
BE_API --> BE_MODELS
BE_API --> BE_SERVICES
BE_SERVICES --> DB
BE_WORKERS --> REDIS
BE_WORKERS --> DB
BE_API --> REDIS
CONTAINER --> DB
CONTAINER --> REDIS
图表来源
章节来源
核心组件
后端核心组件
系统后端基于FastAPI构建,包含以下核心组件:
- 应用入口: 主要负责应用初始化、数据库连接和中间件配置
- API路由: 提供认证、查询、引用、报告和管理相关的REST接口
- 业务服务: 实现具体的业务逻辑,如用户管理、统计计算等
- 数据模型: 使用SQLAlchemy ORM定义数据库表结构
- 中间件: 包含CORS、限流和日志记录等功能
前端核心组件
前端使用Next.js框架,包含:
- 管理页面: 主要的管理员界面,展示统计信息和用户管理功能
- API客户端: 封装所有HTTP请求,处理认证和错误
- UI组件: 基于Radix UI和Tailwind CSS构建的现代化组件库
- 布局组件: 包含头部导航和侧边栏菜单
章节来源
架构概览
系统采用微服务架构,前后端完全分离:
sequenceDiagram
participant Client as 前端客户端
participant API as 后端API
participant DB as 数据库
participant Redis as 缓存
participant Worker as 工作进程
Client->>API : 管理员登录请求
API->>DB : 验证用户凭据
DB-->>API : 返回用户信息
API-->>Client : 返回JWT令牌
Client->>API : 获取系统统计
API->>DB : 执行聚合查询
DB-->>API : 返回统计数据
API-->>Client : 返回统计结果
Client->>API : 用户管理操作
API->>DB : 更新用户状态/套餐
DB-->>API : 确认操作结果
API-->>Client : 返回操作结果
Note over Worker,DB : 异步任务处理
Worker->>DB : 查询执行
Worker->>Redis : 缓存结果
图表来源
详细组件分析
管理员API模块
管理员API模块提供了完整的用户管理和系统监控功能:
classDiagram
class AdminRouter {
+get_stats() StatsResponse
+get_users() UserListResponse
+get_user_detail() UserDetailsResponse
+toggle_user_active() ToggleResponse
+update_user_plan() PlanUpdateResponse
}
class AdminService {
+get_system_stats() dict
+get_users() dict
+get_user_detail() dict
+toggle_user_active() dict
+update_user_plan() dict
}
class UserModel {
+id : UUID
+email : string
+plan : string
+is_active : boolean
+is_admin : boolean
+max_queries : int
}
AdminRouter --> AdminService : 调用
AdminService --> UserModel : 操作
图表来源
- backend/app/api/admin.py:17-108
- backend/app/services/admin.py:14-188
- backend/app/models/user.py:11-48
系统统计功能
系统统计功能提供实时的业务指标监控:
| 指标名称 | 描述 | 计算方式 |
|---|---|---|
| 总用户数 | 平台注册用户总数 | COUNT(users) |
| 总查询数 | 所有查询任务总数 | COUNT(queries) |
| 总引用次数 | 所有引用记录总数 | COUNT(citation_records) |
| 引用率 | 成功引用的百分比 | (cited_count/total_citations)*100 |
| 今日活跃用户 | 当天有查询行为的用户数 | COUNT(DISTINCT user_id WHERE last_queried >= today) |
用户管理功能
用户管理功能支持管理员对用户进行全生命周期管理:
flowchart TD
Start([用户管理请求]) --> CheckAdmin["检查管理员权限"]
CheckAdmin --> |权限不足| Forbidden["返回403错误"]
CheckAdmin --> |权限充足| Action{"选择操作类型"}
Action --> |获取统计| GetStats["调用统计服务"]
Action --> |获取用户列表| GetUsers["调用用户服务"]
Action --> |获取用户详情| GetUserDetail["调用用户详情服务"]
Action --> |切换用户状态| ToggleUser["调用状态切换服务"]
Action --> |更新套餐| UpdatePlan["调用套餐更新服务"]
GetStats --> ReturnStats["返回统计结果"]
GetUsers --> ReturnUsers["返回用户列表"]
GetUserDetail --> ReturnDetail["返回用户详情"]
ToggleUser --> ReturnToggle["返回状态切换结果"]
UpdatePlan --> ReturnPlan["返回套餐更新结果"]
ReturnStats --> End([完成])
ReturnUsers --> End
ReturnDetail --> End
ReturnToggle --> End
ReturnPlan --> End
Forbidden --> End
图表来源
章节来源
前端管理界面
前端管理界面采用现代化的设计理念,提供直观的用户操作体验:
graph LR
subgraph "管理界面组件"
StatsCards[统计卡片组]
UserTable[用户表格]
SearchBar[搜索框]
Pagination[分页控件]
ActionDialog[操作对话框]
end
subgraph "交互流程"
SearchInput[搜索输入]
PageChange[页面切换]
UserAction[用户操作]
ConfirmAction[确认操作]
end
StatsCards --> UserTable
SearchBar --> UserTable
Pagination --> UserTable
UserTable --> ActionDialog
SearchInput --> SearchBar
PageChange --> Pagination
UserAction --> ActionDialog
ConfirmAction --> ActionDialog
图表来源
统计面板设计
管理界面包含四个核心统计卡片:
- 总用户数: 展示平台用户总量,使用蓝色主题
- 总查询数: 显示所有查询任务的累计数量,使用绿色主题
- 总引用次数: 统计所有引用记录的数量,使用紫色主题
- 引用率: 显示成功引用占总引用的比例,使用琥珀色主题
每个统计卡片都包含图标、数值和颜色编码,提供直观的数据可视化效果。
用户管理表格
用户管理表格支持多种操作和筛选功能:
| 列字段 | 功能描述 | 交互方式 |
|---|---|---|
| 邮箱 | 用户标识信息 | 只读显示 |
| 用户名 | 用户昵称 | 只读显示 |
| 套餐 | 用户当前套餐 | 下拉选择修改 |
| 查询数 | 用户历史查询数量 | 只读显示 |
| 邮箱验证 | 验证状态标识 | 状态徽章显示 |
| 状态 | 用户账户状态 | 启用/禁用按钮 |
| 注册日期 | 账户创建时间 | 日期格式化显示 |
| 操作 | 用户管理功能 | 按钮组操作 |
章节来源
数据模型设计
系统使用SQLAlchemy ORM定义了完整的数据模型层次:
erDiagram
USERS {
uuid id PK
string email UK
string password_hash
string name
string plan
integer max_queries
boolean is_active
boolean email_verified
string verification_code
datetime verification_code_expires
string reset_token
datetime reset_token_expires
string avatar_url
boolean is_admin
datetime created_at
datetime updated_at
}
QUERIES {
uuid id PK
uuid user_id FK
string keyword
string target_brand
json brand_aliases
json platforms
string frequency
string status
datetime last_queried_at
datetime next_query_at
datetime created_at
datetime updated_at
}
CITATION_RECORDS {
uuid id PK
uuid query_id FK
string platform
boolean cited
integer citation_position
text citation_text
json competitor_brands
text raw_response
float confidence
string match_type
datetime queried_at
}
SUBSCRIPTIONS {
uuid id PK
uuid user_id FK
string plan
string status
date start_date
date end_date
integer amount
string payment_method
datetime created_at
}
USERS ||--o{ QUERIES : 创建
QUERIES ||--o{ CITATION_RECORDS : 产生
USERS ||--o{ SUBSCRIPTIONS : 订阅
图表来源
- backend/app/models/user.py:11-48
- backend/app/models/query.py:11-55
- backend/app/models/citation_record.py:11-44
章节来源
- backend/app/models/user.py:1-48
- backend/app/models/query.py:1-55
- backend/app/models/citation_record.py:1-44
依赖关系分析
系统采用模块化的依赖管理策略:
graph TB
subgraph "后端依赖"
FastAPI[FastAPI Web框架]
SQLAlchemy[SQLAlchemy ORM]
AsyncPG[异步PostgreSQL驱动]
Redis[Redis缓存]
APScheduler[任务调度]
JWT[JWT认证]
end
subgraph "前端依赖"
NextJS[Next.js框架]
React[React 18]
RadixUI[Radix UI组件]
TailwindCSS[Tailwind CSS]
Recharts[数据可视化]
NextAuth[身份认证]
end
subgraph "开发工具"
TypeScript[TypeScript]
ESLint[ESLint]
Tailwind[Tailwind配置]
end
FastAPI --> SQLAlchemy
FastAPI --> Redis
FastAPI --> JWT
NextJS --> React
NextJS --> RadixUI
NextJS --> TailwindCSS
NextJS --> Recharts
NextJS --> NextAuth
图表来源
Docker容器编排
系统使用Docker Compose进行容器编排,确保开发环境的一致性:
| 服务名称 | 端口映射 | 依赖服务 | 功能描述 |
|---|---|---|---|
| db | 5432:5432 | - | PostgreSQL数据库服务 |
| redis | 6379:6379 | - | Redis缓存和会话存储 |
| backend | 8000:8000 | db, redis | FastAPI后端服务 |
| frontend | 3000:3000 | backend | Next.js前端服务 |
章节来源
性能考虑
系统在设计时充分考虑了性能优化:
数据库优化
- 使用索引优化常用查询条件
- 实现分页查询避免大数据集加载
- 采用异步数据库连接池提高并发性能
缓存策略
- Redis缓存热点数据和会话信息
- API响应缓存减少重复计算
- 浏览器端数据缓存提升用户体验
前端性能
- 组件懒加载和代码分割
- 图标和静态资源优化
- 响应式设计适配不同设备
故障排除指南
常见问题及解决方案
| 问题类型 | 症状描述 | 可能原因 | 解决方案 |
|---|---|---|---|
| 登录失败 | 无法访问管理界面 | JWT令牌过期或无效 | 检查令牌有效期,重新登录 |
| 数据加载失败 | 统计数据不显示 | 数据库连接异常 | 检查数据库服务状态 |
| 用户操作失败 | 用户状态无法更改 | 权限不足或数据验证错误 | 确认管理员权限和输入参数 |
| API请求超时 | 页面加载缓慢 | 网络延迟或服务器负载高 | 检查网络连接和服务器状态 |
开发环境调试
- 后端调试: 使用Uvicorn的reload模式进行热重载开发
- 前端调试: Next.js的开发服务器提供实时刷新功能
- 数据库调试: 使用psql命令行工具连接PostgreSQL
- 缓存调试: Redis CLI检查缓存状态和键值
章节来源
结论
管理员仪表板系统是一个功能完整、架构清晰的企业级管理平台。系统采用现代化的技术栈,提供了完善的用户管理和系统监控功能。通过前后端分离的设计,系统具有良好的可维护性和扩展性。
主要优势包括:
- 完整的管理员权限控制机制
- 实时的业务指标监控面板
- 灵活的用户管理功能
- 现代化的前端用户体验
- 完善的开发环境和部署配置
未来可以考虑的功能增强:
- 添加更详细的审计日志功能
- 实现多租户支持
- 增加更多数据可视化图表
- 集成更多的第三方平台API