# Matriz de Paridad Legacy vs Tickets-Etiquetas v2

## Estado general

- `legacy`: `tickets.php`, `tickets_etiquetas.php`, `ticketsxetiqueta.php`, `modalTicketsEtiquetas.*`
- `v2`: `ticket/main/Tickets-etiquetas.php`, `ticket/js/Tickets-etiquetas.js`, `ticket/controlador/Tickets-etiquetas.php`, `ticket/clase/Tickets-etiquetas.php`

## Matriz de funcionalidades

| Funcionalidad | Legacy | V2 | Estado |
|---|---|---|---|
| CRUD etiquetas (crear/editar/activar/desactivar) | Si | Si | Listo |
| Unicidad tipo+nombre | Parcial | Si (backend) | Listo |
| Listado de tickets con etiquetas | Si | Si | Listo |
| Asignar / quitar etiqueta a ticket | Si (CSV) | Si (relacional) | Listo |
| Filtros por texto, tipo, estado, cliente, etiquetas | Si | Si | Listo |
| Filtro tickets madre | Si | Si (JSON extra) | Listo |
| Métricas operativas básicas | Si | Si | Listo |
| Reporte tickets por etiqueta | Si | Si | Listo |
| Exportación reporte | Si | Si (CSV) | Listo |
| Auditoría de cambios | Baja | Alta (`eventos`) | Listo |
| Sincronización temporal con CSV legacy | N/A | Si (`sync_legacy_csv`) | Listo |

## Criterios de aceptación por flujo

1. Crear etiqueta:
   - Rechaza duplicados `tipo+nombre`.
   - Persiste `estado`, `prioridad`, `color`, `descripcion`.
2. Asignar etiqueta:
   - Solo acepta ticket y etiqueta existentes.
   - Evita duplicidad por relación.
3. Quitar etiqueta:
   - Marca `estado=0` en relación.
   - Registra evento de auditoría.
4. Filtros:
   - Deben afectar listado y reporte de forma consistente.
5. Reportes:
   - Deben entregar conteo, fecha más antigua y fecha más reciente por etiqueta.
6. Coexistencia:
   - `sync_legacy_csv` no debe eliminar datos ni generar IDs inválidos.

## Riesgos pendientes

- Si faltan FKs activas en BDD, la integridad depende del backend.
- Si aún hay escrituras directas en legacy, debe ejecutarse reconciliación periódica.
