538de50bb1
- Prisma User 模型新增 username 字段(唯一索引) - 注册先查重复再创建,返回友好中文提示(非 500) - 登录支持用户名/手机号/邮箱三种方式 - 前端注册表单增加用户名输入框,预校验 2-20 位格式 - 新增 scripts/deploy.sh:一键构建并部署主站+镜像站+重启后端+重载 Nginx - 镜像站 www.yuzhiran.com.cn Nginx 配置与主站同步 - AI 助手架构升级:用户端/管理后台均采用完整 Tool Calling 架构 - 新增 UserAiAssistantService(18 工具)+ AiAssistantController - admin 助手新增 search + mark-all-notifications-read 工具 - 修复注册 500 错误:catch Prisma P2002 → BadRequestException - Baidu Analytics Script 注入 root layout
6.3 KiB
Executable File
6.3 KiB
Executable File
管理后台系统增强方案
概述
宇之然 AI 管理后台当前已有基础框架(用户、课程、提示词、内容、工具、订单、企业版、评论管理),缺少以下核心模块:
- 数据统计分析/图表
- 系统设置/配置
- 运营管理(Banner、推送)
- 权限管理(角色、菜单)
实施方案
1. 数据统计分析/图表
前端实现
- 创建
/admin/analytics页面 - 使用
recharts或chart.js渲染图表 - 时间范围选择器(今日/本周/本月/自定义)
后端 API
GET /api/v1/admin/analytics/overview- 核心指标汇总GET /api/v1/admin/analytics/users- 用户增长趋势GET /api/v1/admin/analytics/revenue- 收入统计GET /api/v1/admin/analytics/activities- 用户活跃度
展示指标
| 指标 | 说明 |
|---|---|
| 总用户数 | 累计注册用户 |
| 活跃用户 | 7日内活跃 |
| 新增用户 | 日/周/月新增 |
| 订单收入 | 日/周/月收入 |
| 订单数 | 日/周/月订单 |
| 转化率 | 付费用户占比 |
| 课程学习次数 | 累计学习次数 |
| 对话次数 | AI 沙盒对话次数 |
2. 权限管理(角色、菜单)
数据库设计
model AdminRole {
id String @id @default(cuid())
name String @unique // 角色名:super_admin, admin, editor, viewer
description String?
permissions Json // ["users:read", "users:write", "orders:read", ...]
status String @default("ACTIVE") // ACTIVE, DISABLED
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
admins AdminUser[]
}
model AdminUser {
id String @id @default(cuid())
username String @unique
passwordHash String
nickname String?
roleId String
role AdminRole @relation(fields: [roleId], references: [id])
status String @default("ACTIVE")
lastLoginAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
功能清单
| 功能 | 说明 |
|---|---|
| 角色列表 | 查看所有角色 |
| 创建角色 | 新建角色,设置权限 |
| 编辑角色 | 修改角色名称、权限 |
| 删除角色 | 软删除角色 |
| 管理员列表 | 查看所有管理员 |
| 创建管理员 | 新建管理员,分配角色 |
| 编辑管理员 | 修改管理员信息、角色 |
| 禁用管理员 | 禁用/启用管理员 |
后端 API
GET /api/v1/admin/roles- 角色列表POST /api/v1/admin/roles- 创建角色PUT /api/v1/admin/roles/:id- 更新角色DELETE /api/v1/admin/roles/:id- 删除角色GET /api/v1/admin/admins- 管理员列表POST /api/v1/admin/admins- 创建管理员PUT /api/v1/admin/admins/:id- 更新管理员DELETE /api/v1/admin/admins/:id- 删除管理员GET /api/v1/admin/permissions- 所有权限项
前端页面
/admin/settings/roles- 角色管理/admin/settings/admins- 管理员列表/admin/settings/permissions- 权限配置
3. 系统设置/配置
配置项分类
| 分类 | 配置项 |
|---|---|
| 站点设置 | 网站名称、LOGO、备案号、联系方式 |
| AI 配置 | 默认模型、可用模型列表、API 密钥 |
| 会员设置 | 免费版配额、会员价格、会员权益 |
| 短信/邮件 | 验证码模板、通知模板 |
| 其他 | 维护模式、调试模式 |
数据库设计
model SystemConfig {
id String @id @default(cuid())
category String // site, ai, member, notification, other
key String @unique // site_name, ai_models, member_prices...
value String // JSON 格式存储
description String?
status String @default("ACTIVE")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
后端 API
GET /api/v1/admin/config- 获取所有配置GET /api/v1/admin/config/:category- 获取分类配置PUT /api/v1/admin/config/:key- 更新配置POST /api/v1/admin/config/batch- 批量更新
前端页面
/admin/settings/general- 通用设置/admin/settings/ai- AI 配置/admin/settings/member- 会员设置/admin/settings/notification- 通知设置
4. 运营管理
4.1 Banner 管理
model Banner {
id String @id @default(cuid())
title String
image String // 图片 URL
link String? // 跳转链接
position String // home, skills, courses, community...
sortOrder Int @default(0)
status String @default("DRAFT") // DRAFT, PUBLISHED, DISABLED
startAt DateTime?
endAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
4.2 推送通知
model SystemNotification {
id String @id @default(cuid())
title String
content String
type String // system, promo, update
target String // all, specific_users, specific_roles
targetIds String? // 用户ID列表或角色ID列表
status String @default("DRAFT")
scheduledAt DateTime? // 定时发送
sentAt DateTime?
createdAt DateTime @default(now())
}
后端 API
GET /api/v1/admin/banners- Banner 列表POST /api/v1/admin/banners- 创建 BannerPUT /api/v1/admin/banners/:id- 更新 BannerDELETE /api/v1/admin/banners/:id- 删除 BannerGET /api/v1/admin/notifications- 推送列表POST /api/v1/admin/notifications- 发送推送DELETE /api/v1/admin/notifications/:id- 删除推送
前端页面
/admin/operations/banners- Banner 管理/admin/operations/notifications- 推送管理/admin/operations/push- 发送推送
开发优先级
| 优先级 | 模块 | 预计工作量 |
|---|---|---|
| P0 | 数据统计分析 | 2-3 小时 |
| P1 | 权限管理 | 3-4 小时 |
| P2 | 系统设置 | 2-3 小时 |
| P3 | Banner 管理 | 1-2 小时 |
| P4 | 推送通知 | 2-3 小时 |
技术选型
- 图表库:
recharts(React 友好) - 表单:复用现有 shadcn/ui
- 权限控制:后端 Guard + 前端路由守卫
- 配置存储:数据库 + 缓存
进度追踪
- 数据统计分析/图表
- 权限管理(角色、菜单)
- 系统设置/配置
- Banner 管理
- 推送通知