blob: 934f9025014fc4b392057fb553da68a1b4125a1b (
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
/**
* 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 {
// // EDP 마스터 데이터 동기화 스케줄러 시작 (옥프로 요청사항, 20분마다 EDP에서 들어오는 기준정보 동기화)
// const { startEDPMasterDataSyncScheduler } = await import('./lib/edp-sync/sync-edp');
// await startEDPMasterDataSyncScheduler();
// } catch {
// console.error('Failed to start EDP master data sync scheduler.');
// // 스케줄러 실패해도 애플리케이션은 계속 실행
// }
// 구매그룹코드는 oracle에서 선택기로 확인하고, 유저가 클릭했을 때 업데이트 처리, 유저 1:1 대응 (김수진 프로 확인)
// 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.');
// // 스케줄러 실패해도 애플리케이션은 계속 실행
// }
try {
// Knox 결재 상태 폴링 스케줄러 시작 (1분마다 pending 결재 상태 확인)
// 참고: 핸들러는 Lazy 초기화로 자동 등록됨 (approval-workflow.ts의 ensureHandlersInitialized)
const { startApprovalPollingScheduler } = await import('./lib/approval/approval-polling-service');
await startApprovalPollingScheduler();
} catch {
console.error('Failed to start Approval polling scheduler.');
// 스케줄러 실패해도 애플리케이션은 계속 실행
}
}
}
|