기타 배치 작업

청구서 외의 정기 배치 작업 흐름을 정리한다.

1. 배치 작업 전체 스케줄

작업크론 (UTC)실행 시간 (KST)주기
프로젝트 동기화0 0-12/2,15,21 * * *09:00~21:00 (2h), 00:00, 06:00일 7~8회
계약 만료 알림0 0 * * *매일 09:00일 1회
자동 정지0 20 * * *매일 05:00일 1회
파트너 사용량0 0 1 * *매월 1일 09:00월 1회
청구서 생성0 15 4 * *매월 5일 00:00월 1회

2. 계약 만료 알림 (매일 09:00 KST)

2.1 흐름

2.2 알림 조건

  • should_notify = enable_notification == true AND end_date - reminder_days <= today
  • 알림 유형: type=ACTION, category=CONTRACT, sub_category=EXPIRED

2.3 이메일 내용

파라미터
템플릿contract_expiration
NAME사용자 이름
ORG_NAME조직(고객사)명
REMAINING만료까지 남은 일수
START_DATE계약 시작일
END_DATE계약 종료일
CSP"NHN Cloud"
ACCOUNTS연동된 프로젝트 ID 목록
MEMO계약 메모
URL대시보드 고객사 상세 링크

3. 고객사 자동 정지 (매일 05:00 KST)

3.1 흐름

3.2 상태 변경 조건 요약

  • Contract.expired: end_date < today (Asia/Seoul 기준)
  • API에서도 수동으로 조직 상태를 suspended로 변경 가능

3.3 API 호출에 의한 상태 변경 (참고)


4. 파트너 사용량 기록 (매월 1일 09:00 KST)

4.1 흐름

4.2 파트너 사용량 상태 흐름


5. 시험판 만료 처리

  • 시험 기간(trial_end_date)이 현재 시각보다 이전인 회사를 찾아 deactivate 플래그 설정
  • 비활성화된 회사의 사용자는 로그인 시 UnauthorizedException 발생

6. 토큰 정리

6.1 만료된 리프레시 토큰 정리

6.2 토큰 블랙리스트 정리

  • 로그아웃 시 access_token이 블랙리스트에 추가됨
  • 토큰 만료 시각이 지난 항목은 자동 삭제

7. Worker 태스크 추적

Worker 태스크의 실행 상태를 DB에 기록하여 대시보드에서 진행 상황을 확인할 수 있다. 구현: worker/controllers/worker_task_controller.py, 모델: common/models/worker_task_model.py

7.1 워커 태스크 상태 흐름

7.2 추적 대상 태스크 유형

태스크 유형설명
InvoiceCreation청구서 생성 진행 상태
InvoiceSummary청구서 요약 생성
TrendLine트렌드 라인 데이터 생성
CURUpdateCUR 업데이트