feat(weight-evolver): cron 3종 등록 (월 generate+apply / 일 apply / 토 evaluate)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-22 03:14:23 +09:00
parent 11b3700959
commit f46851d481

View File

@@ -38,6 +38,11 @@ from .strategy_evolver import (
get_weights_with_trend, recalculate_weights, get_weights_with_trend, recalculate_weights,
generate_smart_recommendation, generate_smart_recommendation,
) )
from .weight_evolver import (
generate_weekly_candidates_and_save,
apply_today_and_pick,
evaluate_weekly,
)
from .routers import curator as curator_router from .routers import curator as curator_router
from .routers import briefing as briefing_router from .routers import briefing as briefing_router
from .routers import review as review_router from .routers import review as review_router
@@ -111,9 +116,42 @@ def on_startup():
id="grade_weekly_review", id="grade_weekly_review",
) )
scheduler.add_job(_run_weight_evolver_weekly, "cron", day_of_week="mon", hour=9, minute=0, id="weight_evolver_weekly")
scheduler.add_job(_run_weight_evolver_daily, "cron", hour=9, minute=0, id="weight_evolver_daily")
scheduler.add_job(_run_weight_evolver_eval, "cron", day_of_week="sat", hour=22, minute=0, id="weight_evolver_eval")
scheduler.start() scheduler.start()
async def _run_weight_evolver_weekly():
"""월 09:00 — 6개 후보 생성 후 inline으로 apply_today도 호출."""
try:
generate_weekly_candidates_and_save()
apply_today_and_pick(n=5)
except Exception as e:
logger.error(f"[weight_evolver_weekly] {e}")
async def _run_weight_evolver_daily():
"""매일 09:00 (월요일 제외 — 월은 weekly cron이 inline으로 처리)."""
try:
from datetime import datetime, timezone, timedelta
KST = timezone(timedelta(hours=9))
if datetime.now(KST).weekday() == 0:
return
apply_today_and_pick(n=5)
except Exception as e:
logger.error(f"[weight_evolver_daily] {e}")
async def _run_weight_evolver_eval():
"""토 22:00 — 회고 + 다음주 base 갱신."""
try:
evaluate_weekly()
except Exception as e:
logger.error(f"[weight_evolver_eval] {e}")
@app.get("/health") @app.get("/health")
def health(): def health():
return {"ok": True} return {"ok": True}