From 0b5b14062533699c6c79074dfbc0aa244bb0de5d Mon Sep 17 00:00:00 2001 From: leeheejin Date: Wed, 15 Oct 2025 17:02:06 +0900 Subject: [PATCH] =?UTF-8?q?=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C=20?= =?UTF-8?q?=EC=9C=84=EC=A0=AF=20=EB=A0=8C=EB=8D=94=EB=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20=EC=99=B8=EB=B6=80=20API=20=ED=82=A4=20?= =?UTF-8?q?=ED=86=B5=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - DashboardViewer에 ListSummaryWidget 연결 - list 위젯이 실제 DB 데이터 표시하도록 수정 - ITS_API_KEY (국토교통부 교통사고 API) 추가 - KMA_API_KEY (기상청 특보 API) 재적용 - dashboard.ts API URL 수정 (/api로 통일) --- backend-node/src/services/DashboardService.ts | 7 +++++++ docker/dev/docker-compose.backend.mac.yml | 2 +- frontend/components/dashboard/DashboardViewer.tsx | 9 ++++++++- frontend/lib/api/dashboard.ts | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/backend-node/src/services/DashboardService.ts b/backend-node/src/services/DashboardService.ts index fa0ce775..6b709235 100644 --- a/backend-node/src/services/DashboardService.ts +++ b/backend-node/src/services/DashboardService.ts @@ -300,6 +300,11 @@ export class DashboardService { const elementsResult = await PostgreSQLService.query(elementsQuery, [dashboardId]); // 3. 요소 데이터 변환 + console.log('📊 대시보드 요소 개수:', elementsResult.rows.length); + if (elementsResult.rows.length > 0) { + console.log('📊 첫 번째 요소 raw data:', elementsResult.rows[0]); + } + const elements: DashboardElement[] = elementsResult.rows.map((row: any) => ({ id: row.id, type: row.element_type, @@ -318,6 +323,8 @@ export class DashboardService { chartConfig: JSON.parse(row.chart_config || '{}') })); + console.log('📊 변환된 첫 번째 요소:', elements[0]); + return { id: dashboard.id, title: dashboard.title, diff --git a/docker/dev/docker-compose.backend.mac.yml b/docker/dev/docker-compose.backend.mac.yml index b9675147..4d862d9e 100644 --- a/docker/dev/docker-compose.backend.mac.yml +++ b/docker/dev/docker-compose.backend.mac.yml @@ -20,7 +20,7 @@ services: - LOG_LEVEL=debug - ENCRYPTION_KEY=ilshin-plm-mail-encryption-key-32characters-2024-secure - KMA_API_KEY=ogdXr2e9T4iHV69nvV-IwA - - ITS_API_KEY=${ITS_API_KEY:-} + - ITS_API_KEY=d6b9befec3114d648284674b8fddcc32 - EXPRESSWAY_API_KEY=${EXPRESSWAY_API_KEY:-} volumes: - ../../backend-node:/app # 개발 모드: 코드 변경 시 자동 반영 diff --git a/frontend/components/dashboard/DashboardViewer.tsx b/frontend/components/dashboard/DashboardViewer.tsx index b8517d73..e94d6fe5 100644 --- a/frontend/components/dashboard/DashboardViewer.tsx +++ b/frontend/components/dashboard/DashboardViewer.tsx @@ -3,6 +3,10 @@ import React, { useState, useEffect, useCallback } from "react"; import { DashboardElement, QueryResult } from "@/components/admin/dashboard/types"; import { ChartRenderer } from "@/components/admin/dashboard/charts/ChartRenderer"; +import dynamic from "next/dynamic"; + +// 위젯 동적 import +const ListSummaryWidget = dynamic(() => import("./widgets/ListSummaryWidget"), { ssr: false }); interface DashboardViewerProps { elements: DashboardElement[]; @@ -198,8 +202,11 @@ function ViewerElement({ element, data, isLoading, onRefresh }: ViewerElementPro
{element.type === "chart" ? ( + ) : element.subtype === "list" ? ( + // 리스트 위젯 + ) : ( - // 위젯 렌더링 + // 기타 위젯 렌더링
diff --git a/frontend/lib/api/dashboard.ts b/frontend/lib/api/dashboard.ts index f6365854..d5a53136 100644 --- a/frontend/lib/api/dashboard.ts +++ b/frontend/lib/api/dashboard.ts @@ -5,7 +5,7 @@ import { DashboardElement } from "@/components/admin/dashboard/types"; // API 기본 설정 -const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL || "http://localhost:3001/api"; +const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL || "/api"; // 토큰 가져오기 (실제 인증 시스템에 맞게 수정) function getAuthToken(): string | null {