Volver a la wiki

Descripción general

En v1.63.0, Integrity deja de ser una página propia (/integrity/) y se muda a pestaña 4 de Observatory (junto a Overview, CNS e ITSM). El cambio es de UX y arquitectura; el motor y la API de Integrity siguen intactos.

Contexto de la decisión

El flujo de trabajo de Integrity es:

  1. Integrity detecta un cambio (Plan updated / Real change / False alarm)
  2. CNS lo filtra (descarta ruido)
  3. ITSM abre un ticket de incidencia
  4. El técnico reconcilia el plano

Todos estos pasos viven en superficies vecinas del mismo módulo (Monitoring). El usuario (técnico en la “sala de control”) ve el mismo contexto para las tres herramientas. Por eso, agrupar todo en Observatory como pestañas hermanas reduce la fricción: el técnico no cambia de página. El botón “Integrity” de la cabecera desaparece.


Qué cambió

Cambios de UX

AntesDespués
Integrity es botón en la barra superiorIntegrity es pestaña 4 de Observatory
/integrity/ es página propia con layout/integrity/ es redirect a /monitoring/?tab=integrity
Ver Integrity requería dejar ObservatoryTodo vive en una sola vista

Cambios de código

racks/views.py — integrity_view():

monitoring/views.py — observatory_view():

templates/monitoring/observatory.html:

templates/racks/integrity.html (removida):

static/js/pages/integrity.js:

static/js/pages/observatory.js:

static/css/pages/integrity.css:

base.html (template global):

Tests

tests/racks/test_integrity_api.py:

Fix de CI (config/settings/test.py)

Los 2 tests nuevos renderizan observatory.html, que incluye {% vite_asset %}. En local, el manifest se construye al hacer build de Vite. En CI, los shards de backend no compilan frontend, así que el manifest no existe y los tests rompían.

Solución: config/settings/test.py ahora configura django-vite con dev_mode=True — el template no lee manifest, emite la URL del dev server.


Arquitectura post-v1.63.0

/monitoring/ (GET)
├── observatory_view() — nueva lógica: añade integrity_can_edit
├── template: observatory.html
│   ├── tab: Overview
│   ├── tab: CNS
│   ├── tab: ITSM
│   └── tab: Integrity (module-gated con {% ifmodule "integrity" %})
│       ├── static/js/pages/integrity.js
│       ├── static/css/pages/integrity.css
│       └── fetches /api/racks/integrity/overview + /api/racks/integrity/ack

/integrity/ (GET)
├── integrity_view() — ahora solo redirect
└── 302 → /monitoring/?tab=integrity

/api/racks/integrity/overview (GET)
├── Sin cambios
└── racks.api.integrity.overview()

/api/racks/integrity/ack (POST)
├── Sin cambios
└── racks.api.integrity.ack_finding()

Backward compatibility

  1. URLs viejas: /integrity/ sigue funcionando (redirect 302)
  2. Bookmarks: los bookmarks a /integrity/ siguen válidos (automáticamente redirigen)
  3. Gating por módulo: intacto — una org sin “integrity” recibe 403 antes de llegar al redirect
  4. API: /api/racks/integrity/* sin cambios
  5. Traducciones: mismo msgid en ambas páginas — .po español sigue siendo válido sin tocar

Impacto del usuario


Véase también

Subir