Files
ewoooc/services
OoO c2124dce00
All checks were successful
CD Pipeline / deploy (push) Successful in 2m53s
feat(p11+): RAG worker cron — promotion_gate / awaiting_review / expire
Operation Ollama-First v5.0 / Phase 11+ 收尾(ADR-032/033 落地)

services/learning_pipeline.py 新增 2 個 worker 函數:
- process_pending_episodes(batch=50) — 批次處理 pending → can_promote → promote/reject/await
  純規則引擎,不跑 LLM(Distiller 純 Hermes 規則)
- push_awaiting_reviews_to_telegram(batch=5) — 推 Stage 4 awaiting_review 到 Telegram
  TELEGRAM_ADMIN_CHAT_ID 未設則跳過(fail-safe)
  訊息含 episode_id + weight + quality + 600 字截斷文,附 promotion_review_keyboard 👍/👎

run_scheduler.py 加 3 個 cron + 對應 task wrapper:
- 每 5 分鐘  → run_promotion_gate_worker
- 每 30 分鐘 → run_awaiting_review_push
- 每 4 小時  → run_expire_stale_reviews(24h 無回應 → weight=0.5)

設計安全保證:
- RAG_ENABLED=false 時 learning_episodes 為空,3 個 worker 跑空 loop(無害)
- 所有 worker 例外完全吞掉,僅 log error,不影響其他排程
- promote 成功才回 stats['promoted']++,DB 失敗計 errors

完整 RAG 自主學習迴圈閉環:
  LLM 結果 → Distiller → learning_episodes (pending)
    ↓ 每 5 分鐘 worker
  PromotionGate 4 階段
    ↓ approved → 寫 ai_insights → RAG 可檢索
    ↓ awaiting_review → 每 30 分鐘推 Telegram
        ↓ 24h 無回應 → 每 4h expire → weight=0.5
        ↓ 👍 callback → promote → ai_insights
        ↓ 👎 callback → rejected_human → 永不晉升

仍待 Phase 12+ 完成:
- learning_episodes.embedding 寫入路徑(Stage 3 dedup 解鎖)
- RAG_ENABLED=true 灰度啟用條件(需 100+ episodes + ANTHROPIC_API_KEY)

regression: 70 unit tests 全綠

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 09:11:27 +08:00
..