SIN DEFECTO: ningun vehiculo VIVO apunta a una carroceria borrada (el conteo de 3 no filtraba vehiculos.borrado_en); queda anotado que detalle y list no filtran carrocerias.borrado_en en el join
Medido por db02-mba-l-cc el 2026-09-08 en DEV, SELECT only, mientras media MOVILBA-366. Hallazgo colateral, no es el defecto de 366. TRES vehiculos de public.vehiculos apuntan con carroceria_id a filas de public.carrocerias que estan SOFT-DELETED: id 33 ITALBUS en dos vehiculos, e id 13 TODO BUS con carroceria_modelo 'TODOBUS' en uno. vehiculos.carroceria_id no tiene ningun filtro por borrado_en, ni en la FK ni en el camino de lectura, asi que una carroceria retirada se puede seguir renderizando en la ficha del vehiculo. La fila borrada no desaparece de la pantalla: desaparece del desplegable, que es otra cosa. MISMA CLASE QUE MOVILBA-356: borrar el dato NO arregla la pantalla; la decision de mostrar u ocultar queda delegada en el renderer, que no la toma. Y vale la regla de siempre: BAJA se muestra, BORRADO no se muestra, y la guarda tiene que nombrar borrado_en LITERAL. QUE HAY QUE MEDIR ANTES DE PROPONER NADA: 1. Que superficies leen carroceria_id y cuales de ellas filtran por borrado_en (preguntar por information_schema.columns y pg_get_viewdef, jamas por el texto de pg_views.definition). 2. Si el desplegable v_ui_carrocerias filtra - se presume que si, hay que medirlo - porque entonces el vehiculo muestra un valor que su propio formulario no puede volver a elegir. 3. Cuando y por que se borraron esas dos filas, contra el dedup del 06-24 (la leccion de MOVILBA-200: ese dedup borro filas que el libro nombra verbatim). LO QUE NO SE HACE: no se reasignan los tres carroceria_id, no se resucitan las filas borradas, y no se toca PROD. DEV only. NO EJERCITADO: PROD, el codigo del renderer, y el resto de las 101 vistas.
Activity
-
MEDIDO 2026-09-08 db02-mba-l-cc, DEV, SELECT only, cero escrituras. EL ITEM NO TIENE DEFECTO: se cierra por medicion, y el error es mio. CERO vehiculos VIVOS apuntan a una carroceria borrada. Medido directo: select count(*) from public.vehiculos v join public.carrocerias c on c.id=v.carroceria_id where v.borrado_en is null and c.borrado_en is not null -> 0. DE DONDE SALIO EL '3'. Mi conteo original hizo el join sin filtrar public.vehiculos.borrado_en. Las tres filas son filas de vehiculo SOFT-DELETEADAS: id 3801 AE100DB carroceria 33, borrada 2026-06-29 14:01:44 id 3805 AE100DF carroceria 33, borrada 2026-06-29 14:01:44 id 5263 AZE323 carroceria 13, borrada 2026-03-04 22:14:17 AE100DB y AE100DF tienen fila SUCESORA viva (ids 6025 y 6026, creadas 2026-08-05) apuntando a la carroceria VIVA id 5 ITALBUS. AZE323 no tiene fila viva. Es exactamente la forma madre que ya me mordio dos veces esta noche en MOVILBA-365 -medir una sola cara de borrado_en- solo que invertida: alla no pregunte por las borradas, aca no las excluí. LOS CAMINOS DE LECTURA, verificados uno por uno y no deducidos: v_vehiculos_detalle, v_vehiculos_list, v_vehiculos_export y v_vehiculos_api_public consultados con los tres dominios devuelven ITALBUS id 5 para AE100DB/AE100DF y NADA para AZE323. Todas filtran v.borrado_en IS NULL en el nivel de vehiculos, asi que la fila que apunta a la carroceria retirada no llega a ninguna pantalla. v_ui_carrocerias -la del dropdown- SI filtra borrado_en (WHERE c.borrado_en IS NULL) y devuelve 0 filas para los ids 13 y 33. No hay ficha mostrando un valor que su propio formulario no pueda re-elegir. QUEDA EN PIE COMO CLASE, NO COMO DEFECTO HOY: ni v_vehiculos_detalle ni v_vehiculos_list filtran carrocerias.borrado_en en su join (LEFT JOIN carrocerias ca ON v.carroceria_id = ca.id, sin condicion). Hoy no expone nada porque ninguna fila viva apunta a una borrada, pero la vista no es lo que lo impide. Es candidata del inventario de MOVILBA-356, no un defecto medido. CORRIGE LA FECHA QUE TRAIA EL ITEM: las carrocerias 13 y 33 NO las borro el dedup del 2026-06-24. Las dos tienen borrado_en 2026-06-30 06:59:21.072922 y borrado_por 'system:carroceria-debundle-661', o sea el de-bundling de MOBAAPI-661. Otro evento, otra fecha, otro autor. NO EJERCITADO: PROD; el codigo de las pantallas (se midio la capa de vistas, no los componentes); y los 41 vehiculos soft-deleteados restantes, que no se revisaron uno por uno.
-
Sin defecto: cero vehiculos vivos apuntan a una carroceria borrada. Ver evento verified.
-
Ni v_vehiculos_detalle ni v_vehiculos_list filtran carrocerias.borrado_en en su join: hoy no expone nada porque cero vehiculos vivos apuntan a una borrada, pero la vista no es lo que lo impide
-
SIN DEFECTO. Medido por db02-mba-l-cc, DEV, SELECT only, el 2026-09-08, el mismo dia que lo abri. Lo abri yo sobre un conteo que no filtraba, asi que el error es mio. CERO vehiculos VIVOS apuntan a una carroceria borrada. Los "3" salian de un join que no filtraba vehiculos.borrado_en: las tres filas son vehiculos soft-deleted. 3801 y 3805 (AE100DB, AE100DF) borrados el 06-29, los dos con sucesores VIVOS 6025 y 6026 sobre la ITALBUS id 5 que esta viva; 5263 (AZE323) borrado el 03-04. Y NO SE DEDUJO, SE MIDIO CAMINO POR CAMINO: v_vehiculos_detalle, v_vehiculos_list, v_vehiculos_export y v_vehiculos_api_public devuelven ITALBUS id 5 para los dos primeros y nada para AZE323. v_ui_carrocerias SI filtra borrado_en y devuelve 0 filas para las ids 13 y 33. O sea que NO existe la ficha que muestra un valor que su propio formulario no puede volver a elegir, que era la hipotesis con la que abri el item. LO QUE SI SOBREVIVE, y es una candidata, no un defecto: v_vehiculos_detalle y v_vehiculos_list no filtran carrocerias.borrado_en en su join. Hoy no se filtra nada porque ningun vehiculo vivo apunta a una borrada, pero la vista no es lo que lo impide. Misma familia que MOVILBA-356, sin sintoma observable. CORRECCION DE ORIGEN: las ids 13 y 33 NO son del dedup del 06-24. borrado_en 2026-06-30, borrado_por 'system:carroceria-debundle-661', o sea MOBAAPI-661. Yo las habia atribuido al dedup por parecido de forma con MOVILBA-200. Se cierra. La candidata de vista queda anotada aca; si alguna vez un vehiculo vivo apunta a una carroceria borrada, este es el item que lo predijo.
-
SIN DEFECTO: ningun vehiculo VIVO apunta a una carroceria borrada (el conteo de 3 no filtraba vehiculos.borrado_en); queda anotado que detalle y list no filtran carrocerias.borrado_en en el join
-
completed