Files
yuzhiran-dev 538de50bb1 注册支持用户名/手机号/邮箱 + 镜像站部署脚本 + AI 助手 Tool Calling 重构
- 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
2026-06-01 23:14:42 +08:00

6.3 KiB
Executable File

管理后台系统增强方案

概述

宇之然 AI 管理后台当前已有基础框架(用户、课程、提示词、内容、工具、订单、企业版、评论管理),缺少以下核心模块:

  1. 数据统计分析/图表
  2. 系统设置/配置
  3. 运营管理(Banner、推送)
  4. 权限管理(角色、菜单)

实施方案

1. 数据统计分析/图表

前端实现

  • 创建 /admin/analytics 页面
  • 使用 rechartschart.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 - 创建 Banner
  • PUT /api/v1/admin/banners/:id - 更新 Banner
  • DELETE /api/v1/admin/banners/:id - 删除 Banner
  • GET /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 管理
  • 推送通知