"use server"; import { getMaterialGroupByCode } from "@/lib/material/material-group-service"; import { getVendorByCode } from "@/components/common/vendor/vendor-service"; import { debugLog, debugWarn, debugSuccess } from "@/lib/debug-utils"; /** * 엑셀에서 가져온 벤더풀 데이터를 enrichment (자동완성) * 코드 필드를 기반으로 나머지 데이터를 자동으로 채웁니다. */ export interface VendorPoolEnrichmentInput { // 자재그룹 관련 materialGroupCode?: string; materialGroupName?: string; // 협력업체 관련 vendorCode?: string; vendorName?: string; } export interface VendorPoolEnrichmentResult { enriched: VendorPoolEnrichmentInput; enrichedFields: string[]; // 자동완성된 필드 목록 warnings: string[]; // 경고 메시지 (코드는 있지만 데이터를 찾을 수 없는 경우) } /** * 벤더풀 데이터 enrichment */ export async function enrichVendorPoolData( data: VendorPoolEnrichmentInput ): Promise { const enriched = { ...data }; const enrichedFields: string[] = []; const warnings: string[] = []; debugLog('[Enrichment] 시작:', { materialGroupCode: data.materialGroupCode, vendorCode: data.vendorCode, }); // 1. 자재그룹코드 → 자재그룹명 자동완성 if (data.materialGroupCode && !data.materialGroupName) { debugLog('[Enrichment] 자재그룹명 조회 시도:', data.materialGroupCode); const materialGroup = await getMaterialGroupByCode(data.materialGroupCode); if (materialGroup) { enriched.materialGroupName = materialGroup.materialGroupDescription; enrichedFields.push('materialGroupName'); debugSuccess('[Enrichment] 자재그룹명 자동완성:', { code: data.materialGroupCode, name: materialGroup.materialGroupDescription, }); } else { debugWarn('[Enrichment] 자재그룹코드를 찾을 수 없음:', data.materialGroupCode); warnings.push( `자재그룹코드 '${data.materialGroupCode}'에 해당하는 자재그룹명을 찾을 수 없습니다.` ); } } // 2. 협력업체코드 → 협력업체명 자동완성 if (data.vendorCode && !data.vendorName) { debugLog('[Enrichment] 협력업체명 조회 시도:', data.vendorCode); const vendor = await getVendorByCode(data.vendorCode); if (vendor) { enriched.vendorName = vendor.vendorName; enrichedFields.push('vendorName'); debugSuccess('[Enrichment] 협력업체명 자동완성:', { code: data.vendorCode, name: vendor.vendorName, }); } else { debugWarn('[Enrichment] 협력업체코드를 찾을 수 없음:', data.vendorCode); warnings.push( `협력업체코드 '${data.vendorCode}'에 해당하는 협력업체명을 찾을 수 없습니다.` ); } } debugSuccess('[Enrichment] 완료:', { enrichedFieldsCount: enrichedFields.length, warningsCount: warnings.length, }); return { enriched, enrichedFields, warnings, }; }