From 0e52e78134ca73fc7d7f1b608e576e28816e9361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=ED=98=81=EC=84=B1?= Date: Thu, 29 Jan 2026 13:54:22 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=9E=85=EA=B3=A0=20=EC=B1=84=EC=9A=B0?= =?UTF-8?q?=EA=B8=B0=20=EC=9E=91=EC=84=B1=EC=9E=90=EB=A5=BC=20=EC=8B=A4?= =?UTF-8?q?=EC=A0=9C=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9E=90=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - useAuth (mock 시스템) 대신 localStorage 'user' 키에서 실제 로그인 사용자명 조회 - 채우기 실행 시점마다 localStorage를 읽어 항상 최신 사용자 반영 --- .../ReceivingManagement/ReceivingDetail.tsx | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/components/material/ReceivingManagement/ReceivingDetail.tsx b/src/components/material/ReceivingManagement/ReceivingDetail.tsx index 8d8b152b..f7cdcdfd 100644 --- a/src/components/material/ReceivingManagement/ReceivingDetail.tsx +++ b/src/components/material/ReceivingManagement/ReceivingDetail.tsx @@ -14,7 +14,7 @@ * 2. 수입검사 정보 - 검사일, 검사결과, 업체 제공 성적서 자료 */ -import { useState, useCallback, useEffect, useRef } from 'react'; +import { useState, useCallback, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { Upload, FileText, Search } from 'lucide-react'; import { ItemSearchModal } from '@/components/quotes/ItemSearchModal'; @@ -47,7 +47,6 @@ import { import { isNextRedirectError } from '@/lib/utils/redirect-error'; import { toast } from 'sonner'; import { useDevFill, generateReceivingData } from '@/components/dev'; -import { useAuth } from '@/contexts/AuthContext'; interface Props { id: string; @@ -82,9 +81,23 @@ function generateLotNo(): string { return `${yy}${mm}${dd}-${seq}`; } +// localStorage에서 로그인 사용자명 가져오기 +function getLoggedInUserName(): string { + if (typeof window === 'undefined') return ''; + try { + const userData = localStorage.getItem('user'); + if (userData) { + const parsed = JSON.parse(userData); + return parsed.name || ''; + } + } catch { + // ignore + } + return ''; +} + export function ReceivingDetail({ id, mode = 'view' }: Props) { const router = useRouter(); - const { currentUser } = useAuth(); const isNewMode = mode === 'new' || id === 'new'; const isEditMode = mode === 'edit'; const isViewMode = mode === 'view' && !isNewMode; @@ -103,12 +116,6 @@ export function ReceivingDetail({ id, mode = 'view' }: Props) { const [isItemSearchOpen, setIsItemSearchOpen] = useState(false); const [isSupplierSearchOpen, setIsSupplierSearchOpen] = useState(false); - // currentUser를 ref로 추적 (useCallback 내에서 항상 최신 값 참조) - const currentUserRef = useRef(currentUser); - useEffect(() => { - currentUserRef.current = currentUser; - }, [currentUser]); - // Dev 모드 폼 자동 채우기 useDevFill( 'receiving', @@ -125,7 +132,7 @@ export function ReceivingDetail({ id, mode = 'view' }: Props) { supplier: data.supplier, receivingQty: data.receivingQty, receivingDate: data.receivingDate, - createdBy: currentUserRef.current?.name || '', + createdBy: getLoggedInUserName(), status: data.status as ReceivingStatus, remark: data.remark, }));