Barrido lectura-por-vista: toda lectura de catalogo debe ir por la v_ui_* que filtra borrado_en, no por la tabla cruda
Elazar 2026-09-03: 'do we not have a view for each table where borrado_en is null? use those.' MovilBA tiene 91 vistas publicas y para cada catalogo existe una v_ui_* que ya filtra borrado_en (v_ui_chasis = 20 filas vs 132 de la tabla cruda). Medicion inicial: 21 referencias a tabla cruda en src/repositories + src/app; 4 repositorios tocan catalogos crudos (opciones.ts, chasis.ts, entidades.ts, carrocerias.ts). El defecto de MOVILBA-200 ES esta asimetria: v_ui_chasis filtra y v_vehiculos_export joinea chasis crudo, y por eso 574 vehiculos vivos de PROD muestran un chasis que el selector no ofrece. ALCANCE: barrido y medicion, NO fix. Por cada lectura contra tabla cruda decir si existe la vista equivalente y si la ausencia del filtro cambia la poblacion devuelta. Incluir tambien las VISTAS que joinean crudo (v_vehiculos_export es una). Entregable: tabla path:linea | tabla | vista que corresponde | filas crudas vs filas de la vista | cambia la poblacion S/N. TRAMPA: docs/reference/view-catalog.md NO existe aunque CLAUDE.md lo cite; el inventario real es docs/reference/view-inventory-movilba-79.md y la fuente viva es 'select table_name from information_schema.views'.
Sub-tickets — 2/2 done
Activity
-
audit-mba-l-cc arranco el barrido 2026-09-03 12:36
-
Barrido entregado por audit-mba-l-cc el 2026-09-03 12:40, medido en PROD. Gap raw-vs-vista por tabla: chasis 132/20, carrocerias 74/18, fabricantes 50/37, entidades 25/13, opciones 202/168. 9 callsites clasificados. Hallazgos reales derivados a hijos: MOVILBA-208 (carrocerias.getById sin filtro, 45 vehiculos vivos sobre carroceria muerta - VERIFICADO por coder02) y MOVILBA-209 (opciones.findByCategory lee crudo, latente: cero filas vivas apuntando a opcion muerta hoy, y el cero tiene input). Correccion aplicada al reporte: la cifra 'opciones.estado_id 2396/2396' no es medible, vehiculos.estado_id no existe como columna; audit la habia marcado como a re-verificar y con razon. Decision aceptada: el LEFT JOIN crudo de v_vehiculos_export es deliberado - etiqueta el valor muerto como '(borrado)' en vez de esconderlo, que es la falla OPUESTA a MOVILBA-200. No cubierto y declarado: direcciones-postales, numeros-telefonicos, personas, recorridos, asociaciones.