Tablero de Indicadores - Davidcuama/via-coinogas GitHub Wiki

Tablero de indicadores (HU-30)

Qué debe mostrar el tablero, cómo conseguir datos para construirlo y el paso a paso para armarlo en Power BI Desktop.

La conexión a PostgreSQL y el diccionario de campos están en Analitica-Diccionario-de-Vistas; aquí no se repiten.


1. La decisión: sin licencias

Coinogas confirmó que no cuenta con licencias de Power BI. Eso cierra el punto 1 de Acuerdos-con-el-Cliente y define el camino, pero no bloquea la historia:

¿Licencia de pago?
Descargar y usar Power BI Desktop No, es gratuito
Construir el modelo, los visuales y los filtros No
Guardar el .pbix y versionarlo en el repositorio No
Abrir el .pbix en otro computador con Desktop No
Publicar en el servicio de Power BI y compartir por web Sí (Pro o PPU)

Ninguno de los cuatro criterios de aceptación de HU-30 exige el servicio en línea. Los cuatro se cumplen con Power BI Desktop y el archivo versionado en el repositorio.

Lo único que se pierde sin licencias es que el cliente pueda abrir el tablero desde un navegador. Para verlo necesita Power BI Desktop —que es gratis— y el archivo. En la sustentación se proyecta desde el equipo del equipo.

Conviene confirmar los términos de licenciamiento vigentes de Microsoft al momento de la entrega, porque cambian.


2. Qué debe mostrar

Los criterios de aceptación traducidos a visuales concretos y a los campos que lee cada uno:

Criterio de aceptación Visual Campos
Número de requerimientos radicados por mes Columnas agrupadas anio_solicitud, mes_solicitud
Distribución por área solicitante Barras horizontales area
Distribución por nivel de prioridad Anillo prioridad
Filtrar por rango de fechas y por área sin recargar Segmentadores fecha_solicitud, area
Los datos coinciden con la bandeja para el mismo periodo — Se verifica contra la bandeja

Vale la pena agregar dos tarjetas de resumen aunque no las pida el criterio —total de requerimientos y total estimado—. Es lo primero que mira un analista al abrir un tablero.


3. El obstáculo del motor de base de datos

En desarrollo el equipo usa SQLite, para no tener que instalar PostgreSQL. Y Power BI Desktop no tiene conector nativo para SQLite: solo llega con un controlador ODBC de terceros.

La salida es volcar las vistas a CSV, que Power BI lee nativo:

python manage.py exportar_analitica

Escribe analitica/analitica_requerimientos.csv y analitica/analitica_items.csv. Tres detalles que el comando ya resuelve y que, hechos a mano, cuestan un rato de depuración:

  • Marca BOM (utf-8-sig). Sin ella Power BI lee «Logística» como «Logística».
  • Fechas en ISO (2026-10-13). Con 13/10/2026, Power BI interpreta mes y día al revés según la configuración regional de quien abra el archivo.
  • Punto como separador decimal. Con coma, Power BI lee los precios como texto y las gráficas de totales salen vacías.

Los CSV no se versionan: son un volcado regenerable. El .pbix sí, porque en modo Importar guarda los datos dentro y el tablero se ve al abrirlo aunque no haya CSV.

En producción el tablero se conecta directo a PostgreSQL con el rol de solo lectura (ver Analitica-Diccionario-de-Vistas). Cambiar la fuente de datos de CSV a PostgreSQL es una operación de un minuto en Power BI y no obliga a rehacer los visuales.


4. Datos para construirlo

El sistema no está en producción, así que no hay datos reales. Y con los dos o tres requerimientos que uno crea probando a mano —todos de la misma área y la misma prioridad— las gráficas de distribución salen con una sola barra: no sirven ni para diseñar el tablero ni para sustentarlo.

python manage.py sembrar_demo --cantidad 40 --meses 6 --semilla 7
python manage.py exportar_analitica

