import { z } from 'zod'; export const USUARIO_REQUIRED_HEADERS = [ 'ID', 'Nombre del empleado', 'Latitud', 'Longitud', 'Horas por día usuario', 'Horas por semana usuario', ] as const; export const USUARIO_NORMALIZED_REQUIRED = [ 'id', 'nombre_del_empleado', 'latitud', 'longitud', 'horas_por_dia_usuario', 'horas_por_semana_usuario', ] as const; export const usuarioRowSchema = z.object({ id: z.union([z.string(), z.number()]).refine(v => String(v).trim() !== '', { message: 'ID requerido' }), nombre_del_empleado: z.string().min(1, 'Nombre del empleado requerido'), latitud: z.number().min(-90, 'Latitud mínima -90').max(90, 'Latitud máxima 90'), longitud: z.number().min(-180, 'Longitud mínima -180').max(180, 'Longitud máxima 180'), horas_por_dia_usuario: z.number().min(0.5, 'Horas por día mínimo 0.5').max(24, 'Horas por día máximo 24'), horas_por_semana_usuario: z.number().min(1, 'Horas por semana mínimo 1').max(168, 'Horas por semana máximo 168'), }).superRefine((data, ctx) => { if (data.horas_por_semana_usuario > data.horas_por_dia_usuario * 7) { ctx.addIssue({ code: z.ZodIssueCode.custom, message: 'Horas por semana no puede exceder 7 × horas por día', path: ['horas_por_semana_usuario'], }); } }); export type UsuarioRow = z.infer; export const USUARIO_MAX_ROWS = 50;