From 2ef02e27dbe639876fa3b90c30307dda183545ec Mon Sep 17 00:00:00 2001
From: dujinkim <dujin.kim@dtsolution.co.kr>
Date: Thu, 17 Jul 2025 10:50:52 +0000
Subject: (최겸) 기술영업 변경사항 적용
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 lib/items-tech/table/import-excel-button.tsx | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

(limited to 'lib/items-tech/table/import-excel-button.tsx')

diff --git a/lib/items-tech/table/import-excel-button.tsx b/lib/items-tech/table/import-excel-button.tsx
index 02736664..4565c365 100644
--- a/lib/items-tech/table/import-excel-button.tsx
+++ b/lib/items-tech/table/import-excel-button.tsx
@@ -84,7 +84,6 @@ export function ImportItemButton({ itemType, onSuccess }: ImportItemButtonProps)
         // 복호화 실패 시 원본 파일 사용
         arrayBuffer = await file.arrayBuffer();
       }
-      
       // ExcelJS 워크북 로드
       const workbook = new ExcelJS.Workbook();
       await workbook.xlsx.load(arrayBuffer);
@@ -94,21 +93,21 @@ export function ImportItemButton({ itemType, onSuccess }: ImportItemButtonProps)
       if (!worksheet) {
         throw new Error("Excel 파일에 워크시트가 없습니다.");
       }
-      
       // 헤더 행 찾기
       let headerRowIndex = 1;
       let headerRow: ExcelJS.Row | undefined;
       let headerValues: (string | null)[] = [];
+
       
       worksheet.eachRow((row, rowNumber) => {
         const values = row.values as (string | null)[];
-        if (!headerRow && values.some(v => v === "자재 그룹" || v === "itemCode" || v === "item_code")) {
+        if (!headerRow && values.some(v => v === "자재 그룹" || v === "자재 코드" || v === "itemCode" || v === "item_code")) {
           headerRowIndex = rowNumber;
           headerRow = row;
           headerValues = [...values];
         }
       });
-      
+
       if (!headerRow) {
         throw new Error("Excel 파일에서 헤더 행을 찾을 수 없습니다.");
       }
@@ -173,7 +172,7 @@ export function ImportItemButton({ itemType, onSuccess }: ImportItemButtonProps)
       };
       
       // 선택된 타입에 따라 적절한 프로세스 함수 호출
-      let result;
+      let result: { successCount: number; errorCount: number; errors?: Array<{ row: number; message: string; itemCode?: string; workType?: string }> };
       if (itemType === "top") {
         result = await processTopFileImport(dataRows, updateProgress);
       } else if (itemType === "hull") {
@@ -185,7 +184,12 @@ export function ImportItemButton({ itemType, onSuccess }: ImportItemButtonProps)
       toast.success(`${result.successCount}개의 ${ITEM_TYPE_NAMES[itemType]}이(가) 성공적으로 가져와졌습니다.`);
       
       if (result.errorCount > 0) {
-        toast.warning(`${result.errorCount}개의 항목은 처리할 수 없었습니다.`);
+        const errorDetails = result.errors?.map((error: { row: number; message: string; itemCode?: string; workType?: string }) => 
+          `행 ${error.row}: ${error.itemCode || '알 수 없음'} (${error.workType || '알 수 없음'}) - ${error.message}`
+        ).join('\n') || '오류 정보를 가져올 수 없습니다.';
+        
+        console.error('Import 오류 상세:', errorDetails);
+        toast.error(`${result.errorCount}개의 항목 처리 실패. 콘솔에서 상세 내용을 확인하세요.`);
       }
       
       // 상태 초기화 및 다이얼로그 닫기
-- 
cgit v1.2.3

