From fb046212899a90ed16a0ab62ab848e4738f508d1 Mon Sep 17 00:00:00 2001 From: ijjung365 Date: Tue, 29 Apr 2025 23:03:37 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[#89]=20fix:=20=ED=9A=8C=EC=82=AC=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=86=8C=EA=B0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/companies/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/companies/page.tsx b/src/app/companies/page.tsx index 8d5fe32..93d095f 100644 --- a/src/app/companies/page.tsx +++ b/src/app/companies/page.tsx @@ -65,7 +65,7 @@ export default function CompaniesPage() {
From 79913aadad6842fd8535fc53fa2fc5d5e0ee392a Mon Sep 17 00:00:00 2001 From: ijjung365 Date: Tue, 29 Apr 2025 23:03:57 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[#89]=20feat:=20=EB=8C=80=EC=8B=9C=EB=B3=B4?= =?UTF-8?q?=EB=93=9C=20=EB=B0=94=20=EC=B0=A8=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/dashboard/page.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index cfbe28b..b7dded9 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -459,6 +459,7 @@ export default function DashboardPage() { }, ticks: { color: currentTheme.mode === 'dark' ? 'rgba(255, 255, 255, 0.7)' : 'rgba(0, 0, 0, 0.7)', + callback: (value) => `${Number(value).toLocaleString()} km` }, }, x: { @@ -474,6 +475,11 @@ export default function DashboardPage() { legend: { display: false, }, + tooltip: { + callbacks: { + label: (context) => `${Number(context.raw).toLocaleString()} km` + } + } }, }} /> From 8d1f4fd4150e7e05283c7675bb413febfb0ee50d Mon Sep 17 00:00:00 2001 From: ijjung365 Date: Tue, 29 Apr 2025 23:04:12 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[#89]=20feat:=20=EC=A3=BC=ED=96=89=EC=9D=BC?= =?UTF-8?q?=EC=A7=80=20=EC=A1=B0=ED=9A=8C=ED=95=84=ED=84=B0=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/carLogsStore.ts | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/src/lib/carLogsStore.ts b/src/lib/carLogsStore.ts index 2a81260..cbcec9b 100644 --- a/src/lib/carLogsStore.ts +++ b/src/lib/carLogsStore.ts @@ -97,37 +97,29 @@ export const useCarLogsStore = create((set, get) => ({ const endDate = params?.endDate !== undefined ? params.endDate : currentFilter.endDate; const driveType = params?.driveType !== undefined ? params.driveType : currentFilter.driveType; - const requestBody: Record = {}; + // 쿼리 파라미터 구성 + const queryParams = new URLSearchParams(); + queryParams.append('page', page.toString()); + queryParams.append('size', size.toString()); if (vehicleNumber) { - requestBody.mdn = vehicleNumber; + queryParams.append('mdn', vehicleNumber); } if (startDate) { - const formattedStartDate = new Date(startDate); - formattedStartDate.setHours(0, 0, 0, 0); - - // 한국 시간대로 변환 (UTC+9) - const koreaTimeString = formatToKoreaTime(formattedStartDate, true); - requestBody.startTime = koreaTimeString; + queryParams.append('from', startDate); } if (endDate) { - const formattedEndDate = new Date(endDate); - formattedEndDate.setHours(23, 59, 59, 999); - - // 한국 시간대로 변환 (UTC+9) - const koreaTimeString = formatToKoreaTime(formattedEndDate, false); - requestBody.endTime = koreaTimeString; + queryParams.append('to', endDate); } if (driveType) { - requestBody.driveType = driveType; + queryParams.append('driveType', driveType); } - const data = await fetchApi<{data: any, message: string, statusCode: number}>(`/api/carLogs?page=${page}&size=${size}`, undefined, { - method: 'POST', - body: JSON.stringify(requestBody) + const data = await fetchApi<{data: any, message: string, statusCode: number}>(`/api/carLogs?${queryParams.toString()}`, undefined, { + method: 'GET' }); // 새로운 API 응답 형식 처리 (data 필드에 실제 데이터가 있음) @@ -180,14 +172,14 @@ export const useCarLogsStore = create((set, get) => ({ method: 'GET' }); - // 새로운 API 응답 형식 처리 (data 필드에 실제 데이터가 있음) + // 새로운 API 응답 형식 처리 const data = response.data || response; set({ stats: { totalMileage: data.totalMileage || 0, carLogsCount: data.carLogsCount || "0", - monthlyMileages: data.monthlyMileages || [] + monthlyMileages: Array.isArray(data) ? data : [] }, isLoading: false }); From 65465aad1bbd8983f2ec63a2e84116964b6532e1 Mon Sep 17 00:00:00 2001 From: ijjung365 Date: Tue, 29 Apr 2025 23:38:05 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[#89]=20feat:=20=EB=B6=84=EC=84=9D=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=82=AC=EC=9D=B4=EB=93=9C=EB=B0=94?= =?UTF-8?q?=EC=97=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/layout/Sidebar.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx index bf68925..638060d 100644 --- a/src/components/layout/Sidebar.tsx +++ b/src/components/layout/Sidebar.tsx @@ -16,6 +16,7 @@ import { MapIcon, ChevronLeftIcon, ChevronRightIcon, + ChartBarIcon, } from "@heroicons/react/24/outline"; import { useTheme, themes } from "@/contexts/ThemeContext"; import { useAuthStore } from "@/lib/authStore"; @@ -25,6 +26,7 @@ const navigation = [ { name: "차량", href: "/vehicles", icon: TruckIcon }, { name: "운행일지", href: "/logs", icon: ClipboardDocumentListIcon }, { name: "실시간 관제", href: "/monitoring", icon: MapIcon }, + { name: "분석", href: "/statistics", icon: ChartBarIcon }, { name: "회사", href: "/companies", icon: BuildingOfficeIcon }, ];