ShopTRAINING/.codelf/quick-reference.md

190 lines
5.5 KiB
Markdown
Raw Permalink Normal View History

# 药店销售预测系统 - LLM编程快速参考
## 🎯 项目概述
**技术栈**: Python (Flask) + Vue3 + SQLite + PyTorch + ECharts
**用途**: 基于深度学习的药品销售时序预测系统
**环境**: Windows + PowerShell + UV包管理器
## 🚀 快速启动
```powershell
# 后端启动
uv run .\server\api.py
# 前端启动
cd UI; npm run dev
```
## 📁 核心目录结构
```
药店销售预测系统/
├── server/ # 🐍 Python后端服务
│ ├── api.py # 主API入口 (2900+ 行)
│ ├── models/ # 🧠 深度学习模型
│ │ ├── mlstm/ # mLSTM模型
│ │ ├── transformer/ # Transformer模型
│ │ ├── kan/ # KAN模型
│ │ ├── kan_optimized/ # 优化KAN模型
│ │ └── tcn/ # TCN模型
│ ├── trainers/ # 🏋️ 模型训练器
│ ├── predictors/ # 🔮 模型预测器
│ ├── predictions/ # 📊 预测结果存储
│ └── static/ # 📁 静态文件
├── UI/ # 🖥️ Vue3前端
│ └── src/views/ # 📄 页面组件
│ ├── DataView.vue # 数据管理
│ ├── TrainingView.vue # 模型训练
│ ├── PredictionView.vue # 预测分析
│ ├── HistoryView.vue # 历史查看
│ └── ManagementView.vue # 模型管理
└── prediction_history.db # 🗄️ SQLite数据库
```
## 🔌 核心API接口
### 数据管理
- `GET /api/products` - 获取产品列表
- `GET /api/products/{id}/sales` - 获取销售数据
- `POST /api/data/upload` - 上传Excel数据
### 模型训练
- `POST /api/training` - 启动训练任务
- `GET /api/training/{task_id}` - 查询训练状态
### 预测分析
- `POST /api/prediction` - 执行预测
- `GET /api/prediction/history` - 获取历史记录
- `GET /api/prediction/history/{id}` - 获取预测详情
### 模型管理
- `GET /api/models` - 获取模型列表
- `DELETE /api/models/{id}` - 删除模型
## 🧠 支持的ML模型类型
1. **mLSTM** - 多层LSTM适合长期预测
2. **Transformer** - 注意力机制,捕捉复杂模式
3. **KAN** - Kolmogorov-Arnold网络函数拟合
4. **Optimized KAN** - 优化版KAN提升效率
5. **TCN** - 时间卷积网络,并行训练
## 📊 数据流程
1. **数据上传** → Excel文件 → 数据预处理
2. **模型训练** → 选择模型 → 异步训练 → 保存模型
3. **预测分析** → 选择产品+模型 → 生成预测 → 保存结果
4. **结果查看** → 历史记录 → 详情展示 → 数据导出
## 🗄️ 数据库设计
```sql
-- prediction_history 表
CREATE TABLE prediction_history (
id INTEGER PRIMARY KEY,
product_id TEXT,
product_name TEXT,
model_type TEXT,
model_id TEXT,
start_date DATE,
future_days INTEGER,
created_at TIMESTAMP,
file_path TEXT
);
```
## 📝 API响应格式
```json
{
"status": "success|error",
"data": {},
"message": "操作说明",
"meta": {},
"analysis": {},
"chart_data": {}
}
```
## 🎨 前端组件架构
- **DataView.vue** - 数据管理和上传
- **TrainingView.vue** - 模型训练控制台
- **PredictionView.vue** - 预测分析主界面
- **HistoryView.vue** - 历史预测详情查看
- **ManagementView.vue** - 模型管理和性能监控
## 🔧 开发规范
### Python代码风格
- 使用 `snake_case` 命名
- 类型注解: `def predict(data: pd.DataFrame) -> Dict[str, Any]:`
- 错误处理: `try-except` 包装API调用
### JavaScript代码风格
- 使用 `camelCase` 命名
- Vue3 Composition API: `ref()`, `reactive()`
- Axios异步调用: `async/await`
### 文件命名规范
- Python文件: `model_trainer.py`
- Vue组件: `PredictionView.vue`
- 配置文件: `config.json`
## ⚠️ 常见问题解决
### 训练相关
```python
# 内存不足 - 调整batch_size
BATCH_SIZE = 16 # 降低批次大小
```
### 预测精度
```python
# 数据预处理 - 标准化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
```
### 前端错误处理
```javascript
// 统一错误处理
const handleError = (error) => {
ElMessage.error(error.response?.data?.message || '操作失败');
};
```
## 🚨 重要注意事项
1. **PowerShell语法**: 使用 `;` 连接命令,避免 `&&`
2. **路径分隔符**: Windows使用 `\``/`
3. **模型文件**: 训练后自动保存到 `saved_models/`
4. **预测结果**: JSON格式存储在 `predictions/`
5. **数据库备份**: 定期备份 `prediction_history.db`
## 🔄 开发工作流
1. **修改后端** → 重启 `uv run server/api.py`
2. **修改前端** → 热重载自动更新
3. **新增模型** → 添加trainer + predictor + 更新api.py
4. **数据库变更** → 手动SQL更新 + 代码同步
## 📦 核心依赖版本
```python
# requirements.txt 核心依赖
flask==3.1.1
torch==2.7.1+cu128
pandas==2.3.0
scikit-learn==1.7.0
flask-cors==6.0.0
```
```javascript
// package.json 核心依赖
"vue": "^3.x",
"element-plus": "^2.x",
"echarts": "^5.x",
"axios": "^1.x"
```
## 🎯 编程提示
- **添加新API**: 在`api.py`添加路由 + Swagger文档
- **新增页面**: 在`views/`创建Vue组件 + 路由配置
- **数据库操作**: 使用SQLite3原生查询
- **文件存储**: JSON格式按模型类型分目录
- **错误处理**: 前后端统一错误格式
- **图表展示**: 使用ECharts响应式图表
---
*📝 此文档为LLM编程提供核心上下文包含项目的关键信息和开发规范*