diff options
Diffstat (limited to 'lib/vendor-regular-registrations/handlers.ts')
| -rw-r--r-- | lib/vendor-regular-registrations/handlers.ts | 56 |
1 files changed, 45 insertions, 11 deletions
diff --git a/lib/vendor-regular-registrations/handlers.ts b/lib/vendor-regular-registrations/handlers.ts index 4b21263d..95acde23 100644 --- a/lib/vendor-regular-registrations/handlers.ts +++ b/lib/vendor-regular-registrations/handlers.ts @@ -6,19 +6,20 @@ 'use server'; -import { submitRegistrationRequest } from './service'; +import { sendRegistrationRequestToMDG } from './service'; import { debugLog, debugError, debugSuccess } from '@/lib/debug-utils'; import type { RegistrationRequestData } from '@/components/vendor-regular-registrations/registration-request-dialog'; import db from '@/db/db'; import { eq } from 'drizzle-orm'; import { vendors } from '@/db/schema/vendors'; -import { vendorAdditionalInfo } from '@/db/schema/vendorRegistrations'; +import { vendorAdditionalInfo, vendorRegularRegistrations } from '@/db/schema/vendorRegistrations'; /** - * 정규업체 등록 핸들러 (결재 승인 후 실행됨) - * + * 정규업체 등록 핸들러 (결재 승인 후 MDG 전송 실행) + * + * 결재 승인 후 자동으로 MDG로 정규업체 등록 요청을 전송함 * 이 함수는 직접 호출하지 않고, 결재 워크플로우에서 자동으로 호출됨 - * + * * @param payload - withApproval()에서 전달한 actionPayload */ export async function registerVendorInternal(payload: { @@ -31,28 +32,61 @@ export async function registerVendorInternal(payload: { }); try { - // 실제 정규업체 등록 처리 - debugLog('[VendorRegistrationHandler] submitRegistrationRequest 호출'); - const result = await submitRegistrationRequest( + // 1. MDG로 정규업체 등록 요청 데이터 전송 + debugLog('[VendorRegistrationHandler] sendRegistrationRequestToMDG 호출'); + const mdgResult = await sendRegistrationRequestToMDG( payload.registrationId, payload.requestData ); - if (!result.success) { - debugError('[VendorRegistrationHandler] 정규업체 등록 실패', result.error); - throw new Error(result.error || '정규업체 등록에 실패했습니다.'); + if (!mdgResult.success) { + debugError('[VendorRegistrationHandler] MDG 전송 실패', mdgResult.error); + + // MDG 전송 실패 시 상태를 registration_failed로 변경 + await db.update(vendorRegularRegistrations) + .set({ + status: 'registration_failed', + updatedAt: new Date() + }) + .where(eq(vendorRegularRegistrations.id, payload.registrationId)); + + throw new Error(mdgResult.error || 'MDG 전송에 실패했습니다.'); } + // 3. MDG 전송 성공 시 상태를 registration_completed로 변경 + debugLog('[VendorRegistrationHandler] MDG 전송 성공, 상태를 registration_completed로 변경'); + await db.update(vendorRegularRegistrations) + .set({ + status: 'registration_completed', + updatedAt: new Date() + }) + .where(eq(vendorRegularRegistrations.id, payload.registrationId)); + debugSuccess('[VendorRegistrationHandler] 정규업체 등록 완료', { registrationId: payload.registrationId, + mdgResult: mdgResult }); return { success: true, message: '정규업체 등록이 완료되었습니다.', + mdgResult: mdgResult }; } catch (error) { debugError('[VendorRegistrationHandler] 정규업체 등록 중 에러', error); + + // 에러 발생 시 상태를 registration_failed로 변경 + try { + await db.update(vendorRegularRegistrations) + .set({ + status: 'registration_failed', + updatedAt: new Date() + }) + .where(eq(vendorRegularRegistrations.id, payload.registrationId)); + } catch (updateError) { + debugError('[VendorRegistrationHandler] 상태 업데이트 실패', updateError); + } + throw error; } } |
