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() {
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` + } + } }, }} /> 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 }, ]; 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 });