水质预测平台设计(全栈项目)

前言

源于笔者社会实践时的设想,闲余时间进行实现,同时作为练手项目
项目地址:Gitee / Github
许可证类型:MIT

目前的功能

  • 自动处理并从excel表格导入国控水质检测平台的水质数据
  • 基本的前端,用户注册并登入后可以管理水质数据,查看历史趋势
  • 后端可利用以往的水质数据训练/微调模型,并预测下个月的水质(目前支持SVM/AdaBoost/LSTM/GRU/Bi-RNN)(并不完善)

项目架构

Flow.jpg
plaintext 复制代码
WaterQuality/                  # 项目根目录
├── Database/                  # 数据库相关文件
├── Import/                    # 自动导入工具
├── Module-BackEnd-FastAPI/    # 后端-模型管理模块(FastAPI)
├── Module-BackEnd-KtSpring/   # 后端-用户管理模块(SpringBoot3)
└── Module-FrontEnd-Vue/       # 前端模块(Vue3)

技术栈

  • 前端:TypeScript+Vue3+Vite
  • 后端-用户管理模块:Kotlin+SpringBoot3+JPA+Sa-Token
  • 后端-模型管理模块:Python+FastAPI+Pandas+Scikit-learn+Pytorch

参考项目

@sctpan WQMFS

项目细节

前端(Module-FrontEnd-Vue/)

框架升级

@sctpan 原始项目采用Vue2+Webpack,相关功能封装较为简单。此项目的前端模块自2.0.0起开始,截至3.0.0之前(Git Commit 3159dcd),首先将原项目的整体架构升级至Vue3+Vite,在UI框架方面由iView换为View-UI-Plus(iView的Vue3版)

重构

在对框架进行升级后,考虑对项目进行整体的重构,目标大致包括

  1. 使用TS,引入类型
  2. 原项目存在大量硬编码常量,所以考虑将原项目中的常量进行整体抽象,方便更改和复用(constants/)
  3. 抽象原项目中的工具/实用函数,方便复用(utils/)
    1. 抽象原项目中的工具函数
    2. 设计统一的错误处理和日志系统,接管前端中的所有的error创建以及log(error-handler.ts)
  4. 将原项目中的数据结构(DTO等)使用TS抽象为类(types/)
  5. 封装Axios收发信到服务模块,提供统一的接口(services/)
  6. 使用Pinia耦合原来分散在各个组件中的状态的管理,方便统一管理和复用(stores/)
  7. 其他内容(统一的项目配置文件管理,封装常用的函数至Vue组合函数...)

后端-用户管理模块(Module-BackEnd-KtSpring/)

框架升级

@sctpan 的原项目使用Java的SpringBoot2+JPA+SpringSecurity,本项目将其升级为SpringBoot3

更换至Kotlin

为了简化开发流程,笔者使用了Kotlin(JVM)对后端进行了重写,一定程度上解决了原项目使用Java开发时的冗余问题

重构

笔者对后端的重构有限

  1. 将原来的SpringSecurity换为Sa-Token,接管鉴权方面的服务(Commit f359257)
  2. 将Service层进行彻底的重写,尤其是与Repository层和Python层交互的部分,有破坏性的更改

后端-模型管理模块(Module-BackEnd-FastAPI/)

彻底重写

@sctpan 的原项目使用Django+Keras+Scikit-learn,本项目将这部分完全废弃,使用较为轻量化的FastAPI和应用更为广泛的Pytorch进行重构

  • API请求/响应部分使用FastAPI
  • 对于数据的处理/清洗,简单的使用到了Pandas
  • 对Scikit-lean/Pytorch的模型训练/预测/微调进行了简单的面向对象式封装

数据导入工具(Import/)

笔者使用Pandas和SQLAlchemy设计了一个简单的Python脚本,用于将水质的表格数据写入进数据库

游客

全部评论 (0)

暂无评论,快来抢沙发吧~