diff --git a/backend-node/src/services/entityJoinService.ts b/backend-node/src/services/entityJoinService.ts index df2823c8..d2db8c9e 100644 --- a/backend-node/src/services/entityJoinService.ts +++ b/backend-node/src/services/entityJoinService.ts @@ -49,6 +49,39 @@ export class EntityJoinService { const joinConfigs: EntityJoinConfig[] = []; + // ๐ŸŽฏ writer ์ปฌ๋Ÿผ ์ž๋™ ๊ฐ์ง€ ๋ฐ ์กฐ์ธ ์„ค์ • ์ถ”๊ฐ€ + const tableColumns = await query<{ column_name: string }>( + `SELECT column_name + FROM information_schema.columns + WHERE table_name = $1 + AND table_schema = 'public' + AND column_name = 'writer'`, + [tableName] + ); + + if (tableColumns.length > 0) { + logger.info(`โœ… writer ์ปฌ๋Ÿผ ๋ฐœ๊ฒฌ: ${tableName}.writer -> user_info.user_id`); + + const writerJoinConfig: EntityJoinConfig = { + sourceTable: tableName, + sourceColumn: "writer", + referenceTable: "user_info", + referenceColumn: "user_id", + displayColumns: ["user_name"], + displayColumn: "user_name", + aliasColumn: "writer_name", + separator: " - ", + }; + + // ์กฐ์ธ ์„ค์ • ์œ ํšจ์„ฑ ๊ฒ€์ฆ + if (await this.validateJoinConfig(writerJoinConfig)) { + joinConfigs.push(writerJoinConfig); + logger.info(`โœ… writer ์ปฌ๋Ÿผ ์กฐ์ธ ์„ค์ • ์ถ”๊ฐ€๋จ: writer_name`); + } else { + logger.warn(`โŒ writer ์ปฌ๋Ÿผ ์กฐ์ธ ์„ค์ • ๊ฒ€์ฆ ์‹คํŒจ`); + } + } + for (const column of entityColumns) { logger.info(`๐Ÿ” Entity ์ปฌ๋Ÿผ ์ƒ์„ธ ์ •๋ณด:`, { column_name: column.column_name, diff --git a/frontend/components/screen/ScreenDesigner.tsx b/frontend/components/screen/ScreenDesigner.tsx index 0f3cc9b4..54f26a8d 100644 --- a/frontend/components/screen/ScreenDesigner.tsx +++ b/frontend/components/screen/ScreenDesigner.tsx @@ -634,15 +634,9 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD } } - console.log("๐Ÿ” ์ตœ์ข… newComp:", { id: newComp.id, size: newComp.size, path }); return newComp; }); - console.log( - "๐Ÿ” updatedComponents:", - updatedComponents.map((c) => ({ id: c.id, size: c.size })), - ); - // ๐Ÿ”ฅ ์ƒˆ๋กœ์šด layout ์ƒ์„ฑ const newLayout = { ...prevLayout, components: updatedComponents }; diff --git a/frontend/lib/registry/components/table-list/TableListComponent.tsx b/frontend/lib/registry/components/table-list/TableListComponent.tsx index 30756d09..f6a99536 100644 --- a/frontend/lib/registry/components/table-list/TableListComponent.tsx +++ b/frontend/lib/registry/components/table-list/TableListComponent.tsx @@ -1062,6 +1062,11 @@ export const TableListComponent: React.FC = ({ (value: any, column: ColumnConfig, rowData?: Record) => { if (value === null || value === undefined) return "-"; + // ๐ŸŽฏ writer ์ปฌ๋Ÿผ ์ž๋™ ๋ณ€ํ™˜: user_id -> user_name + if (column.columnName === "writer" && rowData && rowData.writer_name) { + return rowData.writer_name; + } + // ๐ŸŽฏ ์—”ํ‹ฐํ‹ฐ ์ปฌ๋Ÿผ ํ‘œ์‹œ ์„ค์ •์ด ์žˆ๋Š” ๊ฒฝ์šฐ if (column.entityDisplayConfig && rowData) { // displayColumns ๋˜๋Š” selectedColumns ๋‘˜ ๋‹ค ์ฒดํฌ