# Lista de pruebas de la migración

**Para:** quien ejecute la migración (specs/MigracionLaravel10.MD, tarea 0.4).
**Cuándo:** al terminar cada fase, en local, y en el servidor nuevo antes y después del corte (fase 5).
**Con qué:** usuario 14, grupo empresarial 2 (`asercol`). Todas las bases son de producción: las pruebas que escriben se hacen solo con datos del grupo 2, y se anota qué se creó para limpiarlo.

## 1. Prueba automática (cada fase)

```bash
# Línea base, ya tomada el 22/10/2026 en Laravel 8.76.2 / PHP 7.4:
#   storage/migracion/humo_base_L8_php74.json  (no se versiona: puede contener datos)
php artisan migracion:humo 14 --salida=storage/migracion/humo_<fase>.json \
    --comparar=storage/migracion/humo_base_L8_php74.json
```

- Recorre las rutas GET web sin parámetros obligatorios (377 de 512), cada una en su propio proceso, con un máximo de 120 s y 1 GB.
- **Excluye las rutas que escriben** (130), con tres criterios:
  - una lista revisada a mano;
  - la detección de escrituras en el método de la ruta y en los métodos auxiliares que invoca (`save`, `create`, `update`, `delete`, `Mail::`, `Storage::`, `curl_`…);
  - las exportaciones pesadas, salvo que se use `--con-exportaciones`.
- Abre una transacción que se revierte en todas las conexiones, con `max_statement_time` para que ninguna consulta siga corriendo en el servidor.
- `--comparar` lista solo las rutas que cambiaron. **Termina con código 1 si alguna empeoró.**
- **Qué cubre:** que la página carga sin error con datos reales. **Qué no cubre:** filtros, botones, componentes Livewire, exportaciones, cargas de archivos ni escrituras. Eso va en la sección 3.

**Línea base (L8.76.2 / PHP 7.4, 22/10/2026):**

| Resultado | Rutas |
|---|---|
| 200 | 316 |
| 302 | 2 |
| 500 | 57 |
| Probar a mano | 2 (`integracion/data/quimica`, `integracion/data/dec_impo`) |

Los 57 errores 500 ya existen hoy y no los causa la migración. **Cuatro de ellos** (`searchexpores`, `rexdefinicioncampospo`, `rexdefinicioncampospoidx` y `pedido/procesows`) se deben al servidor MariaDB de producción: `Can't create/write to file '/tmp/#sql-temptable…' (Errcode: 30 "Read-only file system")`. Ese mismo problema hace fallar de forma intermitente cualquier consulta que necesite una tabla temporal en disco, y hay que reportarlo a quien administra la base. Las rutas que fallaron en la corrida completa y se repitieron solas quedaron marcadas con `reintento` en el JSON.

## 2. Flujos transversales (manual, cada fase)

| ☐ | Flujo | Cómo probar | Escribe |
|---|---|---|---|
| ☐ | Login por subdominio | Entrar por `asercol.<dominio>` y por `ctc.<dominio>/?dom=asercol`. Comprobar el logo, los colores y el menú del grupo | No |
| ☐ | **Aislamiento entre clientes** | Con un usuario de un solo grupo, recorrer OC, tablero, Torre de Control y reportes, y **verificar que no aparezcan datos de otro cliente** | No |
| ☐ | Menú y perfiles | Usuario de perfil 1 y usuario de perfil cliente: ven opciones distintas | No |
| ☐ | Cerrar sesión y recuperar contraseña | `logout`, `password/reset` (el correo queda en el log en local) | Sí (token) |
| ☐ | API v1 con JWT | `POST api/v1/login`, y luego un `GET` protegido con el token. Comparar la respuesta con la de Laravel 8 | No |
| ☐ | App móvil | `/movil` y KPI móvil con un usuario de pruebas | No |
| ☐ | Correo | Un envío real a un buzón propio, con `MAIL_MAILER=smtp` **solo durante la prueba**: Mailable con adjunto (`AsercolMailing`) y un `->queue()` de Livewire | Sí (correo) |
| ☐ | S3 | Subir y descargar un documento del grupo 2 (Gestión de Documentos, `ArchivosOc`). Revisar la URL firmada | Sí |
| ☐ | Excel | Una exportación de cada tipo: tablero (`exportpo`), Easy Report, KPI Cargill e histórico | No |
| ☐ | Importación Excel | Cargar una OC de prueba al grupo 2 con la plantilla masiva, y luego inactivarla | Sí |
| ☐ | PDF | Formatos de transportador y resumen de declaración de cambio (dompdf) | No |
| ☐ | IMAP | Lectura de bandeja en `POController` (`readmail`) | No |
| ☐ | Gráficos | Torre de Control impo y expo, Dashboard V1 y V2, KPI V2: comparar capturas antes y después (fase 2.7) | No |
| ☐ | ShipsGo | `/shipsgo/ifame` (el typo es real) | No |
| ☐ | Comandos programados | Con el cron **apagado**, correr a mano en local los de solo lectura y revisar su salida. Los `sync:*` escriben: probarlos en el servidor nuevo solo en la ventana del corte | Sí (`sync:*`) |

