Volver a la wiki

Liquidación de las rondas 30-08/06-09 · Cuarto PR: el descubrimiento de red deja de mentir (network)

Cuándo

06-09-2026 · commit e44d987187044c1e785232c61ea544fcc208d990 (PR #513, v1.120.0). Cuarto PR de una serie que liquida hallazgos pendientes de las rondas de auditoría del 30-08 y del 06-09 (serie distinta de la cola por dominio de la task #286: los PRs anteriores de esta misma serie cerraron las tasks #292, #279, #277/#293/#294/#296.1). Este cierra #291 y #278 (ALTA), #280 (ALTA), el punto 4 de #281 y los puntos 5 y 6 de #282, todos en el módulo de descubrimiento de red (network/Auto-Provision). 94 tests backend + 90 de frontend en verde.

Síntomas visibles

  1. #291 — Un host que fallaba el enriquecimiento (enrich_one en network/api/discovery.py) se guardaba igualmente como ficha con discovery_method="ping" y confianza 10-20, sin last_verified — indistinguible en pantalla de un hallazgo real por ping. En PROD había 114 fichas así, creadas en dos ráfagas de 57 el 21-08.
  2. #278 — Con el Agente local sin WebSocket, “Deep Discover” mostraba aviso verde de éxito en unos 2 segundos sin haber hecho ningún sondeo real. 201 de 261 fichas en PROD viven hoy en ese estado no verificado.
  3. #280 — El editor de ficha de dispositivo (device_card_editor.js) tenía una lista TYPE_OPTS con 7 valores frente a los 11 que acepta el modelo Device. Al abrir y guardar la ficha de un tipo no listado (p. ej. media_player), el desplegable quedaba en su primera opción y el guardado la persistía — convirtiendo la ficha en “router” de forma permanente. 105 fichas de cartelería en riesgo.
  4. #281 pt.4 — El enlace automático ficha-dispositivo (matching por IP) nunca encontraba coincidencias, aunque el hallazgo original apuntaba a una causa distinta (lectura de IP sin descifrar). Medido en PROD: 6 dispositivos con management_config, los 6 con IP descifrable, 0 con la IP en texto claro.
  5. #282 pt.5/pt.6 — La chapa de “Deep discovery completed” siempre citaba “0 MIBs loaded” (dato nunca poblado). Y los valores discovery_method="http" / device_type="ups" se escribían en producción sin estar declarados en las choices del modelo, con ups aceptado en un endpoint (assign.py) y rechazado con 400 en otro (profiles.py).

Causa raíz

Fix aplicado

Commit e44d987187044c1e785232c61ea544fcc208d990 (PR #513):

Lecciones

Preventivos futuros

Véase también

Subir