Genera requerimientos repartidos entre cinco áreas, las tres prioridades y varios meses del año en curso, con ítems que a veces traen precio y a veces no —para que también se vea el aviso de total parcial de HU-10—.

  • Solo corre con DEBUG=True: son datos falsos y no pueden entrar por accidente a un entorno real.
  • Las cuentas que crea llevan el prefijo demo., que es lo que permite quitar después solo lo sembrado con sembrar_demo --limpiar.
  • --semilla 7 devuelve siempre el mismo conjunto, así el tablero de la sustentación se ve igual cada vez que se levante el ambiente.

5. Paso a paso para armar el tablero

Paso 1 · Cargar los datos

  1. Abrir Power BI Desktop.
  2. Obtener datos → Texto/CSV → analitica/analitica_requerimientos.csv.
  3. En la vista previa, confirmar que la columna area muestra Logística y no Logística. Si sale mal, el archivo se generó sin la marca BOM: volver a correr exportar_analitica.
  4. Cargar. Repetir con analitica_items.csv.

Paso 2 · Revisar los tipos de columna

Columnas Tipo
fecha_solicitud, fecha_requerida Fecha
total_estimado, precio_referencia, total Número decimal
anio_solicitud, mes_solicitud, numero_items, cantidad Número entero
requiere_calibracion, es_reembolsable Verdadero/falso

Si un número llega como Texto, es la configuración regional del paso de importación: ponerla en Inglés (Estados Unidos), que es la que espera punto decimal.

Paso 3 · Relacionar las dos tablas

En la vista Modelo, arrastrar analitica_items[requerimiento_id] sobre analitica_requerimientos[id]. Cardinalidad varios a uno, dirección simple.

Paso 4 · Los visuales

Volumen por mes — Gráfico de columnas agrupadas

  • Eje X: anio_solicitud y mes_solicitud
  • Eje Y: Recuento de consecutivo

Usar mes_solicitud (el número 1-12) y no el nombre del mes: un eje con nombres se ordena alfabéticamente y queda abril, agosto, diciembre…, que no significa nada.

Distribución por área — Barras horizontales

  • Eje Y: area · Eje X: Recuento de consecutivo
  • Ordenar de mayor a menor

Distribución por prioridad — Anillo

  • Leyenda: prioridad · Valores: Recuento de consecutivo

Tarjetas de resumen — dos tarjetas

  • Recuento de consecutivo → «Requerimientos»
  • Suma de total_estimado → «Total estimado», formato moneda sin decimales

Segmentadores — dos, arriba o en un panel lateral

  • fecha_solicitud, estilo Entre fechas
  • area, estilo Lista con selección múltiple

Los segmentadores filtran todos los visuales de la página sin recargar nada: con eso queda cubierto el tercer criterio.

Paso 5 · Verificar que los datos coinciden con la bandeja

El cuarto criterio pide que los números del tablero coincidan con la aplicación. Para comprobarlo:

  1. En la aplicación, abrir la bandeja y anotar el total de requerimientos.
  2. En el tablero, sin filtros aplicados, la tarjeta «Requerimientos» debe mostrar el mismo número.
  3. Aplicar un rango de fechas en el segmentador y comparar contra el mismo periodo en la bandeja.

Si no coinciden, lo más probable es que el CSV sea de antes de la última radicación: volver a correr exportar_analitica y Actualizar en Power BI.

Paso 6 · Guardar

Guardar como analitica/tablero-indicadores.pbix dentro del repositorio.

Un .pbix es un archivo binario: Git no puede mostrar diferencias ni fusionar dos versiones. Si dos personas lo editan a la vez, una de las dos pierde el trabajo. Mientras lo mantenga una sola persona no hay problema, pero conviene avisar en el canal del equipo antes de tocarlo.


6. Si más adelante hay licencias

Nada de lo construido se pierde. Publicar el tablero en el servicio de Power BI es subir el mismo .pbix; lo que habría que definir entonces es quién lo publica, con qué cuenta y cada cuánto se actualiza.

El otro camino, si el cliente prefiere no depender de Power BI, es construir los indicadores dentro de la aplicación sobre las mismas dos vistas. La capa de datos no cambia; cambia solo quién pinta las gráficas. Eso implicaría reescribir la issue: dejaría de ser «tablero en Power BI» y pasaría a ser «pantalla de indicadores», con los mismos cuatro criterios.


Relacionado: Analitica-Diccionario-de-Vistas · Acuerdos-con-el-Cliente