## 3. Módulos del menú (manual, al menos al cerrar las fases 2, 4, 5, 7, 8 y 9)

Generado de la tabla `menus` (activos, 149 módulos) y de la línea base.
- **Auto ✓:** la página carga en la prueba automática. Falta probar a mano sus filtros y botones.
- **Auto ⚠:** ya falla hoy.
- **Manual:** la prueba automática no la cubre.

### Importaciones

**Operaciones**

| ☐ | Módulo | Ruta | Cobertura (L8) | Nota |
|---|---|---|---|---|
| ☐ | Orden de Compra. | `/impo/order-v2` | Auto ✓ (200) |  |
| ☐ | Orden de Compra. | `/impo/order` | Auto ✓ (200) |  |
| ☐ | Programacion de Arribos | `/impo/arribos` | Auto ✓ (200) |  |
| ☐ | Control Tower | `/rtorrecontrol` | Manual | excluida de la prueba automática: escribe: DB::statement |
| ☐ | Pedidos en Curso DTA | `/impo/pedidos-dta` | Auto ✓ (200) |  |
| ☐ | Orden de Compra | `/rpo` | Auto ✓ (200) |  |
| ☐ | Seguimiento ctc | `/seguimiento/ctc` | Auto ✓ (200) |  |
| ☐ | Pedidos en Curso ZF | `/impo/pedidos-zf` | Auto ✓ (200) |  |
| ☐ | Pedidos en Curso | `/impo/pedidos` | Auto ✓ (200) |  |
| ☐ | Detalle de la OC | `/detalleoc` | Auto ✓ (200) |  |
| ☐ | Pedidos por actualizar | `/rimpo/pedidosporactualizar` | Manual | excluida de la prueba automática: lista de exclusión |
| ☐ | Indicadores KPI | `/rkpi` | Manual | excluida de la prueba automática: escribe: ::create( |
| ☐ | Vencimiento Yara | `/exportvencimiento` | Auto ✓ (200) |  |
| ☐ | Gestion de Documentos | `/rimpodocumentos` | Auto ✓ (200) |  |
| ☐ | Histórico | `/rhistorico` | Auto ✓ (200) |  |
| ☐ | Reporte indicadores | `/reportkpi` | Auto ✓ (200) |  |
| ☐ | Reportes | `/rreport` | Auto ✓ (200) |  |
| ☐ | Importar archivo TRM | `/TrmArchivo` | Auto ✓ (200) |  |
| ☐ | Importar Archivo | `/rimportpo` | Auto ✓ (200) |  |
| ☐ | Importar Legajo | `/imporitemlegajo` | Auto ✓ (200) |  |
| ☐ | Declaración de Cambio | `/calculonumerales` | Auto ✓ (200) |  |
| ☐ | Auditoria ETA | `/auditorias` | Auto ✓ (200) |  |
| ☐ | Reporte Nespresso | `/report-nespresso` | Auto ✓ (200) |  |
| ☐ | Gestion de registro | `/gestion/registro` | Auto ✓ (200) |  |
| ☐ | Gestion de Temporales | `/reporte/temporales` | Auto ✓ (200) |  |
| ☐ | Control Contenedores V2 | `/impo/contenedores` | Auto ✓ (200) |  |
| ☐ | Dashboard. | `/dashboard/impo` | Auto ✓ (200) |  |
| ☐ | Control Contenedores. | `/control-contenedores` | Auto ✓ (200) |  |
| ☐ | Seguimiento Regalias | `/regalias/seguimiento` | Auto ✓ (200) |  |
| ☐ | Seguimiento RIM | `/rim/seguimiento-v2` | Auto ✓ (200) |  |
| ☐ | Informe Contenedores | `/contenedores_ternium` | Auto ✓ (200) |  |
| ☐ | Reportes Especificos. | `/reportes-espe` | Auto ✓ (200) |  |
| ☐ | Revision de OC por WS | `/revision-oc-ws` | Auto ✓ (200) |  |
| ☐ | Archivos planos | `/archivosPlanosImusa` | Auto ✓ (200) |  |
| ☐ | Kardex Cilindros. | `/kardexCilindros` | Auto ✓ (200) |  |
| ☐ | Reporte Global Importacion KPI | `/reporte/globalbrenntag` | Auto ✓ (200) |  |
| ☐ | Seguimiento Supply Record | `/yara/supplyrecord` | Auto ✓ (200) |  |
| ☐ | Abastecedores | `/gruposeb/abastecedor` | Auto ✓ (200) |  |
| ☐ | Reporte Global Importaciones driver | `/global-importaciones` | Auto ✓ (200) |  |
| ☐ | Reporte Global Importacion | `/reporte/globalimportacion` | Auto ✓ (200) |  |
| ☐ | Reporte Transporte SEB | `/impo/reportes/transporte` | Auto ✓ (200) |  |
| ☐ | Auditoria ETA x DO | `/importaciones/auditoria-websimex` | Auto ✓ (200) |  |

**Integracion**

| ☐ | Módulo | Ruta | Cobertura (L8) | Nota |
|---|---|---|---|---|
| ☐ | WS Composicion Quim. | `/integracion/quimica` | Manual | no es una ruta GET del CTC (externa, Livewire o inexistente) |
| ☐ | WS Declaracion de Impo | `/integracion/dec_impo` | Manual | no es una ruta GET del CTC (externa, Livewire o inexistente) |
| ☐ | WS Facturas | `/integracion/facturas` | Manual | no es una ruta GET del CTC (externa, Livewire o inexistente) |
| ☐ | WS PDF Decimpo | `/integracion/pdf_decimpo` | Manual | no es una ruta GET del CTC (externa, Livewire o inexistente) |

**Configuración**

| ☐ | Módulo | Ruta | Cobertura (L8) | Nota |
|---|---|---|---|---|
| ☐ | Importador/Consignatario | `/rcompania` | Auto ✓ (200) |  |
| ☐ | Proveedores del Exterior | `/rsupplier` | Auto ✓ (200) |  |
| ☐ | Puertos | `/rpuertos` | Auto ✓ (200) |  |
| ☐ | Etapas | `/retapas` | Auto ✓ (200) |  |
| ☐ | Empaque | `/rempaques` | Auto ✓ (200) |  |
| ☐ | Material | `/rmaterial` | Auto ✓ (200) |  |
| ☐ | Productos | `/config/product-fr` | Auto ✓ (200) |  |
| ☐ | Moneda | `/rmoneda` | Auto ✓ (200) |  |
| ☐ | Incoterms | `/rincoterms` | Auto ✓ (200) |  |
| ☐ | País | `/rpais` | Auto ✓ (200) |  |
| ☐ | Planta | `/rplanta` | Auto ✓ (200) |  |
| ☐ | Categoria de productos | `/categoriaproducto` | Auto ✓ (200) |  |
| ☐ | REGIMEN CAMBIARIO IMP | `/rdeclaracion` | Auto ✓ (200) |  |
| ☐ | Numeracion Regimen Cambiario | `/rnumeralesregimencambiario` | Auto ✓ (200) |  |
| ☐ | Sucursales | `/rsucursales` | Auto ✓ (200) |  |
| ☐ | Vencimiento Puertos | `/rvencimientopuertos` | Auto ✓ (200) |  |
| ☐ | Terminales | `/rterminales` | Auto ✓ (200) |  |
| ☐ | Documentos Facturas | `/rdocumentosfacturas` | Auto ✓ (200) |  |
| ☐ | Naviera | `rlinea` | Auto ✓ (200) |  |
| ☐ | Agencia de Aduanas | `raduana` | Auto ✓ (200) |  |
| ☐ | Lugar de Devolucion | `rlugardevolucion` | Auto ✓ (200) |  |
| ☐ | Contactos para reportes | `rreportescontactos` | Auto ✓ (200) |  |
| ☐ | Asignar Reportes | `rreportegrupocontacto` | Auto ✓ (200) |  |
| ☐ | Fletes x Transporte | `/costos-fletes` | Auto ⚠ (500) | Illuminate\Database\QueryException: SQLSTATE[42S22]: Column not found: |

**Definiciones**

| ☐ | Módulo | Ruta | Cobertura (L8) | Nota |
|---|---|---|---|---|
| ☐ | Def. de Campo. | `/rdefcampospo` | Auto ✓ (200) |  |
| ☐ | Def. Torre de Control | `/rdefcontroltower` | Auto ✓ (200) |  |
| ☐ | Def. Tablero Orden de Compra | `/rtablero` | Auto ✓ (200) |  |
| ☐ | Def. Mediciones | `/rdefmediciones` | Auto ✓ (200) |  |
| ☐ | Def. de KPI | `/kpi/indicadores` | Auto ✓ (200) |  |
| ☐ | Def. Plantilla | `/rplantilla` | Auto ✓ (200) |  |

**Visibilidad Tiempo Real**

| ☐ | Módulo | Ruta | Cobertura (L8) | Nota |
|---|---|---|---|---|
| ☐ | Poderes | `rpoderes` | Auto ✓ (200) |  |
| ☐ | Reportes Especificos... | `/rreport` | Auto ✓ (200) |  |
| ☐ | Fase 7 SYGA | `syga` | Auto ✓ (200) |  |
| ☐ | Control Contenedores | `/control-contenedores` | Auto ✓ (200) |  |
| ☐ | Gestion Programacion de Arribos | `/visibilidad` | Auto ✓ (200) |  |
| ☐ | Visibilidad Bodega | `/cumplimiento-transporte` | Auto ✓ (200) |  |
| ☐ | Pedidos WSIMEX | `ordenescomprawsimex` | Auto ✓ (200) |  |
| ☐ | Recepción Puertos | `/readmail` | Manual | excluida de la prueba automática: escribe: imap_ |

### CIA

**Clientes**

| ☐ | Módulo | Ruta | Cobertura (L8) | Nota |
|---|---|---|---|---|
| ☐ | Visibilidad Operacion | `/cia/clientes` | Auto ✓ (200) |  |

### Administracion

**Gestion de menus**

| ☐ | Módulo | Ruta | Cobertura (L8) | Nota |
|---|---|---|---|---|
| ☐ | Menus | `/menues` | Auto ✓ (200) |  |

**Gestion documental**

| ☐ | Módulo | Ruta | Cobertura (L8) | Nota |
|---|---|---|---|---|
| ☐ | Archivo digital | `/administracion/documental/archivodigital` | Auto ✓ (200) |  |
| ☐ | Consulta -de Productos. | `/websimexproductos` | Auto ✓ (200) |  |

**Dashboard**

| ☐ | Módulo | Ruta | Cobertura (L8) | Nota |
|---|---|---|---|---|
| ☐ | Estadisticas RIM | `/rim/stats` | Auto ✓ (200) |  |
| ☐ | Productos Creados en Websimex | `/websimexproductos` | Auto ✓ (200) |  |
| ☐ | Estadisticas | `/dashboard/impo` | Auto ✓ (200) |  |
| ☐ | Reportes Especificos.. | `/reportes-espe` | Auto ✓ (200) |  |
| ☐ | Indicadores KPI V2 | `/kpi-graph` | Auto ✓ (200) |  |

### Exportaciones

**Operaciones**

| ☐ | Módulo | Ruta | Cobertura (L8) | Nota |
|---|---|---|---|---|
| ☐ | Consulta fecha Bl | `/consultafechabl` | Auto ✓ (200) |  |
| ☐ | Reporte Global Exportaciones | `/eximusa` | Auto ✓ (200) |  |
| ☐ | Programación de Cargue en Planta | `/cargue/planta` | Auto ✓ (200) |  |
| ☐ | Recobro de bodegaje | `/recobro/bodegaje` | Auto ✓ (200) |  |
| ☐ | Control Tower | `/rtorrecontrol_ex` | Manual | excluida de la prueba automática: escribe: DB::statement |
| ☐ | Orden de Cargue | `/rexpo` | Auto ✓ (200) |  |
| ☐ | Mi Dashboard | `/rexdashboard` | Auto ✓ (200) |  |
| ☐ | Pedidos Clientes | `/interfaz` | Auto ✓ (200) |  |
| ☐ | Informacion Ser. Transporte | `/rexserviciotrans/informes` | Auto ✓ (200) |  |
| ☐ | Reporte ISF | `/orden` | Auto ✓ (200) |  |
| ☐ | Reporte Control Operaciones | `/reporte/operaciones` | Auto ✓ (200) |  |
| ☐ | Lista de Empaque | `/rexpackinglist` | Auto ✓ (200) |  |
| ☐ | Operaciones de Exportacion | `/expo/pedidos` | Auto ✓ (200) |  |
| ☐ | Control de Operaciones | `/expo/control-pedidos` | Auto ✓ (200) |  |
| ☐ | Declaración de Cambio | `/calculonumerales_ex` | Auto ✓ (200) |  |
| ☐ | Histórico | `/rexhistorico` | Auto ✓ (200) |  |
| ☐ | Declaraciones Juramentadas | `/declaraciones` | Auto ✓ (200) |  |
| ☐ | Tarifas e Itinerario | `/ExPoTarifas` | Auto ✓ (200) |  |
| ☐ | Reportes | `/rexreport` | Auto ✓ (200) |  |
| ☐ | Seguimiento OC | `/rexpores` | Auto ✓ (200) |  |
| ☐ | Indicadores KPI | `/rexkpi` | Manual | excluida de la prueba automática: escribe: ::create( |
| ☐ | Reporte Otif | `/exbrinsa` | Auto ✓ (200) |  |
| ☐ | Documentos | `/rexdocumentos` | Auto ✓ (200) |  |
| ☐ | Importar Archivo | `/reximportpo` | Auto ✓ (200) |  |
| ☐ | Importar Tarifas | `/reximportarifa` | Auto ✓ (200) |  |
| ☐ | Importar Orden de Cargue | `/reximportocargue` | Auto ✓ (200) |  |
| ☐ | Sincronizacion Pedidos WebSimex | `/expo/sincronizar-pedidos` | Auto ✓ (200) |  |
| ☐ | Kardex Cilindros | `/kardexCilindros` | Auto ✓ (200) |  |
| ☐ | Seguimiento Arribo en destino | `/shipsgo/ifame` | Auto ✓ (200) |  |
| ☐ | Reporte recobro bodegaje | `/reporte/recobro` | Auto ✓ (200) |  |
| ☐ | Reporte Sistemas Especiales | `/reportes-especiales/sistemas-especiales` | Auto ✓ (200) |  |
| ☐ | Reporte DEX | `/reporte-dex` | Auto ✓ (200) |  |
| ☐ | Reporte Decreto Cert | `/reportes-especiales/sistemas-especiales-decreto` | Auto ✓ (200) |  |

**Configuración**

| ☐ | Módulo | Ruta | Cobertura (L8) | Nota |
|---|---|---|---|---|
| ☐ | Exportador/Remitente | `/ExPoExportador` | Auto ✓ (200) |  |
| ☐ | Consignatario | `/ExPoConsignatario` | Auto ✓ (200) |  |
| ☐ | Clientes | `/ExPoClientes` | Auto ✓ (200) |  |
| ☐ | Puertos | `/ExPoPuerto` | Auto ✓ (200) |  |
| ☐ | Linea | `/ExPoLinea` | Auto ✓ (200) |  |
| ☐ | Etapas | `/ExPoEtapa` | Auto ✓ (200) |  |
| ☐ | Empaque | `/ExPoEmpaques` | Auto ✓ (200) |  |
| ☐ | Material | `/ExPoMaterial` | Auto ✓ (200) |  |
| ☐ | Moneda | `/rexmoneda` | Auto ✓ (200) |  |
| ☐ | Incoterms | `/rexincoterms` | Auto ✓ (200) |  |
| ☐ | País | `/rexpais` | Auto ✓ (200) |  |
| ☐ | Tipo Documentos | `/rextipodocumentos` | Auto ✓ (200) |  |
| ☐ | Folder Documentos | `/rexfolderdocumentos` | Auto ✓ (200) |  |
| ☐ | Unidad de Medida | `/rexunidaddemedida` | Auto ✓ (200) |  |
| ☐ | Documentos visibles por cliente | `/rexdocumentosexcept` | Auto ✓ (200) |  |
| ☐ | Concepto Facturación | `/rexpofacturacionconcepto` | Auto ✓ (200) |  |

**Definiciones**

| ☐ | Módulo | Ruta | Cobertura (L8) | Nota |
|---|---|---|---|---|
| ☐ | Def. de Campo | `/rexdefinicioncampospo` | Auto ⚠ (500) | Illuminate\Database\QueryException: SQLSTATE[HY000]: General error: 1  |
| ☐ | Def. Torre de Control | `/rexdefinicioncontroltower` | Auto ✓ (200) |  |
| ☐ | Def. Tablero Orden de Venta | `/rextablero` | Auto ✓ (200) |  |
| ☐ | Def. Mediciones | `/rexdefinicionmediciones` | Auto ✓ (200) |  |
| ☐ | Def. Reporte | `/rexdefinicionreportes` | Auto ⚠ (500) | Error: Class 'App\Http\Controllers\False' not found |
| ☐ | Def. Plantilla Expo | `/rexdefinicionplantilla` | Auto ✓ (200) |  |
| ☐ | Visualizacion de Campos | `/configuravistas` | Auto ✓ (200) |  |
