diff --git a/src/web/src/pages/admin/audit/AuditFilters.tsx b/src/web/src/pages/admin/audit/AuditFilters.tsx index f55cc9f..79e2f56 100644 --- a/src/web/src/pages/admin/audit/AuditFilters.tsx +++ b/src/web/src/pages/admin/audit/AuditFilters.tsx @@ -2,6 +2,7 @@ import { useState, type FormEvent } from 'react' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Button } from '@/components/ui/button' +import { parseArgentinaDateTimeToUtc } from '@/lib/dateFormat' /** Filtros crudos del form (todos strings para binding directo del input). */ export interface AuditFiltersValue { @@ -132,8 +133,8 @@ export function AuditFilters({ * que espera el cliente de API. * * - `actor` vacío o NaN → omitido - * - `from`/`to` vienen del `datetime-local` (local time, sin timezone). - * Los convertimos a ISO UTC vía `new Date(...).toISOString()`. + * - `from`/`to` vienen del `datetime-local` (hora ART implícita, sin timezone). + * Los convertimos a ISO UTC vía `parseArgentinaDateTimeToUtc()` (fix BUG-FE-05). * - Strings vacíos → omitidos. */ export function toApiFilter( @@ -148,12 +149,11 @@ export function toApiFilter( if (value.targetType.trim() !== '') out.targetType = value.targetType.trim() if (value.targetId.trim() !== '') out.targetId = value.targetId.trim() if (value.from.trim() !== '') { - const d = new Date(value.from) - if (!Number.isNaN(d.getTime())) out.from = d.toISOString() + // BUG-FE-05: interpretar el string como ART (-03:00), no como local del browser + try { out.from = parseArgentinaDateTimeToUtc(value.from) } catch { /* invalid input */ } } if (value.to.trim() !== '') { - const d = new Date(value.to) - if (!Number.isNaN(d.getTime())) out.to = d.toISOString() + try { out.to = parseArgentinaDateTimeToUtc(value.to) } catch { /* invalid input */ } } return out