# 高校学科竞赛报名与评审系统 **Repository Path**: dm_team/University-Academic-Competition-Registration-and-Review-System ## Basic Information - **Project Name**: 高校学科竞赛报名与评审系统 - **Description**: 高校学科竞赛报名与评审系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-09 - **Last Updated**: 2026-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 高校学科竞赛报名与评审系统 一站式学科竞赛管理平台,覆盖**竞赛发布 → 在线报名(个人/团队)→ 材料提交 → 教师审核 → 作品提交 → 专家评审 → 获奖发布 → 证书发放**完整业务闭环。数据库共 **29 张表**。 ## 技术栈 | 端 | 技术 | |---|---| | 后端 | Spring Boot 3.2 · Spring Security + JWT · MyBatis-Plus · MySQL 8 | | 前端 | Vue 3 · Vite · Element Plus · Pinia · Vue Router · ECharts | | 测试 | Playwright(Edge) 浏览器自动化 · Python requests 接口测试 | ## 功能清单 ### 三端角色 - **管理员**:用户/角色/菜单/配置管理、操作与登录日志、全量竞赛与获奖监管 - **教师**:发布与流转竞赛、审核报名、聘任评审专家、配置评审指标、一键分配评审任务、专家打分、发布获奖与证书 - **学生**:浏览竞赛大厅、个人/团队报名、上传报名材料、提交作品、查看评审进度与获奖证书 ### 业务闭环(29 张表) 系统管理 8 张:`sys_user / sys_role / sys_menu / sys_user_role / sys_role_menu / sys_config / sys_login_log / sys_operation_log` 竞赛管理 4 张:`competition / competition_category / competition_level / competition_news` 报名管理 4 张:`registration / registration_team / team_member / registration_material` 作品管理 2 张:`work_submission / work_file` 评审管理 6 张:`review_expert / review_group / review_group_member / review_criteria / review_assignment / review_score` 成果管理 2 张:`award_record / award_certificate` 数据字典 1 张:`sys_dict` ### 安全设计 - JWT 无状态认证 + `@PreAuthorize` 方法级权限 + 菜单/路由动态下发 - **数据权限**:教师只能审核/修改自己发布的竞赛;学生只能查看自己的报名/作品;专家只能评审分配给自己的作品 - **脱敏**:手机号(138\*\*\*\*0001)、邮箱(a\*\*\*\*@edu.cn)返回前脱敏;操作日志参数打码 - **上传白名单**:仅允许 pdf/doc/zip/jpg/mp4 等扩展名 - 登录验证码(可配置开关)+ 登录日志 + 操作日志(AOP 切面) - 站内消息通知:审核/评审/获奖/证书全流程自动推送,顶栏未读铃铛 + 消息中心 - 竞赛收藏:卡片心形收藏/取消、我的收藏页、详情页收藏按钮 - 异常统一处理,不泄露内部细节 ## 快速启动 ### 1. 初始化数据库(MySQL 3306) ```bash mysql --host=127.0.0.1 --port=3306 --user=root --password=你的密码 < init.sql ``` 自动创建 `competition_db` 库、29 张表、菜单权限树与演示数据(含应用账号 `workstudy/WorkStudy@2024`)。 ### 2. 启动后端(8080) ```bash cd backend mvn clean package -DskipTests java -jar target/competition-1.0.0.jar ``` ### 3. 启动前端(5173) ```bash cd frontend npm install npm run dev ``` 访问 http://localhost:5173 ## 演示账号(密码均 123456) | 账号 | 角色 | |---|---| | admin | 系统管理员 | | teacher01 / teacher02 / teacher03 | 教师(评审专家) | | student01 ~ student12 | 学生 | 登录页提供三角色一键填充演示卡片。 ## 自动化测试 ```bash # 1. 人工闭环测试(26 项): 发布竞赛→报名→审核→作品→评审→获奖→证书 python backend/tools/human_flow_test.py # 2. 安全测试(21 项): 越权/IDOR/脱敏/上传白名单/认证 python backend/tools/security_test.py # 3. 浏览器全量遍历(40 页, 抓 pageerror + console.error) node frontend/scripts/browser_check_all.mjs # 4. 系统截图(15 张 → 系统截图/) node frontend/scripts/capture_all.mjs ``` > 联调测试前请将 `sys_config.workstudy.captcha.enabled` 置为 `false`,交付时恢复 `true`(init.sql 默认 true)。 ## 目录结构 ``` ├── init.sql # 建库建表+演示数据+权限树(27 表) ├── backend/ # Spring Boot 3 后端 ├── frontend/ # Vue3 前端 + Playwright 脚本 ├── backend/tools/ # 开发辅助脚本(实体生成/接口测试) ├── 系统截图/ # 三端 15 张功能截图 └── README.md ``` ## 系统截图 见 `系统截图/`:门户首页(光球动效+数字滚动统计)、竞赛详情、登录页(三角色演示)、学生/教师/管理员工作台(ECharts 统计)、报名审核、评审打分、评审专家、奖项与证书管理等 15 张。