## 1. 核心 Bug 修复 ### 文件: `server/core/predictor.py` - **问题**: 在 `train_model` 方法中调用内部辅助函数 `_prepare_training_params` 时,没有正确传递 `product_ids` 和 `store_ids` 参数,导致在 `_prepare_training_params` 内部发生 `NameError`。 - **修复**: - 修正了 `train_model` 方法内部对 `_prepare_training_params` 的调用,确保 `product_ids` 和 `store_ids` 被显式传递。 - 此前已修复 `train_model` 的函数签名,使其能正确接收 `store_ids`。 - **结果**: 彻底解决了训练流程中的参数传递问题,根除了由此引发的 `NameError`。 ## 2. 代码清理与重构 ### 文件: `server/api.py` - **内容**: 移除了在 `start_training` API 端点中遗留的旧版、基于线程(`threading.Thread`)的训练逻辑。 - **原因**: 该代码块已被新的、基于多进程(`multiprocessing`)的 `TrainingProcessManager` 完全取代。旧代码中包含了大量用于调试的 `thread_safe_print` 日志,已无用处。 - **结果**: `start_training` 端点的逻辑变得更加清晰,只负责参数校验和向 `TrainingProcessManager` 提交任务。 ### 文件: `server/utils/training_process_manager.py` - **内容**: 在 `TrainingWorker` 的 `run_training_task` 方法中,移除了一个用于模拟训练进度的 `for` 循环。 - **原因**: 该循环包含 `time.sleep(1)`,仅用于在没有实际训练逻辑时模拟进度更新,现在实际的训练器会通过回调函数报告真实进度,因此该模拟代码不再需要。 - **结果**: `TrainingWorker` 现在直接调用实际的训练器,不再有模拟延迟,代码更贴近生产环境。 ## 3. 启动依赖 - **Python**: 3.x - **主要库**: - Flask - Flask-SocketIO - Flasgger - pandas - numpy - torch - scikit-learn - matplotlib - **启动命令**: `python server/api.py`
药店销售预测系统 - 前端界面
这是一个使用 Vue 3, Vite, Element Plus 和 Vue Router 构建的前端管理界面,用于与药店销售预测系统的后端API进行交互。
功能模块
- 首页: 系统功能概览和快捷入口。
- 数据管理: 浏览产品数据,上传新的销售数据Excel文件。
- 模型训练: 选择产品和模型类型,启动异步训练任务,并实时查看任务状态。
- 模型预测: 对指定产品进行销售预测,支持单模型预测和多模型效果对比,并提供可视化图表。
- 模型管理: 查看、筛选、搜索、导入、导出和删除已训练的模型。
技术栈
- Vue 3: 渐进式JavaScript框架。
- Vite: 下一代前端开发与构建工具。
- Vue Router: Vue.js 的官方路由。
- Element Plus: 基于 Vue 3 的桌面端组件库。
- Axios: 一个基于 promise 的 HTTP 库。
- Chart.js: 用于数据可视化的JavaScript图表库。
安装和运行
前提条件
步骤
-
进入UI目录
cd UI
-
安装依赖 使用 npm:
npm install
或者使用 pnpm:
pnpm install
或者使用 yarn:
yarn
-
启动开发服务器
npm run dev
该命令会启动一个本地开发服务器,你可以在浏览器中访问
http://localhost:5173
(或终端提示的其他端口) 来查看界面。重要:
- 请确保后端的Flask API服务正在运行中。
- Vite配置文件中已设置了代理,所有
/api
开头的请求都会被转发到http://127.0.0.1:5000
。
-
构建生产版本
npm run build
该命令会将项目打包到
dist
目录,用于生产环境部署。