Skip to content

Repository files navigation

Strain Manager

Strain Manager 是一个前后端分离的菌株项目管理系统,用来管理实验项目、七阶段实验记录、附件、菌种库存、数据备份和系统状态。项目采用 Vue 3 + Spring Boot + PostgreSQL,适合作为课程设计、毕设或实验室内部原型系统继续扩展。

功能介绍

1. 登录与权限

  • 提供真实登录页,登录成功后使用 Bearer Token 访问后端接口。
  • 后端基于 Spring Security 做认证和权限校验。
  • 内置角色:ADMINRESEARCHERVIEWER
  • 已提供用户管理页和角色权限页,可查看用户、角色、权限编码。
  • 开发环境默认账号:admin / 123456

2. 项目主链路

  • 看板页:展示项目入口和核心功能导航。
  • 项目列表:支持查看项目分页列表、新建项目、按状态进入列表。
  • 项目详情:展示项目状态、当前阶段、优先级、更新时间。
  • 项目状态流转:支持进行中、已完成、已归档、已延期。
  • 当前阶段切换:支持 1 到 7 个实验阶段切换。

3. 七阶段实验记录

系统内置 7 个实验阶段:

  1. 引物订购
  2. 大肠杆菌转化
  3. 曲霉转化
  4. 发酵检测
  5. 保种
  6. 单菌落检测
  7. 单菌落保种

阶段记录支持:

  • 构建方法或过程描述
  • 结果描述
  • 保种编号
  • 保种日期
  • 扩展 JSON 字段

扩展字段使用 PostgreSQL jsonb 保存,方便后续给不同阶段追加个性化字段。

4. 附件上传与下载

  • 每个项目阶段都可以上传附件。
  • 附件记录保存原始文件名、存储路径、文件大小、上传人和上传时间。
  • 下载接口受登录态保护,前端会携带 Token 下载文件。
  • 当前实现默认使用本地目录 data/uploads 存储附件。

5. 菌种库存

  • 支持创建菌种盒。
  • 支持按孔位放入项目。
  • 前端以孔位网格方式展示菌种盒占用情况。
  • 统计页会展示库存盒数量和已占孔位数量。

6. JSON 导入导出

  • 设置页支持导出当前核心数据为 JSON。
  • 支持从 JSON 文件导入项目和阶段记录。
  • 导入后会返回新增项目数、更新项目数和阶段记录数。

7. 备份按钮

  • 设置页提供“创建完整备份”按钮。
  • 后端会生成备份记录。
  • 状态页会显示最近一次备份文件名和备份时间。

8. 系统状态页

状态页展示真实组件状态:

  • 后端服务
  • PostgreSQL
  • Redis
  • MinIO
  • 最近备份
  • 检查时间

组件详情里会显示数据库连通性、Redis PONG、MinIO health 检查结果。

9. 统计页

统计页展示后端真实统计数量:

  • 项目总数
  • 进行中数量
  • 已完成数量
  • 阶段记录数量
  • 库存盒数量
  • 已占孔位数量
  • 用户数
  • 阶段分布
  • 状态分布

10. 响应式布局

  • 前端使用 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

本地启动

1. 启动 Docker 组件

在项目根目录执行:

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

2. 启动后端

cd strain_manager_backend
./mvnw spring-boot:run

后端默认地址:

http://localhost:8080

Swagger UI:

http://localhost:8080/swagger-ui.html

3. 启动前端

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

数据库设计

核心表包括:

  • users
  • roles
  • permissions
  • user_roles
  • role_permissions
  • projects
  • project_stage_records
  • attachments
  • storage_boxes
  • storage_box_wells
  • backup_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 导入导出、备份、状态页、统计页、附件、菌种库存和响应式页面。

后续如果要继续打磨成更完整的生产系统,可以优先补充:

  • 用户新增、编辑、禁用、重置密码
  • 角色权限编辑
  • 操作审计日志页面
  • 更细的按钮级权限控制
  • 附件删除和预览
  • 备份下载与恢复
  • 单元测试和接口自动化测试

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages