docs: DB 기반 동적 스케줄러 관리 시스템 문서 추가 (04)
This commit is contained in:
parent
8890e57fa7
commit
5a2ced6244
@ -70,6 +70,7 @@
|
|||||||
### 4.2 rb8001 구현
|
### 4.2 rb8001 구현
|
||||||
- [ ] naverworks_briefing_skill.py 파일 생성
|
- [ ] naverworks_briefing_skill.py 파일 생성
|
||||||
- [ ] APScheduler 잡 등록 (09:00 KST, main.py)
|
- [ ] APScheduler 잡 등록 (09:00 KST, main.py)
|
||||||
|
- 주의: main.py는 이미 732줄로 과도함, 최소한의 등록만
|
||||||
- [ ] 환경변수 설정:
|
- [ ] 환경변수 설정:
|
||||||
- NAVERWORKS_BRIEFING_ENABLED=true
|
- NAVERWORKS_BRIEFING_ENABLED=true
|
||||||
- NAVERWORKS_BRIEFING_CHANNEL_ID=C09C98KK2TT
|
- NAVERWORKS_BRIEFING_CHANNEL_ID=C09C98KK2TT
|
||||||
|
|||||||
@ -0,0 +1,52 @@
|
|||||||
|
# DB 기반 동적 스케줄러 관리 시스템
|
||||||
|
|
||||||
|
## 날짜: 2025-09-22
|
||||||
|
## 작성자: Claude / happybell80
|
||||||
|
## 관련 서비스: rb8001
|
||||||
|
## 상태: 계획
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 목적
|
||||||
|
main.py 732줄 중 130줄이 스케줄 관련 코드. DB로 이동하여 동적 관리.
|
||||||
|
|
||||||
|
## 2. 테이블 구조
|
||||||
|
- scheduled_jobs 테이블
|
||||||
|
- 컬럼: id(UUID), name, job_type, cron_expression, enabled, config(JSONB)
|
||||||
|
- 인덱스: enabled, job_type
|
||||||
|
|
||||||
|
## 3. Job Type 매핑
|
||||||
|
- naverworks_briefing → NaverWorksBriefingSkill.process_briefing
|
||||||
|
- daily_summary → DMSkill.send_daily_summary_dm
|
||||||
|
- companyx_news → NewsPostingSkill.process_news_batch
|
||||||
|
- lunch_worldcup → send_lunch_worldcup_notification
|
||||||
|
|
||||||
|
## 4. 동작 방식
|
||||||
|
1. 서버 시작 시 DB에서 enabled=true 조회
|
||||||
|
2. job_type으로 함수 매핑
|
||||||
|
3. APScheduler에 등록
|
||||||
|
4. 런타임 중 API로 추가/수정/삭제
|
||||||
|
|
||||||
|
## 5. API 엔드포인트
|
||||||
|
- POST /api/scheduler/jobs - 새 잡 추가
|
||||||
|
- PATCH /api/scheduler/jobs/{name} - 스케줄 수정
|
||||||
|
- DELETE /api/scheduler/jobs/{name} - 잡 삭제
|
||||||
|
- GET /api/scheduler/jobs - 목록 조회
|
||||||
|
|
||||||
|
## 6. 데이터 예시
|
||||||
|
| 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"} |
|
||||||
|
|
||||||
|
## 7. 장점
|
||||||
|
- 재배포 없이 스케줄 변경
|
||||||
|
- 웹 UI로 관리 가능
|
||||||
|
- 히스토리 추적
|
||||||
|
- 백업/복구 용이
|
||||||
|
|
||||||
|
## 8. 현재 문제점
|
||||||
|
- 환경변수 산재 (DAILY_SUMMARY_ENABLED 등)
|
||||||
|
- 새 스케줄마다 main.py 수정 필요
|
||||||
|
- 스케줄 코드와 비즈니스 로직 혼재
|
||||||
Loading…
x
Reference in New Issue
Block a user