- 앱 시작 후
BatchJobRunner가job.name으로 실행할 Job을 선택한다. - 실행 파라미터:
targetDate(yyyy-MM-dd)yearMonth(yyyyMM)
- 파라미터 검증은
JobParameterValidator가 수행한다.
핵심 클래스:
common/runner/BatchJobRunnercommon/config/JobParameterValidatorcommon/listener/JobResultListenercommon/listener/TimeBasedChunkListenercommon/config/BatchTimeConfig
방식: Tasklet
역할:
family_remove_schedule에서 도래 건 조회 (SCHEDULED,schedule_date <= 실행일)family_sub매핑 제거policy_sub,blocked_service_sub비활성화(is_active=false)family집계값 갱신 (family_num,family_data_amount)family_sub.data_limit갱신- 스케줄 상태 반영 (
COMPLETED/FAILED)
구현 파일:
jobs/family_remove/tasklet/FamilyRemoveTaskletjobs/family_remove/repository/FamilyRemoveBatchRepositoryjobs/family_remove/repository/FamilyRemoveBatchRepositoryImpl
방식: 2-step (Chunk + Partitioned Chunk)
역할:
- Step1 (
reportSeedStep): 주간 리포트 대상 seed 생성 - Step2 (
usageMetricsStep): 지표/점수/스냅샷 계산 및 저장
현재 상태:
- Step1 구현 완료
- Step2 구현 완료
UsageAggregationJobConfig에서 Step1 -> Step2 순으로 연결됨- 상세 구조는
docs/WEEKLY_AI_REPORT_ARCHITECTURE.md참고
방식: Chunk skeleton
현재 상태:
- reader/processor/writer 더미 구현
- 실제 로테이션 로직(activate -> reencrypt -> retire) 미구현
현재 상태: 미구현 (JobConfig 없음)
familyRemoveJob통합 테스트 및 실패 케이스 검증usageAggregationJob성능 계측 고도화 및 인덱스/운영 튜닝 정리cryptoKeyRotationJob단계 분리(activate/reencrypt/retire)llmFeedbackJob실제 LLM API 연결 방식과 실행 설정 정리redisDualWriteJobJob 골격 생성 및 실행 파이프라인 연결
- 스케줄링은 EventBridge + ECS one-shot 실행 우선
- 동일 파라미터 재실행 시 idempotent 보장
- 실패 시 상태/로그로 재처리 가능해야 함