diff options
| author | joonhoekim <26rote@gmail.com> | 2025-08-26 07:43:34 +0000 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-08-26 07:43:34 +0000 |
| commit | 0336ec0477b652f5c80939fe172376aaea028d75 (patch) | |
| tree | dd11b212ecb27695aa5a2ef033338fae875620a0 /lib | |
| parent | 12e936c0b45ffa1c8f3c02ff77961212767be9a7 (diff) | |
(김준회) shi-api 업데이터 오류 수정, dolce 문서저장시 usage, usageType 오류 처리
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/shi-api/shi-api-utils.ts | 27 | ||||
| -rw-r--r-- | lib/vendor-document-list/dolce-upload-service.ts | 3 |
2 files changed, 7 insertions, 23 deletions
diff --git a/lib/shi-api/shi-api-utils.ts b/lib/shi-api/shi-api-utils.ts index 955cddd9..c0b62b0d 100644 --- a/lib/shi-api/shi-api-utils.ts +++ b/lib/shi-api/shi-api-utils.ts @@ -2,8 +2,8 @@ import { nonsapUser, users } from '@/db/schema'; import db from '@/db/db'; -import { sql } from 'drizzle-orm'; import { debugError, debugLog, debugWarn, debugSuccess } from '@/lib/debug-utils'; +import { bulkUpsert } from '@/lib/soap/batch-utils'; const shiApiBaseUrl = process.env.SHI_API_BASE_URL; const shiNonsapUserSegment = process.env.SHI_NONSAP_USER_SEGMENT; @@ -128,28 +128,11 @@ export const getAllNonsapUser = async () => { } } - // 매핑된 청크가 있을 경우에만 DB 처리 + // 매핑된 청크가 있을 경우에만 DB 처리 (트랜잭션으로 처리) if (mappedChunk.length > 0) { - await db.insert(users) - .values(mappedChunk) - .onConflictDoUpdate({ - target: users.email, - set: { - name: users.name, - employeeNumber: users.employeeNumber, - knoxId: users.knoxId, - epId: users.epId, - deptCode: users.deptCode, - deptName: users.deptName, - phone: users.phone, - nonsapUserId: users.nonsapUserId, - isAbsent: users.isAbsent, - isDeletedOnNonSap: users.isDeletedOnNonSap, - isActive: users.isActive, - isRegularEmployee: users.isRegularEmployee, - updatedAt: sql`now()`, - }, - }); + await db.transaction(async (tx) => { + await bulkUpsert(tx, users, mappedChunk, 'email', 200); // 청크 내에서도 200개씩 세분화 + }); totalUpserted += mappedChunk.length; debugLog(`[CHUNK ${Math.floor(i/CHUNK_SIZE) + 1}] Successfully processed ${mappedChunk.length} users`); diff --git a/lib/vendor-document-list/dolce-upload-service.ts b/lib/vendor-document-list/dolce-upload-service.ts index 8835c0b0..8f2fa275 100644 --- a/lib/vendor-document-list/dolce-upload-service.ts +++ b/lib/vendor-document-list/dolce-upload-service.ts @@ -285,7 +285,8 @@ class DOLCEUploadService { uploaderName: revisions.uploaderName, submittedDate: revisions.submittedDate, comment: revisions.comment, - usage: revisions.comment, + usage: revisions.usage, + usageType: revisions.usageType, // ✅ DOLCE 연동 필드들 (새로 추가) externalUploadId: revisions.externalUploadId, |
