JMI-OPENATOM
首页
快速开始
  • 架构概览
  • 项目结构
  • 认证与权限
  • 数据库迁移
  • 配置说明
  • 开发规范
  • 架构概览
  • 项目结构
  • 路由与权限
  • API 请求
  • 组件库
  • UniApp 小程序
  • Docker 部署
  • CI/CD
  • Nginx 反向代理
  • 环境变量
  • QQ 机器人
  • 实验室管理系统
  • API 权限清单
  • 数据库表结构
  • 常见问题
首页
快速开始
  • 架构概览
  • 项目结构
  • 认证与权限
  • 数据库迁移
  • 配置说明
  • 开发规范
  • 架构概览
  • 项目结构
  • 路由与权限
  • API 请求
  • 组件库
  • UniApp 小程序
  • Docker 部署
  • CI/CD
  • Nginx 反向代理
  • 环境变量
  • QQ 机器人
  • 实验室管理系统
  • API 权限清单
  • 数据库表结构
  • 常见问题
  • 数据库

    • 数据库表结构

数据库表结构

概述

系统使用 MySQL 8.0 数据库,字符集 utf8mb4、排序规则 utf8mb4_general_ci。

命名约定:系统表使用 sys_ 前缀(sys_role、sys_permission 等);业务表无前缀(club、club_activity 等),仅历史遗留的 tb_user 保留 tb_ 前缀。

数据库迁移由 Flyway 管理,初始化脚本为 V1__init_schema.sql,已演进到 V53。另有少量表(doc_center_document、shared_file、school_calendar_setting、school_calendar_adjustment)由启动初始化器 SchemaCompatibilityInitializer 以 CREATE TABLE IF NOT EXISTS 运行时创建,不在 Flyway 脚本中。

数据表清单(按业务域)

用户与权限

表说明
tb_user用户表(唯一保留 tb_ 前缀)
sys_role角色表
sys_permission权限点表
sys_user_role用户-角色关联
sys_role_permission角色-权限关联
user_external_identity第三方身份绑定(Google/GitHub/Gitee,V42)
system_setting系统设置

社团与组织

表说明
club社团
club_department部门
club_position岗位
club_position_role岗位角色
club_membership成员关系
club_vice_president副社长(V34)
club_alumni_group校友分组(V29)
club_regulation规章制度(V27)
partner_club合作社团(V38)
unified_group统一分组中心(V48)
unified_group_member统一分组成员
unified_group_binding统一分组绑定(部门/外群/校友)

招新系统

表说明
membership_application入会申请
recruitment_campaign招新计划
approval_record审批记录
interview面试
interview_feedback面试反馈
interview_interviewer面试官关联

活动与签到

表说明
club_activity社团活动
activity_registration活动报名
club_award获奖记录
checkin_session签到会话
checkin_group / checkin_group_member签到分组
checkin_record签到记录
checkin_target签到对象
checkin_exclusion签到豁免
evening_study_schedule晚自习安排(V21)

办公自动化

表说明
leave_application请假申请
office_document文书
document_template文书模板
generated_document生成文档
notification通知
notification_receiver通知接收人
school_calendar_setting / school_calendar_adjustment校历(运行时建表)
doc_center_document文档中心文档(运行时建表)
shared_file共享文件(运行时建表)
mailbox_outbox_event内部邮件出站队列(V52)

互动功能

表说明
blog_article博客文章(V8)
blog_comment博客评论
blog_article_interaction文章互动(点赞/收藏,V9)
vote_campaign投票活动(V16)
vote_option / vote_record投票选项 / 记录
lottery_campaign抽奖活动(V11)
lottery_prize / lottery_winner奖品 / 中奖记录
member_profile成员主页(V43)
member_profile_module主页模块
member_profile_social_link主页社交链接
member_profile_comment主页评论(V44)
member_profile_like主页点赞
next_page_stats / next_page_join加入页统计与报名(V30/V31)

积分系统

表说明
point_account积分账户(V12)
point_transaction积分流水
point_redeem_item兑换商品
point_redemption兑换记录

内容与资源

表说明
image_hosting_asset图床资源(V10)
showcase_app应用展示(V17)
data_open_application数据开放申请(V14)
site_form在线表单
form_submission表单提交

认证与 OAuth

表说明
oauth_clientOAuth 客户端(V15)
oauth_authorization_code授权码

机器人(QQ 群)

表说明
bot_account机器人账号
bot_groupQQ 群(V4)
bot_group_member群成员
bot_group_config / bot_group_announcement群配置 / 公告
bot_group_message_task群消息任务(V7)
bot_join_request入群申请
bot_message_active_member活跃成员统计(V6)
bot_message_stat消息统计
bot_sensitive_word敏感词
bot_auto_review_rule自动审核规则

AI 自动化

表说明
ai_activity_sessionAI 活动会话(V25)
ai_activity_planAI 活动计划
ai_activity_messageAI 活动消息
ai_call_logAI 调用日志

系统日志

表说明
operation_log操作日志
login_log登录日志

Flyway 迁移历史

版本说明
V1初始化全部基础表结构
V2用户表添加 QQ openid
V3请假机器人通知字段
V4-V7机器人群管理、公告、消息任务、活跃成员
V8-V9博客表结构与互动
V10图床资源表
V11抽奖表
V12-V13积分系统与博客审核流
V14数据开放申请
V15OIDC 认证中心
V16投票表
V17-V18应用展示
V19积分金额扩展为 BIGINT
V20OAuth 客户端修复
V21-V23晚自习签到与惩罚规则
V24LMS OAuth 客户端
V25AI 活动自动化
V26运营负责人角色
V27社团规章制度
V28投票结果可见性
V29校友分组功能
V30-V31加入页统计与报名
V32成员删除权限
V33用户 onboarding 完成时间
V34-V35账号激活、副社长、部门副主管
V36-V37群二维码、用户入群时间
V38-V40合作社团及权限修复
V41-V42Google 身份、外部身份绑定
V43-V44成员主页与互动
V45-V47合作社团社长、主页评论管理权限
V48-V49统一分组中心
V50应用展示 AtomGit
V51评论区开关
V52内部邮件出站队列
V53Seafile OAuth 客户端

注意

  • 迁移脚本命名遵循 Flyway 约定:V{数字}__{描述}.sql,序号连续、不可修改已执行脚本。
  • 新增字段或表优先通过 Flyway 迁移脚本,只有极少数运行时兼容场景才在 SchemaCompatibilityInitializer 中兜底。
  • 运维可运行 backend/scripts/check-flyway-migrations.sh 校验迁移脚本完整性。