From 28109eb63b0a78a86ddf629bf1fd277fa33cfbc7 Mon Sep 17 00:00:00 2001 From: kjs Date: Tue, 23 Sep 2025 17:11:07 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=97=94=ED=8B=B0=ED=8B=B0=20=EC=BB=AC?= =?UTF-8?q?=EB=9F=BC=20=EC=A1=B0=EC=9D=B8=20=ED=85=8C=EC=9D=B4=EB=B8=94=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=9E=90=EB=8F=99=20=EA=B0=80=EC=A0=B8?= =?UTF-8?q?=EC=98=A4=EA=B8=B0=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - loadEntityDisplayConfig에서 joinTable이 비어있을 때 Entity 조인 API로 조인 테이블 정보 자동 조회 - 조인 테이블 정보를 찾으면 entityDisplayConfig에 자동 업데이트 - 상세한 로깅으로 조인 테이블 정보 조회 과정 추적 가능 --- .../table-list/TableListConfigPanel.tsx | 44 +++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/frontend/lib/registry/components/table-list/TableListConfigPanel.tsx b/frontend/lib/registry/components/table-list/TableListConfigPanel.tsx index e6e0ec02..96deb641 100644 --- a/frontend/lib/registry/components/table-list/TableListConfigPanel.tsx +++ b/frontend/lib/registry/components/table-list/TableListConfigPanel.tsx @@ -372,9 +372,47 @@ export const TableListConfigPanel: React.FC = ({ // 이미 로드된 경우 스킵 if (entityDisplayConfigs[configKey]) return; + // joinTable이 비어있으면 Entity 조인 API로 조인 테이블 정보를 가져와서 설정 + let actualJoinTable = joinTable; + if (!actualJoinTable && sourceTable) { + try { + console.log("🔍 조인 테이블 정보를 Entity 조인 API로 가져오기:", sourceTable); + const entityJoinResult = await entityJoinApi.getEntityJoinColumns(sourceTable); + + // 해당 컬럼에 대한 조인 설정 찾기 + const columnJoinConfig = entityJoinResult.availableColumns?.find( + (col) => col.columnName === column.columnName + ); + + if (columnJoinConfig?.joinTable) { + actualJoinTable = columnJoinConfig.joinTable; + console.log("✅ 조인 테이블 정보 찾음:", actualJoinTable); + + // entityDisplayConfig 업데이트 + const updatedConfig = { + ...column.entityDisplayConfig, + joinTable: actualJoinTable, + }; + + // 컬럼 설정 업데이트 + const updatedColumns = config.columns?.map((col) => + col.columnName === column.columnName + ? { ...col, entityDisplayConfig: updatedConfig } + : col + ); + + if (updatedColumns) { + handleChange("columns", updatedColumns); + } + } + } catch (error) { + console.error("Entity 조인 정보 조회 실패:", error); + } + } + // sourceTable과 joinTable이 모두 있어야 로드 - if (!sourceTable || !joinTable) { - console.log("⚠️ sourceTable 또는 joinTable이 비어있어서 로드 스킵:", { sourceTable, joinTable }); + if (!sourceTable || !actualJoinTable) { + console.log("⚠️ sourceTable 또는 joinTable이 비어있어서 로드 스킵:", { sourceTable, joinTable: actualJoinTable }); return; } @@ -382,7 +420,7 @@ export const TableListConfigPanel: React.FC = ({ // 기본 테이블과 조인 테이블의 컬럼 정보를 병렬로 로드 const [sourceResult, joinResult] = await Promise.all([ entityJoinApi.getReferenceTableColumns(sourceTable), - entityJoinApi.getReferenceTableColumns(joinTable), + entityJoinApi.getReferenceTableColumns(actualJoinTable), ]); const sourceColumns = sourceResult.columns || [];