diff --git a/backend/src/core/config/database.ts b/backend/src/core/config/database.ts index 899cd85..6d8ecf1 100644 --- a/backend/src/core/config/database.ts +++ b/backend/src/core/config/database.ts @@ -2,10 +2,15 @@ * @ai-summary PostgreSQL connection pool configuration * @ai-context Shared pool for all feature repositories */ -import { Pool } from 'pg'; +import { Pool, types } from 'pg'; import { logger } from '../logging/logger'; import { appConfig } from './config-loader'; +// Override DATE type parser to return plain YYYY-MM-DD strings instead of Date objects. +// Default pg behavior creates Date objects at local midnight, which shift dates when +// serialized to JSON via toISOString() (UTC conversion) for clients in other timezones. +types.setTypeParser(1082, (val: string) => val); + export const pool = new Pool({ connectionString: appConfig.getDatabaseUrl(), max: 10, diff --git a/frontend/src/features/maintenance/components/MaintenanceRecordEditDialog.tsx b/frontend/src/features/maintenance/components/MaintenanceRecordEditDialog.tsx index 2fc82aa..449438d 100644 --- a/frontend/src/features/maintenance/components/MaintenanceRecordEditDialog.tsx +++ b/frontend/src/features/maintenance/components/MaintenanceRecordEditDialog.tsx @@ -335,7 +335,7 @@ export const MaintenanceRecordEditDialog: React.FC handleInputChange('date', newValue?.format('YYYY-MM-DD') || '') } diff --git a/frontend/src/features/maintenance/components/MaintenanceScheduleEditDialog.tsx b/frontend/src/features/maintenance/components/MaintenanceScheduleEditDialog.tsx index 3075754..38fca9a 100644 --- a/frontend/src/features/maintenance/components/MaintenanceScheduleEditDialog.tsx +++ b/frontend/src/features/maintenance/components/MaintenanceScheduleEditDialog.tsx @@ -335,7 +335,7 @@ export const MaintenanceScheduleEditDialog: React.FC handleInputChange('fixedDueDate', newValue?.format('YYYY-MM-DD') || undefined) }