From 7ce4efa1468dda0fa7826c3ce36f3562bdd12c59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sun, 15 Feb 2026 11:08:01 +0900 Subject: [PATCH] =?UTF-8?q?fix(WEB):=20=EB=A7=A4=EC=B6=9C=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EC=82=AD=EC=A0=9C=EB=90=9C=20=EA=B1=B0=EB=9E=98?= =?UTF-8?q?=EC=B2=98=20=EC=B0=B8=EC=A1=B0=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20?= =?UTF-8?q?Select=20=ED=81=AC=EB=9E=98=EC=8B=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 삭제된 거래처(client_id 31,32)를 참조하는 매출 12건에서 API가 client: null을 반환, 빈 vendorName이 Radix Select.Item에 전달되어 페이지 크래시 발생. - transformApiToFrontend: client.name 빈값/공백 방어 강화 - vendorOptions: .filter(Boolean) → trim() 포함 명시적 필터로 변경 Co-Authored-By: Claude Opus 4.6 --- src/components/accounting/SalesManagement/index.tsx | 2 +- src/components/accounting/SalesManagement/types.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/accounting/SalesManagement/index.tsx b/src/components/accounting/SalesManagement/index.tsx index 8ab7f236..3f4e7c6a 100644 --- a/src/components/accounting/SalesManagement/index.tsx +++ b/src/components/accounting/SalesManagement/index.tsx @@ -132,7 +132,7 @@ export function SalesManagement({ initialData, initialPagination }: SalesManagem // ===== 거래처 목록 (필터용) ===== const vendorOptions = useMemo(() => { - const uniqueVendors = [...new Set(salesData.map(d => d.vendorName))].filter(Boolean); + const uniqueVendors = [...new Set(salesData.map(d => d.vendorName))].filter(v => v && v.trim() !== ''); return uniqueVendors.map(v => ({ value: v, label: v })); }, [salesData]); diff --git a/src/components/accounting/SalesManagement/types.ts b/src/components/accounting/SalesManagement/types.ts index 7bf28962..8f074a87 100644 --- a/src/components/accounting/SalesManagement/types.ts +++ b/src/components/accounting/SalesManagement/types.ts @@ -230,7 +230,7 @@ export function transformApiToFrontend(apiData: SaleApiData): SalesRecord { salesNo: apiData.sale_number, salesDate: apiData.sale_date, vendorId: String(apiData.client_id), - vendorName: apiData.client?.name || '(거래처 미지정)', + vendorName: (apiData.client?.name && apiData.client.name.trim() !== '') ? apiData.client.name : '(거래처 미지정)', salesType: 'other', // API에 없음, 기본값 accountSubject: 'other', // API에 없음, 기본값 items, // 수주 품목에서 가져옴