本地部署¶
不依赖 Docker 的本地开发部署方式。
环境要求¶
| 软件 | 版本 | 说明 |
|---|---|---|
| Python | 3.11 / 3.12 | 后端 |
| Node.js | 18 / 20 / 22 | 前端构建 |
| Tornado | 6.x | 后端 Web 框架 |
| Vue | 3.5+ | 前端框架 |
后端启动¶
1. 安装依赖¶
2. 配置环境变量¶
复制 .env.example 为 .env:
修改关键配置:
STOCK_PICKS_DATA=D:/stock-picks/data
STOCK_PICKS_FISCAL=D:/stock-picks/data/fiscal
API_PORT=5001
DEBUG_MODE=true
COOKIE_SECRET=please-change-me-min-32-chars-long-secret
3. 启动服务¶
# 方式一: 开发模式 (热重载)
python start_v2.py
# 方式二: 生产模式 (Gunicorn)
gunicorn main:app --bind 0.0.0.0:5001 --workers 4
# 方式三: Windows 一键
start_prod.bat
4. 验证¶
前端启动¶
1. 安装依赖¶
2. 开发模式¶
3. 生产构建¶
4. 预览构建产物¶
数据准备¶
需要 1500+ 股票历史数据 (约 1.5 GB):
# 方式一: 使用项目数据软链接 (Windows)
# 确保 D:/stock-picks/data 是有效 junction
# 默认配置已指向此位置
# 方式二: 下载数据
python -m jobs.data_job --download
# 方式三: 自定义路径 (在 .env 设置)
STOCK_PICKS_DATA=/your/custom/path
定时任务¶
backend/scheduler.py 默认启用定时任务:
| 任务 | 频率 | 功能 |
|---|---|---|
| 数据更新 | 交易日 17:30 | 拉取当日行情 |
| 选股计算 | 交易日 18:30 | 运行三步法选股 + 回测 |
| 新闻更新 | 每日 07:00 | 抓取早间资讯 |
| 财务补全 | 每年 5/9/11 月 10 号 02:00 | 补全季度财报数据(baostock → akshare 兜底) |
注:财务补全任务: - 5 月:补一季报 + 上年度年报 - 9 月:补半年报 - 11 月:补三季报 - 数据源:baostock(主,稳定免费)→ akshare(兜底,覆盖更全) - 范围:所有 A 股(5000+) - 模块:
backend/jobs/fiscal_job.py所有任务时区为
Asia/Shanghai,使用apschedulerBackgroundScheduler。
关闭定时任务: 设置环境变量 ENABLE_SCHEDULER=false
调试技巧¶
# 后端日志位置
backend/logs/app.log
# 选股结果缓存
backend/stock_cache.json
# 前端 console
# 浏览器 DevTools → Console → 看 Network / Vue
常见问题¶
端口被占用¶
数据加载慢¶
- 检查
D:/stock-picks/data软链接是否正常 - 首次启动加载 1500+ 股票需 ~30 秒
定时任务不工作¶
- Windows: 用
pythonw.exe scheduler.py而非python.exe - Linux: 用 systemd / supervisor / cron