feat(weight-evolver): cron 3종 등록 (월 generate+apply / 일 apply / 토 evaluate)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user