fix(web/udt-011): AuditFilters datetime-local usa parseArgentinaDateTimeToUtc (fix BUG-FE-05)

This commit is contained in:
2026-04-18 10:26:56 -03:00
parent 03a02c63d5
commit ef4b02be3b

View File

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