import { z } from 'zod'; export const PDV_REQUIRED_HEADERS = [ 'ID', 'Nombre del PDV', 'Segmentación', 'Latitud', 'Longitud', 'Visitas semanales', 'Duración visita(horas)', 'Prioridad', ] as const; export const PDV_NORMALIZED_REQUIRED = [ 'id', 'nombre_del_pdv', 'segmentacion', 'latitud', 'longitud', 'visitas_semanales', 'duracion_visitahoras', 'prioridad', ] as const; export const SEGMENTACIONES = ['AA', 'A', 'B', 'C', 'D'] as const; export const pdvRowSchema = z.object({ id: z.union([z.string(), z.number()]).refine(v => String(v).trim() !== '', { message: 'ID requerido' }), nombre_del_pdv: z.string().min(1, 'Nombre del PDV requerido'), segmentacion: z.string().refine(v => (SEGMENTACIONES as readonly string[]).includes(v.toUpperCase()), { message: `Segmentación debe ser ${SEGMENTACIONES.join(', ')}`, }), 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'), visitas_semanales: z.number().int('Visitas semanales debe ser entero').min(1, 'Visitas semanales mínimo 1').max(7, 'Visitas semanales máximo 7'), duracion_visitahoras: z.number().min(0.01, 'Duración visita debe ser >0').max(24, 'Duración visita máximo 24'), prioridad: z.number().int('Prioridad debe ser entero').min(1, 'Prioridad mínimo 1').max(5, 'Prioridad máximo 5'), }); export type PdvRow = z.infer; export const PDV_MAX_ROWS = 2000;