- 20251004_happybell80_로빙_뇌_기관_원칙_위반_현황.md: 원칙 위반 현황 및 개선 계획 추가 - 250930_naverworks_slack_03: 완료 문서로 전환 (완료 기능만 포함) - 250930_naverworks_slack_04: Lists API skill-slack 통합 실행 계획 (신규) - 250919_naverworks_slack_04 → 05: DB/스케줄러 관리 (순서 변경) - 300_architecture: rb8001 직접 Slack 호출 제거, skill-slack HTTP 호출로 변경 - CLAUDE.md: "문서 100줄 이하 유지" 규칙 추가 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1.7 KiB
1.7 KiB
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. 동작 방식
- 서버 시작 시 DB에서 enabled=true 조회
- job_type으로 함수 매핑
- APScheduler에 등록
- 런타임 중 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 수정 필요
- 스케줄 코드와 비즈니스 로직 혼재