Skip to content

12_Tech_Actions_Operations

youngcan edited this page May 25, 2026 · 4 revisions

GitHub Actions 运维

本篇是定时任务排障指南——"任务为什么没跑"或"跑挂了怎么查"。

当前 workflow 完整清单见 docs/ARCHITECTURE.md


1. 核心定时任务

任务 北京时间 UTC cron 主脚本
Wyckoff Funnel 周日-周四 18:25 25 10 * * 0-4 scripts/daily_job.py
Wyckoff Funnel HK 周一-周五 16:35 35 8 * * 1-5 scripts/market_funnel_job.py --market hk
Wyckoff Funnel US 周二-周六 05:35 35 21 * * 1-5 scripts/market_funnel_job.py --market us
Premarket Risk 周一-周五 08:20 20 0 * * 1-5 scripts/premarket_risk_job.py
Backtest Grid 每月 1/15 04:00 0 20 1,15 * * scripts/backtest_runner.py

2. Secrets 配置

必需

Secret 用途
FEISHU_WEBHOOK_URL 飞书推送
GEMINI_API_KEY AI 研报模型
TUSHARE_TOKEN A 股行情降级源
TICKFLOW_API_KEY TickFlow A 股 / 港股 / 美股行情

可选

Secret 用途
SUPABASE_URL / SUPABASE_SERVICE_ROLE_KEY / SUPABASE_USER_ID 云端持仓同步
TG_BOT_TOKEN / TG_CHAT_ID Telegram 推送
TAVILY_API_KEY / SERPAPI_API_KEY RAG 防雷新闻检索
OPENROUTER_API_KEY 兼容 OpenAI 协议的备用模型

注意:Actions 通过 Secrets 注入环境变量,和本地 .env 文件无关。


3. 常见故障和排查

Secret 缺失或过期

日志特征配置缺失: ... 或模型调用返回 401

处理:去 GitHub → Settings → Secrets 检查对应变量是否存在且有效。

数据源超时

现象:运行时间比平时长很多

处理:A 股日线有自动降级机制(tickflow → tushare → akshare → baostock),通常自愈。港股 / 美股目前依赖 TickFlow,失败时优先检查 TickFlow key、套餐权限和请求频次。

tushare IP 超限

日志特征您的IP数量超限,最大数量为2个!

原因:多个并行 job 同时访问 tushare。

处理:确保回测用两阶段架构(Phase 1 单 job 拉数据 → Phase 2 并行格读快照)。不要让多个 job 直接调 tushare。

回测快照缺失

日志特征snapshot missing file: .../hist_full.csv.gz

原因:Phase 1 的 upload-artifact 路径和 Phase 2 的 download-artifact 路径不一致。

处理:检查 workflow yml 里 artifact 的 path 配置。

Step4 被跳过

原因:未配置 SUPABASE_USER_ID 或 Telegram 参数。Step4 按设计跳过——这不是故障。

合规简报降级

现象:收到的是模板格式的简报而非 AI 生成的

原因:OpenRouter 未配置 / 模型调用失败 / 输出触发合规校验。降级为本地模板是正常保护行为,不影响主研报。


4. 运维建议

  • 改完策略参数后,先手动触发一次 workflow 做 dry run
  • 关注 Actions 页面的 Artifacts 输出,回测结果会存在那里
  • 关键版本变更后,固定 snapshot 跑一轮回测确认效果

Clone this wiki locally