1.7 KiB
1.7 KiB
DB 기반 동적 스케줄러 관리 시스템
날짜: 2026-01-02 작성자: happybell80 관련 서비스: rb8001 상태: 계획
목적
main.py 732줄 중 130줄이 스케줄 관련 코드. DB로 이동하여 동적 관리.
테이블 구조
scheduled_jobs테이블- 컬럼:
id(UUID),name,job_type,cron_expression,enabled,config(JSONB) - 인덱스:
enabled,job_type
Job Type 매핑
naverworks_briefing→NaverWorksBriefingSkill.process_briefingdaily_summary→DMSkill.send_daily_summary_dmcompanyx_news→NewsPostingSkill.process_news_batchlunch_worldcup→send_lunch_worldcup_notification
동작 방식
- 서버 시작 시 DB에서
enabled=true조회 job_type으로 함수 매핑- APScheduler에 등록
- 런타임 중 API로 추가/수정/삭제
API 엔드포인트
POST /api/scheduler/jobs- 새 잡 추가PATCH /api/scheduler/jobs/{name}- 스케줄 수정DELETE /api/scheduler/jobs/{name}- 잡 삭제GET /api/scheduler/jobs- 목록 조회
데이터 예시
| name | job_type | cron_expression | config |
|---|---|---|---|
| naverworks_daily | naverworks_briefing | 0 9 * * mon-fri | {"channel_id": "C09C98KK2TT"} |
| team_summary | daily_summary | 0 9 * * 1-5 | {} |
| companyx_news | companyx_news | 0 10 * * mon-fri | {"channel_id": "C09CP4MDX71"} |
장점
- 재배포 없이 스케줄 변경
- 웹 UI로 관리 가능
- 히스토리 추적
- 백업/복구 용이
현재 문제점
- 환경변수 산재 (
DAILY_SUMMARY_ENABLED등) - 새 스케줄마다 main.py 수정 필요
- 스케줄 코드와 비즈니스 로직 혼재