diff options
| author | joonhoekim <26rote@gmail.com> | 2025-09-03 09:22:56 +0000 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-09-03 09:22:56 +0000 |
| commit | bfe354f7633f62350e61eb784cbf1926079339d1 (patch) | |
| tree | 691ad115b89ee1b7e5fb2dab165c85ea325cf920 /lib/nonsap-sync/purchase-group-code/user-code-sync-scheduler.ts | |
| parent | c5fc7195505d82c60fc9dffc3744782b91d7ebb7 (diff) | |
(김준회) 구매그룹코드를 users 테이블의 userCode 컬럼에 업데이트하도록 cronjob 등록
Diffstat (limited to 'lib/nonsap-sync/purchase-group-code/user-code-sync-scheduler.ts')
| -rw-r--r-- | lib/nonsap-sync/purchase-group-code/user-code-sync-scheduler.ts | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/nonsap-sync/purchase-group-code/user-code-sync-scheduler.ts b/lib/nonsap-sync/purchase-group-code/user-code-sync-scheduler.ts new file mode 100644 index 00000000..23d0b568 --- /dev/null +++ b/lib/nonsap-sync/purchase-group-code/user-code-sync-scheduler.ts @@ -0,0 +1,46 @@ +'use server'; + +import * as cron from 'node-cron'; +import { syncUserCodes } from './purchase-group-code-sync'; + +// CRON 스케줄 (기본: 매일 새벽 3시) +const CRON_STRING = process.env.USER_CODE_SYNC_CRON || '0 3 * * *'; + +// 애플리케이션 기동 시 최초 한 번 실행 여부 +const DO_FIRST_RUN = process.env.USER_CODE_SYNC_FIRST_RUN === 'true'; + +/** + * 사용자 코드 동기화 스케줄러 시작 + */ +export async function startUserCodeSyncScheduler(): Promise<void> { + console.log('[USER-CODE-SYNC] 사용자 코드 동기화 스케줄러 초기화 중...'); + + try { + // 환경 변수에 따라 실행시 즉시 실행 여부 결정 + if (DO_FIRST_RUN) { + console.log('[USER-CODE-SYNC] 첫 실행: 사용자 코드 동기화 즉시 시작'); + syncUserCodes().catch((error) => { + console.error('[USER-CODE-SYNC] 첫 실행 중 오류:', error); + }); + } + + // CRON JOB 등록 + cron.schedule(CRON_STRING, async () => { + try { + console.log('[USER-CODE-SYNC] CRON 실행: 사용자 코드 동기화 시작'); + await syncUserCodes(); + } catch (error) { + console.error('[USER-CODE-SYNC] 예약된 동기화 실패:', error); + // 동기화 실패해도 다음 스케줄은 계속 실행 + } + }, { + timezone: 'Asia/Seoul' + }); + + console.log(`[USER-CODE-SYNC] ✅ 사용자 코드 동기화 CRON 작업 등록 완료 (${CRON_STRING})`); + + } catch (error) { + console.error('[USER-CODE-SYNC] 스케줄러 초기화 실패:', error); + throw error; + } +} |
