diff options
| author | joonhoekim <26rote@gmail.com> | 2025-12-03 12:58:13 +0900 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-12-03 12:58:13 +0900 |
| commit | 593affe7253c5114c09119a24e88f7bfbf33f9bf (patch) | |
| tree | a79f3b796c6da7a362f5f11242bf9b2fbb5ecf57 /app/api/cron | |
| parent | 7bdddbacf8610140c0c9db7ccb09d546203ce380 (diff) | |
(대표님) working-dujin 경로 작업사항 [김준회]
Diffstat (limited to 'app/api/cron')
| -rw-r--r-- | app/api/cron/tags-plant/start/route.ts | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/app/api/cron/tags-plant/start/route.ts b/app/api/cron/tags-plant/start/route.ts index 83e06935..17a96ed7 100644 --- a/app/api/cron/tags-plant/start/route.ts +++ b/app/api/cron/tags-plant/start/route.ts @@ -88,8 +88,6 @@ async function processTagImport(syncId: string) { const jobInfo = syncJobs.get(syncId)!; const projectCode = jobInfo.projectCode; const packageCode = jobInfo.packageCode; - const mode = jobInfo.mode; // 모드 정보 추출 - // 상태 업데이트: 처리 중 syncJobs.set(syncId, { @@ -102,23 +100,40 @@ async function processTagImport(syncId: string) { throw new Error('Package is required'); } - // 여기서 실제 태그 가져오기 로직 import const { importTagsFromSEDP } = await import('@/lib/sedp/get-tags-plant'); - // 진행 상황 업데이트를 위한 콜백 함수 - const updateProgress = (progress: number) => { + // ENG 모드 실행 (0~50%) + const updateProgressENG = (progress: number) => { + syncJobs.set(syncId, { + ...syncJobs.get(syncId)!, + progress: Math.floor(progress * 0.5) + }); + }; + + const engResult = await importTagsFromSEDP(projectCode, packageCode, updateProgressENG, 'ENG'); + + // IM 모드 실행 (50~100%) + const updateProgressIM = (progress: number) => { syncJobs.set(syncId, { ...syncJobs.get(syncId)!, - progress + progress: 50 + Math.floor(progress * 0.5) }); }; - // 실제 태그 가져오기 실행 - const result = await importTagsFromSEDP(projectCode, packageCode,updateProgress, mode); + const imResult = await importTagsFromSEDP(projectCode, packageCode, updateProgressIM, 'IM'); - // 명시적으로 캐시 무효화 + // 캐시 무효화 revalidateTag(`tags-${packageCode}`); - revalidateTag(`forms-${packageCode}-${mode}`); + revalidateTag(`forms-${packageCode}-ENG`); + revalidateTag(`forms-${packageCode}-IM`); + + // 결과 합산 + const result = { + processedCount: engResult.processedCount + imResult.processedCount, + excludedCount: engResult.excludedCount + imResult.excludedCount, + totalEntries: engResult.totalEntries + imResult.totalEntries, + errors: [...(engResult.errors || []), ...(imResult.errors || [])].filter(Boolean) + }; // 상태 업데이트: 완료 syncJobs.set(syncId, { @@ -131,7 +146,6 @@ async function processTagImport(syncId: string) { return result; } catch (error: any) { - // 에러 발생 시 상태 업데이트 syncJobs.set(syncId, { ...syncJobs.get(syncId)!, status: 'failed', @@ -139,7 +153,7 @@ async function processTagImport(syncId: string) { error: error.message || 'Unknown error occurred', }); - throw error; // 에러 다시 던지기 + throw error; } } |
