一个面向高校实验室场景的管理平台,覆盖设备资产管理、预约审批、维修上报、公告发布与数据看板,支持管理员、教师、学生三类角色。
- 用户认证与权限控制(JWT)
- 用户 / 角色 / 权限管理
- 实验室、设备分类、设备资产管理
- 预约申请、审批、取消与冲突控制
- 维修工单与公告管理
- 仪表盘统计(概览、趋势、排行)
- 后端:Spring Boot + Spring Security + MyBatis-Plus
- 前端:Vue 3 + TypeScript + Vite + Element Plus
- 数据库:MySQL 8.0
- 容器化:Docker + Docker Compose
smartlab/
├─ server/ # 后端服务(默认 8080,API 前缀 /api)
├─ web/ # 前端项目(开发 5173)
├─ sql/ # 数据库脚本(schema.sql / seed.sql)
├─ docs/ # 接口与数据库设计文档
└─ docker-compose.yml # 一键部署(mysql + server + web)
- 已安装 Docker、Docker Compose
在项目根目录执行:
docker compose up -d --build服务默认端口:
- 前端:
http://localhost:5173 - 后端:
http://localhost:8080/api - MySQL:
localhost:3306
docker compose exec -T mysql mysql --default-character-set=utf8mb4 -uroot -proot smartlab < sql/schema.sql
docker compose exec -T mysql mysql --default-character-set=utf8mb4 -uroot -proot smartlab < sql/seed.sqldocker compose ps
docker compose logs -f server
docker compose down- JDK 21(建议,需与后端运行环境匹配)
- Maven 3.9+
- Node.js 20+
- MySQL 8.0
可直接复用 compose 的 MySQL:
docker compose up -d mysqlcd server
mvn spring-boot:run默认地址:http://localhost:8080/api
cd web
npm install
npm run dev默认地址:http://localhost:5173(已通过 Vite 代理 /api 到 http://localhost:8080)
首次执行前请确保本机已安装 docker、curl、Node.js、JDK,并且前端依赖已安装完成:
cd web
npm install
cd ..
chmod +x scripts/dev-up.sh scripts/dev-down.sh
./scripts/dev-up.sh脚本会完成这些动作:
- 启动
docker compose中的 MySQL - 在后台启动后端开发服务并轮询
http://127.0.0.1:8080/api/health - 在固定端口
5173启动前端开发服务
停止本地前后端:
./scripts/dev-down.sh开发环境默认端口和变量:
- 前端固定使用
127.0.0.1:5173 - 后端固定使用
127.0.0.1:8080 - 前端示例变量见
web/.env.example - 后端生产变量模板见
server/.env.prod.example
仓库已补充 GitHub Actions 工作流:前端执行 npm run build,后端执行 ./mvnw test。工作流文件位于 .github/workflows/ci.yml。
前端已接入 Playwright 基础设施,测试文件位于 web/tests/e2e/,当前覆盖:
- 登录跳转与登录成功
- 错误密码提示
- 学生预约提交流程
首次运行前建议安装浏览器:
cd web
npm run test:e2e:install启动前后端后执行:
cd web
npm run test:e2e如测试地址不是默认的 http://127.0.0.1:5173,可通过环境变量覆盖:
PLAYWRIGHT_BASE_URL=http://127.0.0.1:4173 npm run test:e2e后端生产配置建议至少显式设置以下变量:
DB_HOST/DB_PORT/DB_NAME/DB_USER/DB_PASSWORDJWT_SECRETCORS_ALLOWED_ORIGIN_PATTERNS
示例模板见 server/.env.prod.example。其中 JWT_SECRET 必须替换,CORS_ALLOWED_ORIGIN_PATTERNS 不应保留为宽泛通配。
- 管理员:
admin / 123456 - 教师:
teacher / 123456 - 学生:
student / 123456
- 接口文档:
docs/api.md - 数据库设计:
docs/db-design.md - 异常码约定:
docs/exception-codes.md - 优化记录:
docs/improvements.md - 学习指南入口:
docs/learning-guide.md - 目录版学习指南:
docs/learning/README.md