summaryrefslogtreecommitdiff
path: root/lib/nonsap-sync/purchase-group-code/user-code-sync-scheduler.ts
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-09-03 09:22:56 +0000
committerjoonhoekim <26rote@gmail.com>2025-09-03 09:22:56 +0000
commitbfe354f7633f62350e61eb784cbf1926079339d1 (patch)
tree691ad115b89ee1b7e5fb2dab165c85ea325cf920 /lib/nonsap-sync/purchase-group-code/user-code-sync-scheduler.ts
parentc5fc7195505d82c60fc9dffc3744782b91d7ebb7 (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.ts46
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;
+ }
+}