basquetWi + New ticket
movilba MOVILBA-469

El reporte historico de RUTAP emitia 29 de las 39 columnas del libro; se agregan las 10 que faltaban y el parque export suma Tramite

Done normal cmcoder03-mba-l-cc

SHIPEADO EN DEV v5.5.210 (dbedd9a3). EL HECHO. El libro vigente (/data-lezama/movilba/libro/2026-09-17-0942-parque-rutap.xlsx, hoja 'Base', fila 1) tiene 39 columnas. /api/reportes/vehiculos-historico emitia 29. Las 10 ausentes viven entre Chasis_Nro y Cabina_Antivandalica: Tipo, Piso, Carroceria, Carroceria Categoria, Motor, Motor Nro, Tipo_Motor, Asientos, Aire_acondicionado, Consumo. Eugenia nombro 8 de esas 10 en su item 28; las otras dos tienen la misma forma. La descarga no era el libro, era un subconjunto de el. POR QUE NADIE LO VIO. Ningun test miraba la lista de columnas y ninguna pantalla la muestra. Una columna que falta no rompe nada: el archivo abre, las filas cuentan bien, y solo se nota comparando contra el libro columna por columna. Se agrego src/lib/exports/rutap-historico.test.ts, que compara los 39 encabezados contra la fila del libro copiada verbatim. DESCARTADO ANTES DE TOCAR NADA. El item 28 parecia ser del export de /vehiculos. db02-mba-l-cc midio v_vehiculos_export en DEV: 2430 filas, y de las 8 columnas que ella nombra ninguna esta vacia mas de 46 veces (categoriaCarroceria 46 = 1.9%, piso 2, carroceria 2, cantidadAsientos 1, marcaMotor/numeroMotor/tipoMotor/tipoVehiculo 0). Ese objeto no tiene el defecto; el reporte historico si. RESPALDOS, medidos por db02 en DEV el 2026-09-17. Las columnas raw_* estan en NULL en las 68 filas de origen='app' (0/68 en raw_tipo, raw_piso, raw_carroceria, raw_motor), asi que el respaldo no es opcional: sin el, un periodo escrito por la app sale vacio en las diez. Cada respaldo se eligio por la grafia QUE ESCRIBE EL LIBRO: - Tipo: vehiculos_subtipos_transporte.codigo (el libro trae 1/2/3/4 pelados; codigo matchea byte a byte). Se joinea por h.vehiculo_subtipo_transporte_id, NO por vehiculos: la fila ancha tiene su propia columna (import 5514/5514, app 65/68) y donde las dos existen difieren en 37 periodos - o sea la del vehiculo es el valor de HOY y la del periodo es el del periodo. - Piso: opciones grupo 'carroceria' campo 'piso', nombre_mostrable ('Bajo' matchea 5511/5514). - Tipo_Motor: opciones grupo 'motor' campo 'estandar_emisiones', nombre_mostrable. Las convenciones de estandar_emisiones y tipo_motor estan DADAS VUELTA (docs/reference/rutap-transform-rules.md:126): el catalogo tipo_motor dice 'Euro 3'/'Euro 5' y no matchea al libro en ningun valor. - Aire_acondicionado: opciones grupo 'general' campo 'respuesta_binaria', valor_opcion. Las filas de aire scopeadas a carroceria (126/127) estan borradas desde 2026-06-05 y nunca matchearon al libro. - Carroceria, Motor, Motor Nro, Asientos: lectura directa de carroceria_fabricante, motor_fabricante, numero_serie_motor, asientos::text. - Consumo: NULL -> '-'. No es un sentinela nuevo: 'el libro no tiene consumo' y NULL son el mismo hecho, decidido en docs/migrations/2026-08-20-consumo-centinela-guion-export-PROD.sql. - Carroceria Categoria: SIN respaldo, sale vacia. La app nunca escribe carroceria_categoria (NULL en las 93 filas de app medidas), no hay id ni tabla de donde derivarla, y tomarla del estado de hoy del vehiculo seria inventar un hecho del periodo. DERIVA MEDIDA QUE NO SE PARCHEO ACA, a proposito: (1) nombre_mostrable del id 174 es 'Electrico' con acento y el libro escribe 'Electrico'/'ELECTRICO' sin acento (57 filas); (2) 4 filas de app dicen 'ITALBUS S.A.' donde el libro escribe 'ITALBUS'; (3) el libro mismo trae 'Si' 5254 veces y 'SI' 3 veces en aire acondicionado. Son grafias, no defectos de este reporte, y arreglarlas aca taparia la diferencia en vez de mostrarla. APARTE, item 21: el export del parque (/vehiculos, boton Descargar) ahora emite Tramite, que era la unica columna del modelo 'modelo-ideal-exportacion' de Eugenia que no tenia. Se resuelve del periodo vigente con la misma expresion que MOVILBA-463 para que las dos descargas escriban 'Alta'/'Modif' igual. Va AL FINAL del array: VEHICULOS_EXPORT_COLUMNS tambien sirve a la API externa de FISCALIZACION (MOBAAPI-631) y un consumidor por posicion sobrevive a un append, no a una insercion en el medio. NO EJERCITADO: no se descargo el archivo de dev01 todavia - lo shipeado se verifica midiendo la salida de la consulta, pedido a db02. PROD no se toco. El orden de columnas del export de parque sigue siendo el nuestro, no el del modelo de Eugenia: eso es decision de ella y esta preguntado en la planilla.

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Activity

  • wi-cli-venus created · 4w ago
  • wi-cli-venus completed · 4w ago
    VERIFICADO EN DEV por db02-mba-l-cc despues del deploy v5.5.210. Conteo de filas identico antes y despues: 5582 con la consulta vieja de 9 joins y 5582 con la nueva de 13 - los 4 joins agregados son 1:1 por construccion (opciones.id y vehiculos_subtipos_transporte.id son PK) y ademas se midio, asi que no hay fan-out duplicando periodos. Vacios por columna sobre import 5514 / app 68: Tipo 0/3, Piso 0/5, Carroceria 0/4, Carroceria Categoria 0/68, Motor 0/3, Motor Nro 0/3, Tipo_Motor 0/4, Asientos 0/4, Aire_acondicionado 0/5, Consumo 0/0. Cero vacios en import en las diez, Carroceria Categoria 100% vacia en app como estaba previsto por no tener respaldo honesto, y el resto entre 3 y 5 de 68. Ninguna cifra contradice la eleccion de respaldo. Items 21 y 28 de Eugenia contestados en la planilla.
bug
4w ago by wi-cli-venus
4w ago
2026-09-18 00:15