ShopTRAINING/.codelf/quick-reference.md

190 lines
5.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 药店销售预测系统 - 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编程提供核心上下文包含项目的关键信息和开发规范*