# SIHO PMS Master - Fase 11

## Alcance

Se reforzó el módulo de clientes para impedir duplicados por diferencias de mayúsculas, acentos, espacios, guiones o formato.

## Identidades únicas

- Nombre + apellido normalizados.
- Número de documento normalizado.
- Correo en minúsculas.
- Placa o matrícula normalizada.
- Celular normalizado para búsquedas, sin establecerlo como único.

El cliente genérico `SIN ESPECIFICAR` está excluido de la unicidad por nombre.

## Capas de protección

1. Normalización al validar el formulario.
2. Validación amigable antes de guardar.
3. Mutators globales en el modelo `Cliente`.
4. Índices únicos en MySQL, que cubren solicitudes simultáneas.
5. Transacciones en altas y modificaciones.

## Fotografías

La foto ahora es opcional. Se valida que sea una imagen Base64 admitida, se limita a 5 MB y se genera un nombre aleatorio. Al reemplazarla, la foto anterior se elimina después de guardar correctamente.

## Migración de instalaciones existentes

El parche contiene consultas de auditoría. No deben crearse los índices únicos hasta resolver los duplicados que esas consultas detecten.
