Descripción general
Desde v1.66.16, cada resultado del análisis profundo (deep discovery) de puntos de acceso queda fechado automáticamente. La ficha del AP ahora muestra “Deep data from
El problema
El análisis profundo captura una foto detallada de cada equipo (radios, clientes, hardware, inventario), pero esa foto nunca llevó fecha. El ingest guardaba con update_fields y los auto_now no se ejecutan en ese contexto, así que:
- Un AP caído podía mostrar datos de 6 semanas sin indicación de antigüedad.
- La interfaz no decía si la foto era reciente o histórica.
- No había forma de validar si el problema ya estaba o es nuevo.
La solución
Campo nuevo: DeviceProfile.deep_snmp_updated_at
Modelo (network/models/profile.py):
deep_snmp_updated_at = models.DateTimeField(
null=True,
blank=True,
help_text="Cuándo se tomó la foto del deep discovery (null = anterior a v1.66.16)",
)
null=True: el histórico queda sin fecha (datos previos a 2026-08-14).- Se llena automáticamente en el ingest (
sentinel_ingest.py) al guardar con éxito.
Migración
network 0060 añade el campo vacío; se rellena a futuro.
Exposición en APIs
-
DeviceProfileListOut (
network/api/common.py):- Nuevo field:
deep_snmp_updated_at: str | None = None - Resolver: serializa a ISO si no es null.
- Nuevo field:
-
Wireless deep-data (
monitoring/api/wireless.py):- GET
/api/network/auto-provision/profiles/{id}devuelvedeep_data_as_ofcon el timestamp.
- GET
Ingest: marcado del sello
terminal/api/sentinel_ingest.py > receive_deep_discovery_result():
if success:
profile.deep_snmp_updated_at = timezone.now()
profile.save(update_fields=["deep_snmp_data", "deep_snmp_updated_at"])
Contrato:
- ✅ Resultado exitoso →
deep_snmp_updated_atse estampa contimezone.now(). - ✅ Resultado fallido → no toca nada (null se mantiene).
Presentación en la ficha del AP
static/js/pages/wireless/WirelessDetail.js:
const asOf = this._deepAsOf.get(profileId);
const when = new Date(asOf).toLocaleString();
asOfEl.textContent = ' · ' + interpolate(t('Deep data from %(date)s'), { date: when }, true);
Catálogo (locale/es/LC_MESSAGES/djangojs.po):
msgid "Deep data from %(date)s"
msgstr "Deep data del %(date)s"
Renderiza junto a FW: IP · vendor model · FW vX.Y · Deep data from 14/08/2026 11:39
Matiz importante: histórico sin fecha
La decisión asumida (14-08 con Edu):
Solo se fechan los discovers a partir de ahora. El histórico queda
nully la ficha no enseña fecha hasta el primer deep discover nuevo de cada equipo.
- Razón: imposible infierir la fecha de una foto antigua sin registro.
- Impacto: APs sin analizar desde v1.66.16 no mostrarán fecha en su ficha.
- Aceptable: el próximo análisis (auto-triggered cada 5 min) la llenará.
Tests
tests/api/test_deep_discovery_timestamp.py:
test_successful_result_stamps_updated_at: POST consuccess=truerellenadeep_snmp_updated_at.test_failed_result_does_not_stamp: POST consuccess=falsedejadeep_snmp_updated_atsin cambiar.
Ambos fijan el contrato y evitan regresión.
Impacto en líneas de versión
- CHANGELOG.md: v1.66.16 documenta el cambio.
- RELEASE_NOTES.md: entrada pública explicando el beneficio y el matiz.
- config/settings/base.py:
APP_VERSION = "1.66.16". - README.md: versión actualizada a 1.66.16.
Véase también
- [[entity—network—model—deviceprofile]]
- [[concept—monitoring—observability]]
- [[concept—saas—data-integrity]]
- [[feature—monitoring—wireless-detail-dashboard]]
- [[feature—monitoring—sentinel-insight-deduplication]]
Referenciado desde
- Ancho de banda por interfaz SNMP · Agente 2.22.0 cierra A10 y A47 de la auditoría #261
- Auditoría Suprema 2 · Cola monitoring D: rendimiento de deep-discovery y de Wireless/UPS
- Deep Discovery automático en lotes de tres al Agente (last_batch)
- Desplegable "Red" en las gráficas de Wireless: clientes y tráfico de una sola VLAN (tarea #390, v1.166.0)
- Deuda #274 Tanda A — alertas en tiempo real y datos honestos en Wireless (v1.85.9)
- Deuda #274 Tanda B — puerto sin recarga, deep discovery deduplicado y un solo cargador de series en Wireless (v1.86.17)
- El panel de un grupo (Wireless/UPS/Signage) gana botonera: Deep Discover, Refresh, New Tab, Manage Members, Export CSV (v1.132.4)
- La vista grande de una gráfica dice de qué AP o grupo es, también al imprimir y en el PNG (v1.164.6)
- Las gráficas de SAI, vivas de fábrica — walk_first, validación de tipos OID y guardia de frescura (task #255, v1.82.5)
- Los clientes WiFi que ves son los de ahora (task #225, v1.66.9)
- Notas del equipo en las gráficas grandes de Wireless, fase 1 (v1.172.0)
- Wireless: el Agente empieza a leer clientes y tráfico por red (VLAN) — primera pieza del filtro Red