summaryrefslogtreecommitdiff
path: root/instrumentation.ts
blob: b6676b67c0b2eaa50d0e62cd7b1e916719ca06eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import { triggerSync } from './lib/nonsap-sync/enhanced-sync-service';

/**
 * instrumentation 진입점 - 여러 JOB들이 등록될 수 있으므로 확장성을 위해 최소한의 메서드 호출만으로 유지
 */
export async function register() {
  console.log('Application instrumentation registered');
  
  // Node.js runtime에서만 동기화 스케줄러 시작
  if (process.env.NEXT_RUNTIME === 'nodejs') {
    // try {
    //   // NONSAP 데이터 동기화 스케줄러 시작 (CMCTB_CDNM, CMCTB_CD)
    //   const { triggerSync } = await import('./lib/nonsap-sync/enhanced-sync-service');
    //   const cron = (await import('node-cron')).default;

    //   cron.schedule('0 1 * * *', async () => {
    //     try {
    //       await triggerSync();
    //     } catch (error) {
    //       console.error('NONSAP data sync failed:', error);
    //     }
    //   }, { timezone: 'Asia/Seoul' });

    // } catch {
    //   console.error('Failed to start NONSAP data sync scheduler.');
    // }

    // try{
    //   triggerSync();
    // } catch {
    //   console.error('Failed to trigger NONSAP data sync.');
    // }

    try {
      // Knox 통합 동기화 스케줄러 시작 (직급 → 조직 → 임직원 순차 실행) --- 임직원은 안씀
      const { startKnoxMasterSyncScheduler } = await import(
        './lib/knox-sync/master-sync-service'
      );
      await startKnoxMasterSyncScheduler();

    } catch {
      console.error('Failed to start Knox master sync scheduler.');
      // 스케줄러 실패해도 애플리케이션은 계속 실행
    }

    try {
      // Procurement 동기화 스케줄러 시작 (지불조건, 인코텀즈, 선적지, 하역지)
      const { startProcurementSyncScheduler } = await import(
        './lib/nonsap-sync/procurement-sync-service'
      );
      await startProcurementSyncScheduler();
    } catch {
      console.error('Failed to start Procurement sync scheduler.');
      // 스케줄러 실패해도 애플리케이션은 계속 실행
    }

    try {
      // SHI-API NONSAP 사용자 동기화 - 1일 1회 CRON 등록
      const { startShiApiUsersDailySyncScheduler } = await import('./lib/shi-api/users-sync-scheduler');
      await startShiApiUsersDailySyncScheduler();
    } catch {
      console.error('Failed to start SHI-API users daily cron scheduler.');
      // 스케줄러 실패해도 애플리케이션은 계속 실행
    }

    try {
      // 사용자 코드 동기화 스케줄러 시작 (구매그룹코드)
      const { startUserCodeSyncScheduler } = await import('./lib/nonsap-sync/purchase-group-code/user-code-sync-scheduler');
      await startUserCodeSyncScheduler();
    } catch {
      console.error('Failed to start User Code sync scheduler.');
      // 스케줄러 실패해도 애플리케이션은 계속 실행
    }
  }
}