Skip to content

hza2002/ReviewSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

文档评审管理系统

一个面向小规模内部使用场景的文档评审系统,支持文档上传、任务分配/认领、评审提交与日志追踪,采用前后端分离架构实现完整评审闭环。

系统功能模块图

技术栈

  • 前端:Vue 3、Vite、Element Plus、Axios、Pinia、Vue Router
  • 后端:Spring Boot 3、Spring Security、JWT、MyBatis-Plus
  • 数据与存储:MySQL、本地文件存储(Word 文档与头像)
  • 其他:Maven、Hutool、Lombok、Mammoth.js(Word 在线预览)

系统架构

  • 前后端分离:前端负责页面交互与权限跳转,后端提供 RESTful API 与业务规则
  • 权限模型:管理员(文档/用户/日志管理)与评审员(认领任务、评审文档)角色隔离
  • 业务主线:文档上传 -> 任务分配/认领 -> 文档评审 -> 日志追踪与统计
  • 业务边界:针对低并发、内部使用场景设计,强调流程完整性与可维护性

项目结构

ReviewSystem/
├── frontend/    # 前端工程:页面、路由、状态管理、请求封装
├── backend/     # 后端工程:REST API、业务服务、权限认证、数据访问
├── file/        # 本地文件存储目录(文档与头像)
├── assets/      # README 图片
└── README.md

核心功能

通用能力

  • 用户注册/登录、账号设置(邮箱/用户名/密码/头像)
  • 基于 JWT 的登录态维持与路由访问控制

评审员能力

  • 查看已分配文档并提交评审意见
  • 主动认领待分配文档,支持预览后领取

管理员能力

  • 文档上传、文档信息维护、在线预览
  • 多选文档与多评审员的任务分配(平均分配/负载均衡)
  • 用户管理(角色修改、启用/禁用、批量创建)

日志能力

  • 文档日志与用户日志查询、筛选、排序与追溯

关键机制与实现要点

认证与鉴权

  • 后端通过 Spring Security + JwtAuthenticationFilter 构建无状态认证链路,/login/register 放行,其余接口需认证
  • 前端通过 Axios 请求拦截器透传 Token,响应拦截器处理登录失效;路由守卫限制未登录访问
  • 密码采用 BCrypt 加密存储,JWT 包含用户标识与过期时间(1 天)

文档流转机制

  • 文档状态按 UPLOADED -> ASSIGNED -> REVIEWED 流转,并记录上传/分配/完成时间戳
  • 评审提交时校验“文档存在 + 归属当前评审员 + 状态允许评审”,避免越权与重复处理

任务分配策略

  • average:按文档数对选中评审员做均匀切片
  • balance:按评审员当前待审任务数优先分配给负载更低者

文件与校验策略

  • 文档上传仅允许 docx 且限制 5MB;头像仅允许 jpg/jpeg/png 且限制 2MB
  • 数据库仅保存文件名,文件内容落本地目录(file.base-dir),避免大对象入库

一致性与可追溯

  • Service 层事务控制(失败回滚),统一业务异常处理(ServiceException + GlobalExceptionHandler
  • 关键操作写入日志表,支持面向审计的检索与回溯

数据模型(摘要)

  • user:用户基础信息、角色、账号状态、密码哈希、头像文件名
  • document:文档元数据、分配用户、状态、评审结果、流程时间字段
  • log:操作人、操作对象、操作类型、描述、时间

数据库 ER 图

约束与索引

  • user.emaildocument.title 唯一约束
  • document.assigned_to -> user.idlog.user_id -> user.id 外键关联

主要接口范围(按模块)

  • 认证与用户:/login/register/user/info/user/email|name|password|avatar
  • 文档与评审:/document/add|all|unassigned|assigned|assign|claim|review|{id}
  • 管理与日志:/user/all|reviewer|create-batch|enable|disable/log/document/log/user

本机快速启动

  1. 环境:JDK 23、Maven、Node.js、pnpm、MySQL。
  2. 创建数据库(如 report),并完成表结构初始化。
  3. 修改 backend/src/main/resources/application.yml:数据库连接与 file.base-dir
  4. 启动后端:
cd backend
mvn spring-boot:run
  1. 启动前端:
cd frontend
pnpm install
pnpm dev

访问:http://localhost:5173(后端默认 http://localhost:8081)。

About

A full-stack web system for document upload, assignment, review, and logging with role-based access, built with Spring Boot, Vue3.

Topics

Resources

License

Stars

Watchers

Forks

Contributors