ShopTRAINING/xz修改记录日志和启动依赖.md
xz2000 a9a0e51769 # 修改记录日志 (日期: 2025-07-16)
## 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`
2025-07-16 15:34:57 +08:00

1.9 KiB

修改记录日志 (日期: 2025-07-16)

1. 核心 Bug 修复

文件: server/core/predictor.py

  • 问题: 在 train_model 方法中调用内部辅助函数 _prepare_training_params 时,没有正确传递 product_idsstore_ids 参数,导致在 _prepare_training_params 内部发生 NameError
  • 修复:
    • 修正了 train_model 方法内部对 _prepare_training_params 的调用,确保 product_idsstore_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

  • 内容: 在 TrainingWorkerrun_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