From 0bba1836fb7cef0663c229efbe82fd8495f37b78 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Wed, 13 May 2026 12:15:51 +0900 Subject: [PATCH] =?UTF-8?q?fix(batch):=20=EB=B9=88=20=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EC=9B=90=EC=9D=B8=EC=9D=B4=EB=8D=98=20openTab=20=ED=82=A4?= =?UTF-8?q?=EB=AA=85=20=EC=A0=95=EC=A0=95=20+=20=EB=B3=B8=EB=AC=B8=20?= =?UTF-8?q?=ED=92=80=ED=8F=AD=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 문제 1: 배치 수정/생성 탭이 빈 화면 - Tab type 정의는 admin_url (snake_case) 인데 호출자가 adminUrl (camelCase) 로 전달 → TabPageRenderer 매칭 실패 → null 렌더 → 빈 화면 - 콘솔 경고: "[TabPageRenderer] 렌더링 불가 — 매칭 조건 없음" (TabContent.tsx:268) - 11곳 (4파일) 의 adminUrl → admin_url 정정 문제 2: 리스트/편집 본문이 좁은 가운데 컬럼에 박혀있음 - batchmngList/page.tsx: max-w-[720px] → w-full - batchmngList/edit/[id]/page.tsx: max-w-[640px] → w-full 해당 파일: - batchmngList/page.tsx - batchmngList/edit/[id]/page.tsx - batchmngList/create/page.tsx - batch-management-new/page.tsx Co-Authored-By: Claude Opus 4.7 (1M context) --- .../admin/automaticMng/batchmngList/create/page.tsx | 2 +- .../admin/automaticMng/batchmngList/edit/[id]/page.tsx | 8 ++++---- .../(main)/admin/automaticMng/batchmngList/page.tsx | 10 +++++----- .../app/(main)/admin/batch-management-new/page.tsx | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/frontend/app/(main)/admin/automaticMng/batchmngList/create/page.tsx b/frontend/app/(main)/admin/automaticMng/batchmngList/create/page.tsx index e8b90461..48ae8a79 100644 --- a/frontend/app/(main)/admin/automaticMng/batchmngList/create/page.tsx +++ b/frontend/app/(main)/admin/automaticMng/batchmngList/create/page.tsx @@ -213,7 +213,7 @@ export default function BatchCreatePage() { toast.success("매핑을 삭제했어요"); }; - const goBack = () => openTab({ type: "admin", title: "배치 관리", adminUrl: "/admin/automaticMng/batchmngList" }); + const goBack = () => openTab({ type: "admin", title: "배치 관리", admin_url: "/admin/automaticMng/batchmngList" }); const saveBatchConfig = async () => { if (!batchName.trim()) { toast.error("배치 이름을 입력해주세요"); return; } diff --git a/frontend/app/(main)/admin/automaticMng/batchmngList/edit/[id]/page.tsx b/frontend/app/(main)/admin/automaticMng/batchmngList/edit/[id]/page.tsx index 60e71eca..d521da90 100644 --- a/frontend/app/(main)/admin/automaticMng/batchmngList/edit/[id]/page.tsx +++ b/frontend/app/(main)/admin/automaticMng/batchmngList/edit/[id]/page.tsx @@ -676,7 +676,7 @@ export default function BatchEditPage() { nodeFlowContext: parsedContext, }); toast.success("배치 설정이 저장되었습니다!"); - openTab({ type: "admin", title: "배치 관리", adminUrl: "/admin/automaticMng/batchmngList" }); + openTab({ type: "admin", title: "배치 관리", admin_url: "/admin/automaticMng/batchmngList" }); } catch (error) { console.error("배치 저장 실패:", error); toast.error("배치 저장에 실패했습니다."); @@ -759,7 +759,7 @@ export default function BatchEditPage() { }); toast.success("배치 설정이 성공적으로 수정되었습니다."); - openTab({ type: "admin", title: "배치 관리", adminUrl: "/admin/automaticMng/batchmngList" }); + openTab({ type: "admin", title: "배치 관리", admin_url: "/admin/automaticMng/batchmngList" }); } catch (error) { console.error("배치 설정 수정 실패:", error); @@ -769,7 +769,7 @@ export default function BatchEditPage() { } }; - const goBack = () => openTab({ type: "admin", title: "배치 관리", adminUrl: "/admin/automaticMng/batchmngList" }); + const goBack = () => openTab({ type: "admin", title: "배치 관리", admin_url: "/admin/automaticMng/batchmngList" }); const selectedFlow = nodeFlows.find(f => f.flow_id === selectedFlowId); if (loading && !batchConfig) { @@ -784,7 +784,7 @@ export default function BatchEditPage() { } return ( -
+
{/* 헤더 */}