# Cutover y Rollback Tickets-Etiquetas v2

## Objetivo

Adoptar `DEMO_TO_*` como fuente de verdad para etiquetas de tickets, manteniendo continuidad operacional durante coexistencia con legacy.

## Estrategia

1. **Preparación**
   - Ejecutar DDL y migración (`ticket/migracion/*.sql`).
   - Verificar conteos iniciales (`catalogo`, `rel`, `eventos`).
2. **Coexistencia controlada**
   - Escritura principal en v2 (`ticket-etiquetas-v2`).
   - Sincronización temporal a CSV legacy mediante `acc=sync_legacy_csv`.
3. **Validación operativa**
   - QA funcional con usuarios de soporte.
   - Monitoreo de errores en consola/red + auditoría de eventos.
4. **Cutover**
   - Declarar v2 como canal oficial.
   - Mantener legacy en modo lectura (cuando sea posible).
5. **Deprecación**
   - Retirar gradualmente dependencias a `tickets.ticket_etiquetas` CSV.

## Checklist pre-cutover

- [ ] Tablas `DEMO_TO_*` creadas en la BDD de tickets.
- [ ] Migración inicial ejecutada sin errores.
- [ ] Reporte por etiqueta v2 validado contra legacy.
- [ ] Filtros críticos validados (`tipo`, `estado`, `cliente`, `etiqueta`, `tickets_madre`).
- [ ] Sincronización legacy (`sync_legacy_csv`) probada.

## Plan de rollback

1. Deshabilitar navegación `m=ticket-etiquetas-v2` en menú (temporal).
2. Volver a flujo legacy (`m=et`, `m=help-txe`).
3. Mantener backup de `DEMO_TO_*` para análisis post-mortem.
4. Revisar eventos `DEMO_TO_tickets_eventos` para reconstruir cambios recientes.

## Observabilidad mínima sugerida

- `request_id` en todas las respuestas JSON del controlador.
- Log de errores con `code`, `acc`, `request_id`.
- Métrica manual por despliegue: tasa de error y tiempo de respuesta de:
  - `listar_tickets_completo`
  - `asignar_etiqueta_ticket`
  - `reporte_tickets_por_etiqueta`
