-
Notifications
You must be signed in to change notification settings - Fork 163
12_Tech_Actions_Operations
本篇是定时任务排障指南——"任务为什么没跑"或"跑挂了怎么查"。
当前 workflow 完整清单见 docs/ARCHITECTURE.md。
| 任务 | 北京时间 | UTC cron | 主脚本 |
|---|---|---|---|
| Wyckoff Funnel | 周一-周五 18:25 | 25 10 * * 1-5 |
scripts/daily_job.py |
| Signal Feedback | 周一-周五 23:30 | 30 15 * * 1-5 |
scripts/signal_feedback_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 |
sequenceDiagram
participant Funnel as Wyckoff Funnel 18:25
participant DB as Supabase
participant Feedback as Signal Feedback 23:30
Funnel->>DB: 读取上一轮 health / registry
Funnel->>Funnel: 跑漏斗、AI 研报、OMS
Funnel->>DB: 写 signal_observations
Feedback->>DB: 读 signal_observations
Feedback->>DB: 写 outcomes / health / registry
Note over DB,Funnel: 下一轮漏斗读取新的策略状态
这两个 workflow 是独立定时任务,不会自动互相等待。当前错峰设计是“漏斗先产样本,feedback 晚上验收,下一轮漏斗使用结果”。如果手动触发导致重叠,feedback 只处理当时已经落库的数据,漏掉的 observation 会在下一次 feedback 补上。
| 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 推送 |
RAG_SEMANTIC_PROVIDER / RAG_SEMANTIC_API_KEY / RAG_SEMANTIC_MODEL / RAG_SEMANTIC_BASE_URL
|
RAG 防雷的可选语义否决模型;默认新闻检索走 akshare,无需额外 key |
OPENAI_API_KEY 或其它 *_API_KEY / *_MODEL / *_BASE_URL
|
兼容 OpenAI 协议的备用模型 |
注意:Actions 通过 Secrets 注入环境变量,和本地 .env 文件无关。
| Variable | 推荐值 | 用途 |
|---|---|---|
FUNNEL_DYNAMIC_POLICY |
shadow |
控制动态策略:off 静态、shadow 旁路观察、on 正式生效。 |
FUNNEL_DYNAMIC_POLICY 不是密钥,优先放 GitHub Variables;workflow 也兼容同名 Secret。
日志特征:配置缺失: ... 或模型调用返回 401
处理:去 GitHub → Settings → Secrets 检查对应变量是否存在且有效。
现象:运行时间比平时长很多
处理:A 股日线有自动降级机制(tickflow → tushare → akshare → baostock → efinance),通常自愈。港股 / 美股目前依赖 TickFlow,失败时优先检查 TickFlow key、套餐权限和请求频次。
日志特征:您的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 配置。
原因:未配置 SUPABASE_USER_ID 或 Telegram 参数。Step4 按设计跳过——这不是故障。
排查顺序:
- 检查
signal_observations是否有最近样本。 - 检查
signal_outcomes.status是否仍大量为pending。 - 检查
signal_health_daily.sample_count是否低于阈值。 - 检查
signal_registry.status是否把信号置为EXPERIMENTAL或RETIRED。 - 如果漏斗没有写
signal_policy_shadow_runs,确认FUNNEL_DYNAMIC_POLICY=shadow是否已配置到 GitHub Variables / Secrets。
现象:收到的是模板格式的简报而非 AI 生成的
原因:合规简报模型未配置 / 模型调用失败 / 输出触发合规校验。降级为本地模板是正常保护行为,不影响主研报。
- 改完策略参数后,先手动触发一次 workflow 做 dry run
- 关注 Actions 页面的 Artifacts 输出,回测结果会存在那里
- 关键版本变更后,固定 snapshot 跑一轮回测确认效果
- Home
- 01_Product_Overview
- 02_Finance_Wyckoff_Method
- 03_Finance_Quantitative_Metrics
- 04_Finance_Sector_Rotation_Regime
- 05_Finance_Risk_Management
- 06_Backtest_Methodology
- 07_Backtest_Simple_vs_Compound
- 08_Research_Strategy_Decay
- 09_Tech_Architecture
- 10_Tech_LLM_RAG_Integration
- 12_Tech_Actions_Operations
- 13_Tech_Python_Engineering