基于规则配置的一站式论文排版工具,让排版从几个小时变成几分钟。
毕业论文自动排版系统 是一个基于规则配置驱动的学术文档排版工具,通过可视化规则配置 + 自动排版引擎,快速生成符合学校规范的论文。内置三线表、ER 图、系统架构图、流程 DSL、自由绘画等图表工具,并提供团队协作、模板市场与后台管理能力。
核心思想:用户配置规则 → 引擎自动排版 → 一键下载规范文档,无需手动调整字体、字号、行距、页眉页脚。
- 规则配置驱动:页面设置(纸张/页边距/页眉页脚/页码)、标题格式(一/二/三级)、正文格式(行距/缩进/对齐)、图表编号规则,全部可视化配置
- 自动排版引擎:识别章节结构、统一字体字号、自动生成目录、摘要/英文摘要独立分页、参考文献格式化
- 图表题注:图片/表格自动编号(
图3-1、表3-1),可开关控制 - 编号统一化:自动识别并统一章节/列表编号风格
- 任务队列调度:按并发上限派发、超大文档保护、失败自动重试,SSE 实时推送排版进度
- 排版体检报告:结构计数与可疑标题提示,一键指定级别重排;排版前后差异对比(差异索引 + 双侧文本定位)
- 校规导入向导:从校规文档启发式抽取字体/字号/行距/边距/编号规则并附原文依据,逐项确认套用
- 实时预览:配置页快速试排与实时预览,预览页跟随边距与纸张
- 双重验证码:注册/登录需通过图形验证码,注册还须邮箱验证码(QQ 邮箱 SMTP 发送,5 分钟有效,60 秒限流)
- BCrypt 密码加密:密码加盐哈希存储,不存明文
- 登录限流:连续 5 次失败锁定 10 分钟(账号 + IP 双维度),防暴力破解
- 忘记密码:邮箱验证码重置密码,重置后旧 Token 全部失效
- 账号自管理:个人资料扩展字段、换绑邮箱与修改密码(双验证码校验),改密后旧 Token 全部吊销
- XSS 防护:全局过滤器对 JSON 请求体转义,SQL 注入由 MyBatis-Plus 参数化查询天然防护
- 团队空间:创建/邀请(需对方同意)/成员管理/退出/解散
- 模板、任务、论文归属团队并在团队内共享可见,权限越界校验
- 站内信通知:邀请与处理结果、团队模板修订提醒
- 模板上架审核、分类筛选与排序、下载量与评分
- 模板收藏、配置导出/导入 JSON、两两参数对比
- RBAC 权限体系:菜单/角色/按钮级权限管理
- 用户管理:批量封禁/启用/重置密码;任务重跑与取消;公告定向推送站内信
- 系统参数(上传大小上限/任务并发/文件保留天数)与字典(市场分类)后台可调,运行时生效
- 数据库自动备份(手动/定时/下载)与保留策略,操作/登录审计日志
- 一键生成规范三线表 Word 文档(顶线/底线 1.5pt、栏目线 0.75pt、无竖线)
- 支持从 SQL
CREATE TABLE语句自动解析生成 - 实时预览、多格式导出
- 输入实体/属性/关系,自动生成标准 Chen 记法 ER 图
- 实体矩形、属性椭圆(主键下划线)、关系菱形、基数嵌入连线
- 后端力导向布局 + AntV X6 渲染,支持 SVG/PNG 导出、布局保存
- 结构化分层配置:自定义层(客户端/业务层/服务应用层/数据层...),每层自由添加组件
- 规则引擎自动识别组件类型(Vue/SpringBoot/MySQL/Redis/Nginx...)
- 生成标准分层架构图(层容器 + 组件卡片 + 虚线分隔),SVG/PNG 导出
- 流程 DSL 解析器:用
if(条件)/else+ 缩进书写流程逻辑,自动生成分支流程图 - 泳道图:按角色自动分泳道
- Dagre 自动布局
- 内嵌 drawio 官方编辑器:拖拽图形、连线吸附、悬停箭头快捷建图
- 图纸保存/载入、导出 PNG、全部图表支持 Mermaid 按图导出
| 层 | 技术 |
|---|---|
| 后端 | Spring Boot 2.7 · MyBatis-Plus · MySQL 8 · Apache POI · JWT |
| 前端 | Vue 3 · Element Plus · AntV X6 · @antv/layout · html2canvas · Vite |
| 构建 | Maven · npm · JDK 1.8 |
Important
需要 JDK 1.8+、Maven 3.9+、MySQL 8.0+、Node.js 18+
创建数据库 thesis_format,系统启动时自动执行建表脚本。
mysql -u root -p -e "CREATE DATABASE thesis_format DEFAULT CHARACTER SET utf8mb4;"cd backend
set DB_PASSWORD=你的数据库密码
set MAIL_PASSWORD=你的邮箱SMTP授权码 # 可选, 用于邮箱验证码发送
mvn package -DskipTests
java -jar target/thesis-format.jar服务运行在
http://localhost:8080默认发件邮箱为2651896126@qq.com(SMTP 配置见application.yml的spring.mail)
cd frontend
npm install
npm run dev访问
http://localhost:5173
Graduated/
├── backend/ # Spring Boot 后端
│ └── src/main/java/com/graduate/thesis/
│ ├── controller/ # 接口: 用户/模板/论文/团队/ER图/三线表/系统图
│ ├── service/ # 业务 + 排版引擎 + 图表生成器
│ ├── engine/ # 排版引擎(结构识别/格式化)
│ └── dto/ # 请求/响应模型
├── deploy/ # Docker 编排/一键部署更新脚本/SQL 迁移
└── frontend/ # Vue 3 前端
└── src/
├── views/ # 页面(首页/模板/任务/图表工具/团队/后台管理)
├── api/ # 接口封装
└── router/ # 路由
| 配置项 | 说明 |
|---|---|
DB_PASSWORD |
数据库密码,通过环境变量配置 |
MAIL_PASSWORD |
邮箱 SMTP 授权码(用于发送邮箱验证码) |
JWT_SECRET |
JWT 密钥,通过环境变量配置 |
THESIS_ADMIN_PASSWORD |
后台管理员密码,通过环境变量配置 |
STORAGE_DIR |
文件存储目录,默认 ./data/storage |
1. 注册/登录
↓
2. 创建格式模板(页面/标题/正文/图表规则)
↓
3. 上传论文文档
↓
4. 选择模板自动排版
↓
5. 下载规范论文
欢迎提交 Issue 和 Pull Request。如果是基于本项目开发的衍生项目,请在 README 中注明。
本项目仅供学习交流使用,基于 MIT License。
# 1. 启动后端(需先配置环境变量: DB_URL/DB_USERNAME/DB_PASSWORD/JWT_SECRET/THESIS_ADMIN_PASSWORD/MAIL_PASSWORD)
# IDEA 运行 ThesisApplication, 等控制台出现 "Started ThesisApplication" 即就绪
# 2. 启动前端
cd frontend && npm install && npm run dev # http://localhost:5173- 日志同时输出到控制台与
backend/logs/thesis-format.log(按天滚动, 保留 7 天), 每行携带traceId; 前端收到 "系统繁忙 (traceId: xxxxx)" 时, 可直接在后端日志里检索该 traceId 定位堆栈。 - 后端未启动/正在重启时, 前端请求会返回明确的 503 提示, 页面右下角会显示"后端服务未连接"状态。
- vite 开发服务器在本机只监听 IPv6
[::1], 浏览器通过localhost访问不受影响; 若需局域网访问请配置server.host。