From b7f7aad2fd0c52e5a6e863605bfe54362488dc20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=ED=98=81=EC=84=B1?= Date: Thu, 12 Mar 2026 01:32:43 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[=EC=83=9D=EC=82=B0/=EC=B6=9C=ED=95=98]?= =?UTF-8?q?=20=EC=9E=91=EC=97=85=EC=9E=90=20=ED=99=94=EB=A9=B4=20step=20?= =?UTF-8?q?=EC=84=9C=EB=B2=84=20=ED=86=A0=EA=B8=80=20+=20=EC=B6=9C?= =?UTF-8?q?=ED=95=98=20=EC=88=98=EC=A3=BC=20=EC=A1=B0=EC=9D=B8=20=EC=97=B0?= =?UTF-8?q?=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - WorkerScreen: stepProgressId 있는 모든 step을 서버 토글 API 호출하도록 변경 (기존: click_complete 타입만 서버 호출, 나머지 로컬 토글) - ShipmentManagement actions: order_info에서 receiver/receiver_contact 우선 참조 - OrderInfoApiData 타입 확장 (receiver, receiver_contact, delivery_address_detail, delivery_method) - 목록/상세 모두 수주 조인 데이터 우선, 출하 직접 필드 fallback --- .../outbound/ShipmentManagement/actions.ts | 12 ++++++++---- src/components/production/WorkerScreen/index.tsx | 6 +++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/components/outbound/ShipmentManagement/actions.ts b/src/components/outbound/ShipmentManagement/actions.ts index 75db8eec..9536b316 100644 --- a/src/components/outbound/ShipmentManagement/actions.ts +++ b/src/components/outbound/ShipmentManagement/actions.ts @@ -49,8 +49,12 @@ interface OrderInfoApiData { customer_name?: string; site_name?: string; delivery_address?: string; + delivery_address_detail?: string; contact?: string; + receiver?: string; + receiver_contact?: string; delivery_date?: string; + delivery_method?: string; writer_id?: number; writer_name?: string; } @@ -160,8 +164,8 @@ function transformApiToListItem(data: ShipmentApiData): ShipmentItem { depositConfirmed: data.deposit_confirmed, invoiceIssued: data.invoice_issued, deliveryTime: data.vehicle_dispatches?.[0]?.arrival_datetime || data.expected_arrival, - // 수신/작성자/출고일 매핑 - receiver: data.receiver || '', + // 수신/작성자/출고일 매핑 (order_info 우선 → 출하 직접 필드 fallback) + receiver: data.order_info?.receiver || data.receiver || '', receiverAddress: data.order_info?.delivery_address || data.delivery_address || '', receiverCompany: data.order_info?.customer_name || data.customer_name || '', writer: data.order_info?.writer_name || data.creator?.name || '', @@ -207,8 +211,8 @@ function transformApiToDetail(data: ShipmentApiData): ShipmentDetail { customerName: data.order_info?.customer_name || data.customer_name || '', siteName: data.order_info?.site_name || data.site_name || '', deliveryAddress: data.order_info?.delivery_address || data.delivery_address || '', - receiver: data.receiver, - receiverContact: data.order_info?.contact || data.receiver_contact, + receiver: data.order_info?.receiver || data.receiver, + receiverContact: data.order_info?.receiver_contact || data.order_info?.contact || data.receiver_contact, zipCode: (data as unknown as Record).zip_code as string | undefined, address: (data as unknown as Record).address as string | undefined, addressDetail: (data as unknown as Record).address_detail as string | undefined, diff --git a/src/components/production/WorkerScreen/index.tsx b/src/components/production/WorkerScreen/index.tsx index 90a9084c..66dfbde7 100644 --- a/src/components/production/WorkerScreen/index.tsx +++ b/src/components/production/WorkerScreen/index.tsx @@ -864,8 +864,8 @@ export default function WorkerScreen() { } else if (step.needsInspection || step.isInspection) { // 검사 단계 (processListCache 설정 또는 하드코딩 폴백) → 중간검사 모달 열기 handleInspectionClick(itemId, step.name); - } else if (step.completionType === 'click_complete' && step.stepProgressId) { - // 클릭 시 완료 → 서버 토글 API 호출 + } else if (step.stepProgressId) { + // stepProgressId가 있으면 서버 토글 API 호출 (모든 일반 step 포함) const workItem = workItems.find((item) => item.id === itemId); const orderId = workItem?.workOrderId; if (orderId) { @@ -887,7 +887,7 @@ export default function WorkerScreen() { } } } else { - // 기타 → 완료/미완료 토글 (로컬) - enrichStep stepKey 형식 일치 + // stepProgressId 없는 경우 → 로컬 토글 (폴백) const stepKey = `${itemId.replace('-node-', '-')}-${step.name}`; setStepCompletionMap((prev) => ({ ...prev,