From e42675616ba790e6a9e05b9fb3619c8bef6a8ede Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 31 Oct 2025 17:21:47 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=A0=9C=EC=96=B4=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=A0=80=EC=9E=A5=20=EB=B0=8F=20=EC=8B=A4=ED=96=89=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - frontend: screen.ts에 saveScreenLayout 함수 추가 (ScreenDesigner_new.tsx가 호출하던 누락된 함수) - frontend: ScreenDesigner_new.tsx 저장 시 디버깅 로그 추가 - backend: screenManagementService.ts에 dataflowConfig 저장 확인 로그 추가 문제 원인: - ScreenDesigner_new.tsx가 호출하던 screenApi.saveScreenLayout 함수가 정의되지 않음 - 이로 인해 레이아웃 저장이 실패했을 가능성 해결: - saveScreenLayout 함수를 추가하여 정상적인 레이아웃 저장 가능 - 디버깅 로그를 통해 실제로 selectedDiagramId가 저장되는지 확인 가능 --- backend-node/src/services/screenManagementService.ts | 5 +++++ frontend/components/screen/ScreenDesigner_new.tsx | 12 ++++++++++++ frontend/lib/api/screen.ts | 6 ++++++ 3 files changed, 23 insertions(+) diff --git a/backend-node/src/services/screenManagementService.ts b/backend-node/src/services/screenManagementService.ts index 198c850b..f3c3d133 100644 --- a/backend-node/src/services/screenManagementService.ts +++ b/backend-node/src/services/screenManagementService.ts @@ -1278,6 +1278,11 @@ export class ScreenManagementService { }, }; + // 🔍 디버깅: webTypeConfig.dataflowConfig 확인 + if ((component as any).webTypeConfig?.dataflowConfig) { + console.log(`🔍 컴포넌트 ${component.id}의 dataflowConfig:`, JSON.stringify((component as any).webTypeConfig.dataflowConfig, null, 2)); + } + await query( `INSERT INTO screen_layouts ( screen_id, component_type, component_id, parent_id, diff --git a/frontend/components/screen/ScreenDesigner_new.tsx b/frontend/components/screen/ScreenDesigner_new.tsx index 16a50f3f..46c3ffdf 100644 --- a/frontend/components/screen/ScreenDesigner_new.tsx +++ b/frontend/components/screen/ScreenDesigner_new.tsx @@ -263,6 +263,18 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD try { setIsSaving(true); + + // 🔍 디버깅: 저장할 레이아웃 데이터 확인 + console.log("🔍 레이아웃 저장 요청:", { + screenId: selectedScreen.screenId, + componentsCount: layout.components.length, + components: layout.components.map(c => ({ + id: c.id, + type: c.type, + webTypeConfig: (c as any).webTypeConfig, + })), + }); + const response = await screenApi.saveScreenLayout(selectedScreen.screenId, layout); if (response.success) { toast.success("화면이 저장되었습니다."); diff --git a/frontend/lib/api/screen.ts b/frontend/lib/api/screen.ts index b8b77f85..695e5a51 100644 --- a/frontend/lib/api/screen.ts +++ b/frontend/lib/api/screen.ts @@ -151,6 +151,12 @@ export const screenApi = { await apiClient.post(`/screen-management/screens/${screenId}/layout`, layoutData); }, + // 화면 레이아웃 저장 (ScreenDesigner_new.tsx용) + saveScreenLayout: async (screenId: number, layoutData: LayoutData): Promise> => { + const response = await apiClient.post(`/screen-management/screens/${screenId}/layout`, layoutData); + return response.data; + }, + // 화면 레이아웃 조회 getLayout: async (screenId: number): Promise => { const response = await apiClient.get(`/screen-management/screens/${screenId}/layout`);