Los diagnósticos dicen quién los firma — proveedor de IA visible y arreglo del gráfico MTTA/MTTR
User value
En la pestaña ITSM del Observatory, cada fila de diagnóstico mostraba solo un número de confianza (Conf.), sin decir de dónde salía. Cuando la IA falla, entra un motor de reglas fijas que siempre estampa 90% de confianza; cuando la IA sí responde, sale con un 30-50% de autoevaluación real. El operador veía la tabla y sacaba la lectura contraria a la real: los casos “más seguros” (90%) eran justo aquellos en los que la IA no contestó. Medido en PROD sobre 183 incidencias: 133 firmadas por google_genai, 50 por el motor de reglas (static) — un 27,3% de caída de la IA, con picos del 43% en un día.
Decisión de Edu (opción A): no se tocan los números — el 90% de la regla fija es una certeza legítima sobre lo que detecta, y bajarlo artificialmente sería falsear el dato. Lo que faltaba era decir quién firmó cada fila.
Además, el gráfico de tendencia de tiempos de la misma pestaña (MTTA/MTTR) llevaba desde el 13-08-2026 sin dibujar ninguna línea, pese a que esa fecha se arregló expresamente el lado que las genera.
Cómo usarla
En la tabla de diagnósticos (ScopedInsightTab) hay una columna nueva Provider entre Conf. y Date: muestra el proveedor real (google_genai, static, etc.) con un tooltip que explica la diferencia — “diagnóstico generado por IA, la confianza es una autoevaluación del modelo” frente a “motor de reglas fijas, sin llamada a IA, la confianza es un valor editorial fijo”. La fila con static se pinta en gris apagado; el resto en el color de información del tema.
En el panel de analítica de la misma pestaña hay ahora un tercer gráfico, AI Provider, un donut con el reparto de diagnósticos por proveedor en el periodo — el dato (provider_usage) ya lo calculaba el backend desde hace tiempo, pero ningún JavaScript lo pintaba.
El gráfico de arriba, MTTA/MTTR, ahora sí dibuja las dos líneas de tendencia — antes salía siempre plano.
Implementación
El contrato de datos, antes indocumentado: AnalyticsOut.mtta_trend/mttr_trend (monitoring/api/itsm_schemas.py) eran un list sin forma. El servidor manda cada punto como {date, minutes}. El lector JS (ObservatoryITSM.js::_renderTrendChart) leía d.value || d[1] — un campo que ese payload nunca tuvo — así que la serie salía siempre vacía; el eje X sí pintaba porque ese lee date, que sí existe. Se tipa el esquema con el nuevo TrendPointOut (date: str, minutes: float) y se extrae la lectura a una función propia y exportada, mapTrendSeries(points), testeable sin mockear echarts (test de contrato en frontend/src/__tests__/static/observatory_itsm_trend.test.js).
Provider visible: sla_service.get_analytics() ya devolvía provider_usage (conteo de insights por ai_provider en el periodo); el nuevo _renderProviderChart() en ObservatoryITSM.js lo pinta como donut, con static en gris y los proveedores de IA en colores propios — nunca morado/violeta, vetado como color primario de IA en el producto (hook ai-purple del harness). ScopedInsightTab.js añade la columna Provider a la fila (insight.ai_provider, ya existente en el modelo) con su tooltip, y sube el colspan de 10 a 11 en los 4 sitios que pintan la tabla vacía/cargando/error.
Nota lateral del mismo PR — condiciones HTTP fuera del desplegable de alertas
El mismo commit retira las 2 condiciones http_response_time_above/below del desplegable de creación de alertas (templates/monitoring/observatory.html): el Agente de monitorización no tiene bucle HTTP y el contrato de nombres del ingest de métricas no admite ninguna http_*, así que una alerta creada ahí no dispararía nunca sola. El evaluador las sigue soportando — una alerta ya existente no se rompe — y el chequeo manual (POST .../http/check) sigue vivo. Cambio menor de UI, sin entidad propia.
Commits relacionados
e83125f(PR #514, v1.121.0, 06-09-2026) — task #284 puntos 1 y 2 + task #281 punto 2.
Deuda declarada
5 strings de interfaz nuevos (Provider, AI Provider y sus tooltips) nacen en inglés sin traducción ES — va con la iniciativa i18n (#94, F4). Los cambios visuales (columna nueva, gráfico de proveedor, desplegable reducido) están sin comprobar en pantalla.
Véase también
- [[feature—monitoring—itsm-ciclo-cierre]]
- [[concept—monitoring—itsm]]
- [[entity—monitoring—model—slapolicy]]
- [[entity—monitoring—service—google-genai-provider]]
- [[decision—20260814—itsm-closed-at-semantics]]