404 lines
9.1 KiB
Markdown
404 lines
9.1 KiB
Markdown
![]() |
# 药店销售预测系统 - Windows 操作指南
|
|||
|
|
|||
|
## 系统环境
|
|||
|
- **操作系统**: Windows 10/11
|
|||
|
- **终端**: PowerShell (推荐) 或 Command Prompt
|
|||
|
- **Python版本**: 3.8+
|
|||
|
- **Node.js版本**: 16+
|
|||
|
|
|||
|
## 🚀 快速启动指南
|
|||
|
|
|||
|
### 1. 环境准备
|
|||
|
|
|||
|
**检查Python版本**:
|
|||
|
```powershell
|
|||
|
python --version
|
|||
|
```
|
|||
|
|
|||
|
**检查Node.js版本**:
|
|||
|
```powershell
|
|||
|
node --version
|
|||
|
npm --version
|
|||
|
```
|
|||
|
|
|||
|
### 2. 安装依赖
|
|||
|
|
|||
|
**后端依赖安装**:
|
|||
|
```powershell
|
|||
|
# 进入项目目录
|
|||
|
cd "I:\_OneTree\_Python\_药店销售预测系统"
|
|||
|
|
|||
|
# 创建虚拟环境
|
|||
|
python -m venv .venv
|
|||
|
|
|||
|
# 激活虚拟环境
|
|||
|
.\.venv\Scripts\Activate.ps1
|
|||
|
|
|||
|
# 如果遇到执行策略问题,先运行:
|
|||
|
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
|||
|
|
|||
|
# 安装Python依赖
|
|||
|
pip install -r install\requirements.txt
|
|||
|
|
|||
|
# 安装GPU版本PyTorch(可选)
|
|||
|
pip install -r install\requirements-gpu.txt
|
|||
|
```
|
|||
|
|
|||
|
**前端依赖安装**:
|
|||
|
```powershell
|
|||
|
# 进入UI目录
|
|||
|
cd UI
|
|||
|
|
|||
|
# 安装前端依赖
|
|||
|
npm install
|
|||
|
# 或使用pnpm(如果已安装)
|
|||
|
pnpm install
|
|||
|
```
|
|||
|
|
|||
|
### 3. 数据初始化
|
|||
|
|
|||
|
**初始化多店铺数据库**:
|
|||
|
```powershell
|
|||
|
# 确保在项目根目录
|
|||
|
cd "I:\_OneTree\_Python\_药店销售预测系统"
|
|||
|
|
|||
|
# 激活虚拟环境(如果未激活)
|
|||
|
.\.venv\Scripts\Activate.ps1
|
|||
|
|
|||
|
# 初始化数据库
|
|||
|
python server\init_multi_store_db.py
|
|||
|
|
|||
|
# 生成示例数据(如果没有数据文件)
|
|||
|
python generate_multi_store_data.py
|
|||
|
```
|
|||
|
|
|||
|
### 4. 启动服务
|
|||
|
|
|||
|
**启动后端API服务器**:
|
|||
|
```powershell
|
|||
|
# 在项目根目录,确保虚拟环境已激活
|
|||
|
cd server
|
|||
|
python api.py
|
|||
|
|
|||
|
# 服务器将在 http://localhost:5000 启动
|
|||
|
```
|
|||
|
|
|||
|
**启动前端开发服务器**(新的PowerShell窗口):
|
|||
|
```powershell
|
|||
|
cd "I:\_OneTree\_Python\_药店销售预测系统\UI"
|
|||
|
npm run dev
|
|||
|
# 或
|
|||
|
pnpm dev
|
|||
|
|
|||
|
# 前端将在 http://localhost:5173 启动
|
|||
|
```
|
|||
|
|
|||
|
**访问应用**:
|
|||
|
- 前端界面: http://localhost:5173
|
|||
|
- API文档: http://localhost:5000/swagger
|
|||
|
|
|||
|
## 🔧 开发操作指南
|
|||
|
|
|||
|
### 数据管理
|
|||
|
|
|||
|
**查看数据文件**:
|
|||
|
```powershell
|
|||
|
# 查看多店铺CSV数据
|
|||
|
Get-Content pharmacy_sales_multi_store.csv | Select-Object -First 10
|
|||
|
|
|||
|
# 查看数据库文件
|
|||
|
if (Test-Path "prediction_history.db") {
|
|||
|
Write-Host "数据库文件存在"
|
|||
|
} else {
|
|||
|
Write-Host "数据库文件不存在"
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
**备份数据**:
|
|||
|
```powershell
|
|||
|
# 创建备份文件夹
|
|||
|
New-Item -ItemType Directory -Force -Path "backup\$(Get-Date -Format 'yyyyMMdd')"
|
|||
|
|
|||
|
# 备份重要文件
|
|||
|
Copy-Item "pharmacy_sales_multi_store.csv" "backup\$(Get-Date -Format 'yyyyMMdd')\"
|
|||
|
Copy-Item "prediction_history.db" "backup\$(Get-Date -Format 'yyyyMMdd')\"
|
|||
|
```
|
|||
|
|
|||
|
### 测试和验证
|
|||
|
|
|||
|
**API测试**:
|
|||
|
```powershell
|
|||
|
# 简单API测试
|
|||
|
python test_api_endpoints.py
|
|||
|
|
|||
|
# 多店铺功能测试
|
|||
|
python test_multi_store_training.py
|
|||
|
|
|||
|
# 预测器修复验证
|
|||
|
python test_predictor_fix.py
|
|||
|
```
|
|||
|
|
|||
|
**前端构建测试**:
|
|||
|
```powershell
|
|||
|
cd UI
|
|||
|
npm run build
|
|||
|
# 或
|
|||
|
pnpm build
|
|||
|
```
|
|||
|
|
|||
|
### 日志和调试
|
|||
|
|
|||
|
**查看API日志**:
|
|||
|
```powershell
|
|||
|
# 启动API时会在控制台显示日志
|
|||
|
# 要保存日志到文件:
|
|||
|
python server\api.py 2>&1 | Tee-Object -FilePath "api.log"
|
|||
|
```
|
|||
|
|
|||
|
**查看训练日志**:
|
|||
|
```powershell
|
|||
|
# 训练日志通常保存在 saved_models 目录下
|
|||
|
Get-ChildItem saved_models -Filter "*.log" | Sort-Object LastWriteTime -Descending
|
|||
|
```
|
|||
|
|
|||
|
## 📁 项目结构说明
|
|||
|
|
|||
|
```
|
|||
|
I:\_OneTree\_Python\_药店销售预测系统\
|
|||
|
├── server\ # 后端代码
|
|||
|
│ ├── api.py # 主API服务器
|
|||
|
│ ├── core\ # 核心预测器
|
|||
|
│ ├── trainers\ # 模型训练器
|
|||
|
│ ├── utils\ # 工具函数
|
|||
|
│ └── models\ # 模型定义
|
|||
|
├── UI\ # 前端代码
|
|||
|
│ ├── src\ # Vue源码
|
|||
|
│ ├── dist\ # 构建输出
|
|||
|
│ └── package.json # 前端依赖
|
|||
|
├── docs\ # 文档
|
|||
|
├── install\ # 安装脚本
|
|||
|
├── saved_models\ # 保存的模型
|
|||
|
├── pharmacy_sales_multi_store.csv # 多店铺数据
|
|||
|
└── prediction_history.db # 预测历史数据库
|
|||
|
```
|
|||
|
|
|||
|
## 🛠 常见操作
|
|||
|
|
|||
|
### 模型训练
|
|||
|
|
|||
|
**通过API训练模型**:
|
|||
|
```powershell
|
|||
|
# 按产品训练
|
|||
|
$body = @{
|
|||
|
product_id = "P001"
|
|||
|
model_type = "tcn"
|
|||
|
training_mode = "product"
|
|||
|
epochs = 10
|
|||
|
} | ConvertTo-Json
|
|||
|
|
|||
|
Invoke-RestMethod -Uri "http://localhost:5000/api/training" -Method Post -Body $body -ContentType "application/json"
|
|||
|
```
|
|||
|
|
|||
|
**通过命令行训练**:
|
|||
|
```powershell
|
|||
|
# 进入服务器目录
|
|||
|
cd server
|
|||
|
|
|||
|
# 使用预测器训练
|
|||
|
python -c "
|
|||
|
from core.predictor import PharmacyPredictor
|
|||
|
predictor = PharmacyPredictor()
|
|||
|
metrics = predictor.train_model(
|
|||
|
product_id='P001',
|
|||
|
model_type='tcn',
|
|||
|
training_mode='product',
|
|||
|
epochs=10
|
|||
|
)
|
|||
|
print('训练完成:', metrics)
|
|||
|
"
|
|||
|
```
|
|||
|
|
|||
|
### 数据查看和分析
|
|||
|
|
|||
|
**查看产品列表**:
|
|||
|
```powershell
|
|||
|
Invoke-RestMethod -Uri "http://localhost:5000/api/products" -Method Get
|
|||
|
```
|
|||
|
|
|||
|
**查看店铺列表**:
|
|||
|
```powershell
|
|||
|
Invoke-RestMethod -Uri "http://localhost:5000/api/stores" -Method Get
|
|||
|
```
|
|||
|
|
|||
|
**查看模型列表**:
|
|||
|
```powershell
|
|||
|
Get-ChildItem saved_models -Filter "*.pth" | Format-Table Name, LastWriteTime, Length
|
|||
|
```
|
|||
|
|
|||
|
### 部署和分发
|
|||
|
|
|||
|
**构建生产版本**:
|
|||
|
```powershell
|
|||
|
# 构建前端
|
|||
|
cd UI
|
|||
|
npm run build
|
|||
|
|
|||
|
# 复制前端文件到服务器静态目录
|
|||
|
if (Test-Path "dist") {
|
|||
|
Copy-Item -Path "dist\*" -Destination "..\server\wwwroot\" -Recurse -Force
|
|||
|
Write-Host "前端文件已复制到服务器目录"
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
**创建便携版**:
|
|||
|
```powershell
|
|||
|
# 创建便携版目录
|
|||
|
New-Item -ItemType Directory -Force -Path "portable_release"
|
|||
|
|
|||
|
# 复制必要文件
|
|||
|
Copy-Item -Path "server\*" -Destination "portable_release\server\" -Recurse
|
|||
|
Copy-Item -Path "pharmacy_sales_multi_store.csv" -Destination "portable_release\"
|
|||
|
Copy-Item -Path "docs\portable_README.md" -Destination "portable_release\README.md"
|
|||
|
```
|
|||
|
|
|||
|
## 🐛 故障排除
|
|||
|
|
|||
|
### 常见错误和解决方法
|
|||
|
|
|||
|
**1. PowerShell执行策略错误**:
|
|||
|
```powershell
|
|||
|
# 问题: 无法加载文件,因为在此系统上禁止运行脚本
|
|||
|
# 解决:
|
|||
|
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
|||
|
```
|
|||
|
|
|||
|
**2. Python模块导入错误**:
|
|||
|
```powershell
|
|||
|
# 问题: ModuleNotFoundError
|
|||
|
# 解决: 确保虚拟环境已激活
|
|||
|
.\.venv\Scripts\Activate.ps1
|
|||
|
pip install -r install\requirements.txt
|
|||
|
```
|
|||
|
|
|||
|
**3. 端口占用错误**:
|
|||
|
```powershell
|
|||
|
# 查看端口占用
|
|||
|
netstat -ano | findstr :5000
|
|||
|
netstat -ano | findstr :5173
|
|||
|
|
|||
|
# 终止占用端口的进程
|
|||
|
# taskkill /PID <PID号> /F
|
|||
|
```
|
|||
|
|
|||
|
**4. 数据文件不存在**:
|
|||
|
```powershell
|
|||
|
# 检查文件是否存在
|
|||
|
if (!(Test-Path "pharmacy_sales_multi_store.csv")) {
|
|||
|
Write-Host "生成示例数据..."
|
|||
|
python generate_multi_store_data.py
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
**5. API连接失败**:
|
|||
|
```powershell
|
|||
|
# 测试API服务器是否运行
|
|||
|
try {
|
|||
|
$response = Invoke-RestMethod -Uri "http://localhost:5000/api/products" -Method Get -TimeoutSec 5
|
|||
|
Write-Host "API服务器正常运行"
|
|||
|
} catch {
|
|||
|
Write-Host "API服务器未响应,请检查服务器是否启动"
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### 性能优化
|
|||
|
|
|||
|
**GPU检查**:
|
|||
|
```powershell
|
|||
|
python -c "
|
|||
|
import torch
|
|||
|
print('CUDA可用:', torch.cuda.is_available())
|
|||
|
if torch.cuda.is_available():
|
|||
|
print('GPU设备:', torch.cuda.get_device_name(0))
|
|||
|
print('GPU内存:', torch.cuda.get_device_properties(0).total_memory // 1024**3, 'GB')
|
|||
|
"
|
|||
|
```
|
|||
|
|
|||
|
**内存监控**:
|
|||
|
```powershell
|
|||
|
# 查看Python进程内存使用
|
|||
|
Get-Process python | Format-Table ProcessName, CPU, WorkingSet -AutoSize
|
|||
|
```
|
|||
|
|
|||
|
## 📝 维护指南
|
|||
|
|
|||
|
### 定期维护任务
|
|||
|
|
|||
|
**清理临时文件**:
|
|||
|
```powershell
|
|||
|
# 清理Python缓存
|
|||
|
Get-ChildItem -Path . -Recurse -Name "__pycache__" | Remove-Item -Recurse -Force
|
|||
|
|
|||
|
# 清理npm缓存
|
|||
|
cd UI
|
|||
|
npm cache clean --force
|
|||
|
```
|
|||
|
|
|||
|
**更新依赖**:
|
|||
|
```powershell
|
|||
|
# 更新Python依赖
|
|||
|
pip list --outdated
|
|||
|
pip install --upgrade pip
|
|||
|
|
|||
|
# 更新Node.js依赖
|
|||
|
cd UI
|
|||
|
npm outdated
|
|||
|
npm update
|
|||
|
```
|
|||
|
|
|||
|
**备份重要数据**:
|
|||
|
```powershell
|
|||
|
# 创建完整备份
|
|||
|
$backupDate = Get-Date -Format "yyyyMMdd_HHmmss"
|
|||
|
New-Item -ItemType Directory -Force -Path "backup\full_$backupDate"
|
|||
|
|
|||
|
# 备份数据文件
|
|||
|
Copy-Item "pharmacy_sales_multi_store.csv" "backup\full_$backupDate\"
|
|||
|
Copy-Item "prediction_history.db" "backup\full_$backupDate\"
|
|||
|
|
|||
|
# 备份模型文件
|
|||
|
Copy-Item "saved_models\*" "backup\full_$backupDate\models\" -Recurse
|
|||
|
```
|
|||
|
|
|||
|
## 📞 技术支持
|
|||
|
|
|||
|
如果遇到问题,请按以下顺序排查:
|
|||
|
|
|||
|
1. **检查环境**:确认Python和Node.js版本正确
|
|||
|
2. **检查依赖**:确认所有依赖都已安装
|
|||
|
3. **检查文件**:确认数据文件存在且格式正确
|
|||
|
4. **查看日志**:检查控制台输出和日志文件
|
|||
|
5. **重启服务**:尝试重启API服务器和前端服务
|
|||
|
|
|||
|
**日志收集**:
|
|||
|
```powershell
|
|||
|
# 收集系统信息
|
|||
|
Write-Host "=== 系统信息 ==="
|
|||
|
Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, TotalPhysicalMemory
|
|||
|
|
|||
|
Write-Host "`n=== Python环境 ==="
|
|||
|
python --version
|
|||
|
pip list
|
|||
|
|
|||
|
Write-Host "`n=== Node.js环境 ==="
|
|||
|
node --version
|
|||
|
npm --version
|
|||
|
|
|||
|
Write-Host "`n=== 文件检查 ==="
|
|||
|
Test-Path "pharmacy_sales_multi_store.csv"
|
|||
|
Test-Path "prediction_history.db"
|
|||
|
Test-Path "server\api.py"
|
|||
|
```
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
**注意**: 本指南专为Windows PowerShell环境设计,所有命令都已在Windows 10/11上测试通过。
|