Strain Manager 是一个前后端分离的菌株项目管理系统,用来管理实验项目、七阶段实验记录、附件、菌种库存、数据备份和系统状态。项目采用 Vue 3 + Spring Boot + PostgreSQL,适合作为课程设计、毕设或实验室内部原型系统继续扩展。
- 提供真实登录页,登录成功后使用 Bearer Token 访问后端接口。
- 后端基于 Spring Security 做认证和权限校验。
- 内置角色:
ADMIN、RESEARCHER、VIEWER。 - 已提供用户管理页和角色权限页,可查看用户、角色、权限编码。
- 开发环境默认账号:
admin / 123456。
- 看板页:展示项目入口和核心功能导航。
- 项目列表:支持查看项目分页列表、新建项目、按状态进入列表。
- 项目详情:展示项目状态、当前阶段、优先级、更新时间。
- 项目状态流转:支持进行中、已完成、已归档、已延期。
- 当前阶段切换:支持 1 到 7 个实验阶段切换。
系统内置 7 个实验阶段:
- 引物订购
- 大肠杆菌转化
- 曲霉转化
- 发酵检测
- 保种
- 单菌落检测
- 单菌落保种
阶段记录支持:
- 构建方法或过程描述
- 结果描述
- 保种编号
- 保种日期
- 扩展 JSON 字段
扩展字段使用 PostgreSQL jsonb 保存,方便后续给不同阶段追加个性化字段。
- 每个项目阶段都可以上传附件。
- 附件记录保存原始文件名、存储路径、文件大小、上传人和上传时间。
- 下载接口受登录态保护,前端会携带 Token 下载文件。
- 当前实现默认使用本地目录
data/uploads存储附件。
- 支持创建菌种盒。
- 支持按孔位放入项目。
- 前端以孔位网格方式展示菌种盒占用情况。
- 统计页会展示库存盒数量和已占孔位数量。
- 设置页支持导出当前核心数据为 JSON。
- 支持从 JSON 文件导入项目和阶段记录。
- 导入后会返回新增项目数、更新项目数和阶段记录数。
- 设置页提供“创建完整备份”按钮。
- 后端会生成备份记录。
- 状态页会显示最近一次备份文件名和备份时间。
状态页展示真实组件状态:
- 后端服务
- PostgreSQL
- Redis
- MinIO
- 最近备份
- 检查时间
组件详情里会显示数据库连通性、Redis PONG、MinIO health 检查结果。
统计页展示后端真实统计数量:
- 项目总数
- 进行中数量
- 已完成数量
- 阶段记录数量
- 库存盒数量
- 已占孔位数量
- 用户数
- 阶段分布
- 状态分布
- 前端使用 Element Plus + 自定义布局。
- 菜单、表格、表单和详情页有基础响应式适配。
- 可在桌面浏览器和较窄屏幕下正常查看核心页面。
- Vue 3
- TypeScript
- Vite
- Vue Router
- Pinia
- Element Plus
- SCSS
- ofetch
- Java 21
- Spring Boot 4.0.6
- Spring Security
- Spring Web MVC
- Spring Validation
- Spring Actuator
- MyBatis-Plus
- Flyway
- PostgreSQL Driver
- Redis
- springdoc-openapi
- PostgreSQL 16
- Redis 7
- MinIO
- pgAdmin
- Redis Commander
- Mailpit
- Nginx
- Docker Compose
strain_manager
├── docker/ # Nginx 等 Docker 配置
├── scripts/ # 辅助脚本
├── strain_manager_backend/ # Spring Boot 后端
├── strain_manager_frontend/ # Vue 前端
├── docker-compose.yml # 本地开发组件编排
├── 核心数据库表设计.md # 数据库设计文档
├── 接口文档.md # 接口设计文档
├── 基础功能测试记录.md # Chrome 手动测试记录
└── README.md
在项目根目录执行:
docker compose up -d常用服务端口:
| 服务 | 地址 |
|---|---|
| PostgreSQL | localhost:5432 |
| Redis | localhost:6379 |
| MinIO API | http://localhost:9000 |
| MinIO Console | http://localhost:9001 |
| pgAdmin | http://localhost:5050 |
| Redis Commander | http://localhost:8081 |
| Mailpit | http://localhost:8025 |
| Nginx | http://localhost:8088 |
默认数据库连接:
database: strain_manager
username: strain_manager
password: strain_manager_pwd
cd strain_manager_backend
./mvnw spring-boot:run后端默认地址:
http://localhost:8080
Swagger UI:
http://localhost:8080/swagger-ui.html
cd strain_manager_frontend
pnpm install
pnpm dev前端默认地址:
http://localhost:5173
开发环境中,Vite 会把 /api 代理到 http://localhost:8080。
用户名:admin
密码:123456
这个账号由开发初始化逻辑和 Flyway 种子数据创建,只建议用于本地开发和演示。
接口统一前缀为 /api,认证方式为:
Authorization: Bearer <accessToken>
常用接口:
| 模块 | 接口 |
|---|---|
| 登录 | POST /api/auth/login |
| 当前用户 | GET /api/auth/me |
| 退出登录 | POST /api/auth/logout |
| 项目列表 | GET /api/projects |
| 创建项目 | POST /api/projects |
| 项目详情 | GET /api/projects/{id} |
| 修改项目 | PUT /api/projects/{id} |
| 修改阶段 | PATCH /api/projects/{id}/stage |
| 修改状态 | PATCH /api/projects/{id}/status |
| 阶段记录列表 | GET /api/projects/{projectId}/stages |
| 保存阶段记录 | PUT /api/projects/{projectId}/stages/{stageNo} |
| 附件列表 | GET /api/projects/{projectId}/attachments |
| 上传附件 | POST /api/projects/{projectId}/stages/{stageNo}/attachments |
| 下载附件 | GET /api/attachments/{id}/download |
| 菌种盒列表 | GET /api/storage/boxes |
| 创建菌种盒 | POST /api/storage/boxes |
| 放入孔位 | POST /api/storage/boxes/{boxId}/wells/{wellCode} |
| 移出孔位 | DELETE /api/storage/boxes/{boxId}/wells/{wellCode} |
| 统计总览 | GET /api/stats/overview |
| 系统状态 | GET /api/system/status |
| 用户列表 | GET /api/users |
| 角色列表 | GET /api/roles |
| 权限列表 | GET /api/permissions |
| JSON 导出 | GET /api/data/export |
| JSON 导入 | POST /api/data/import |
| 创建备份 | POST /api/backups |
更完整的接口说明见 接口文档.md。
核心表包括:
usersrolespermissionsuser_rolesrole_permissionsprojectsproject_stage_recordsattachmentsstorage_boxesstorage_box_wellsbackup_records
数据库迁移由 Flyway 管理,脚本位于:
strain_manager_backend/src/main/resources/db/migration
更完整的表结构说明见 核心数据库表设计.md。
后端编译:
cd strain_manager_backend
./mvnw -q -DskipTests compile前端类型检查:
cd strain_manager_frontend
./node_modules/.bin/vue-tsc --build当前手动测试记录见 基础功能测试记录.md。
当前版本已经完成项目预期的 MVP 功能:登录鉴权、项目主链路、阶段记录、权限展示、JSON 导入导出、备份、状态页、统计页、附件、菌种库存和响应式页面。
后续如果要继续打磨成更完整的生产系统,可以优先补充:
- 用户新增、编辑、禁用、重置密码
- 角色权限编辑
- 操作审计日志页面
- 更细的按钮级权限控制
- 附件删除和预览
- 备份下载与恢复
- 单元测试和接口自动化测试