erp-construccion/docs/02-definicion-modulos/MAI-013-administracion-seguridad/historias-usuario/US-ADM-008-dashboard-admin.md

446 lines
17 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# US-ADM-008: Dashboard de Administración General
**ID:** US-ADM-008
**Módulo:** MAI-013
**Relacionado con:** Todos los RFs de MAI-013
**Prioridad:** Media
**Story Points:** 5
---
## 📖 Historia de Usuario
**Como** Director General o Administrador
**Quiero** visualizar un dashboard consolidado con métricas clave de administración y seguridad
**Para** monitorear la salud del sistema y tomar decisiones informadas rápidamente
---
## ✅ Criterios de Aceptación
### 1. Vista General del Dashboard
```gherkin
Given que soy Director o Admin
When accedo a "Dashboard de Administración"
Then debo ver widgets con información en tiempo real:
- Resumen de usuarios y roles
- Estado de seguridad del sistema
- Actividad reciente (últimas 24 horas)
- Estado de backups
- Centros de costo (top 5 por costo)
- Alertas pendientes
- Métricas de sistema
And todos los datos deben actualizarse automáticamente cada 30 segundos
```
### 2. Widget: Resumen de Usuarios
```gherkin
Given que estoy en el dashboard
Then el widget de usuarios debe mostrar:
- Total de usuarios activos
- Usuarios conectados ahora (🟢 en vivo)
- Nuevos usuarios (últimos 7 días)
- Invitaciones pendientes
- Usuarios bloqueados
- Gráfico de distribución por rol (pie chart)
- Link rápido a "Gestionar Usuarios"
```
### 3. Widget: Estado de Seguridad
```gherkin
Given que estoy monitoreando seguridad
Then el widget debe mostrar:
- Score de seguridad global (0-100)
- Passwords expirados (contador con alerta)
- Usuarios sin 2FA (contador con alerta)
- Intentos de login fallidos (últimas 24h)
- Sesiones sospechosas
- Última vulnerabilidad detectada
- Indicador visual: 🟢 Seguro / 🟡 Advertencia / 🔴 Crítico
```
### 4. Widget: Actividad Reciente
```gherkin
Given que quiero ver actividad del sistema
Then el widget debe mostrar:
- Timeline de últimas 10 acciones críticas
- Con formato: "Usuario realizó Acción en Módulo hace Tiempo"
- Ejemplo: "María L. eliminó presupuesto en Presupuestos hace 5 min"
- Iconos según tipo de acción
- Filtro rápido por severidad
- Link a "Ver Bitácora Completa"
```
### 5. Widget: Estado de Backups
```gherkin
Given que monitoreo backups
Then el widget debe mostrar:
- Último backup: Fecha/hora, tipo, estado (✅/❌)
- Próximo backup programado: Countdown
- Tasa de éxito (últimos 30 días) con gráfico
- Espacio usado: Local / S3
- Backups sin verificar (alerta si >3)
- RTO/RPO actuales
- Link a "Gestionar Backups"
```
### 6. Widget: Centros de Costo
```gherkin
Given que quiero ver resumen de costos
Then el widget debe mostrar:
- Top 5 centros con mayor costo (mes actual)
- Con barra de progreso indicando % del total
- Total acumulado del mes
- Comparación vs. mes anterior (% cambio)
- Gráfico de tendencia (últimos 6 meses)
- Link a "Ver Todos los Centros de Costo"
```
### 7. Widget: Alertas Pendientes
```gherkin
Given que hay alertas sin atender
Then el widget debe mostrar:
- Contador de alertas por severidad:
- 🚨 Críticas
- ⚠️ Altas
- Medias
- Lista de alertas recientes (últimas 5)
- Tiempo sin atender
- Botón "Marcar como atendida"
- Notificación badge en icono si hay críticas
```
### 8. Widget: Métricas del Sistema
```gherkin
Given que monitoreo rendimiento
Then el widget debe mostrar:
- Uso de CPU (%)
- Uso de memoria (%)
- Uso de disco (%)
- Conexiones a BD activas
- Requests por minuto
- Tiempo de respuesta promedio (ms)
- Gráficos de línea (últimas 2 horas)
- Alertas si algún indicador >80%
```
### 9. Filtros de Periodo
```gherkin
Given que quiero ver datos de diferentes periodos
When selecciono filtro de periodo:
- Hoy
- Últimos 7 días
- Últimos 30 días
- Mes actual
- Rango personalizado
Then todos los widgets deben:
- Actualizar datos según periodo seleccionado
- Mostrar comparación con periodo anterior
- Mantener selección al navegar
```
### 10. Acciones Rápidas
```gherkin
Given que estoy en el dashboard
Then debo ver panel de acciones rápidas:
- [+ Invitar Usuario]
- [🔒 Crear Backup Manual]
- [👁️ Ver Sesiones Activas]
- [📊 Exportar Reporte]
- [⚙️ Configurar Alertas]
And cada botón debe abrir modal o redirigir a sección correspondiente
```
### 11. Exportar Dashboard
```gherkin
Given que quiero compartir métricas
When hago clic en "Exportar Dashboard"
And selecciono formato: "PDF"
Then el sistema debe:
- Generar PDF con snapshot de todos los widgets
- Incluir fecha/hora de generación
- Incluir gráficos y tablas
- Descargar automáticamente
- Registrar exportación en audit log
```
### 12. Personalizar Dashboard
```gherkin
Given que quiero personalizar mi vista
When hago clic en "⚙️ Personalizar"
Then debo poder:
- Arrastrar y soltar widgets para reordenar
- Ocultar/mostrar widgets específicos
- Cambiar tamaño de widgets (pequeño, mediano, grande)
- Guardar configuración personal
- Restaurar a configuración por defecto
```
---
## 🎨 Mockup / Wireframe
### Dashboard Principal
```
┌─────────────────────────────────────────────────────────────────┐
│ Dashboard de Administración [Hoy ▼] [Exportar] [⚙️] │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌────────────────┐│
│ │ 👥 Usuarios │ │ 🔒 Seguridad │ │ ⚠️ Alertas ││
│ │ │ │ │ │ ││
│ │ 45 Activos │ │ Score: 85/100 🟢 │ │ 🚨 2 Críticas ││
│ │ 🟢 12 Conectados │ │ │ │ ⚠️ 5 Altas ││
│ │ +3 Esta semana │ │ ⚠️ 3 Pass. exp. │ │ 12 Medias ││
│ │ │ │ ⚠️ 7 Sin 2FA │ │ ││
│ │ 📊 Por rol: │ │ 8 Intentos fall. │ │ [Ver Todo] ││
│ │ Director: 8 │ │ │ │ ││
│ │ Ingeniero: 15 │ │ [Configurar] │ │ ││
│ │ Residente: 12 │ │ │ │ ││
│ │ Otros: 10 │ │ │ │ ││
│ │ │ │ │ │ ││
│ │ [Gestionar] │ │ │ │ ││
│ └──────────────────┘ └──────────────────┘ └────────────────┘│
│ │
│ ┌────────────────────────────────────┐ ┌───────────────────┐ │
│ │ 📋 Actividad Reciente │ │ 💾 Backups │ │
│ │ │ │ │ │
│ │ 🔴 María L. intentó eliminar │ │ Último: │ │
│ │ presupuesto $250K │ │ ✅ Full │ │
│ │ Hace 5 min │ │ 20 Nov, 03:00 AM │ │
│ │ │ │ │ │
│ │ 🟡 Juan P. actualizó monto │ │ Próximo en: │ │
│ │ en Presupuesto PRE-089 │ │ ⏱️ 2h 15min │ │
│ │ Hace 12 min │ │ │ │
│ │ │ │ Tasa éxito: │ │
│ │ 🟢 Ana G. creó nuevo proyecto │ │ ████████░ 98.5% │ │
│ │ "Residencial Vista" │ │ │ │
│ │ Hace 23 min │ │ Espacio: │ │
│ │ │ │ Local: 450 GB │ │
│ │ 🟢 Pedro M. aprobó compra │ │ S3: 1.2 TB │ │
│ │ Materiales - $45K │ │ │ │
│ │ Hace 35 min │ │ [Gestionar] │ │
│ │ │ │ │ │
│ │ [Ver Bitácora Completa] │ │ │ │
│ └────────────────────────────────────┘ └───────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 💰 Top Centros de Costo (Mes Actual) │ │
│ │ │ │
│ │ 101 - Proyecto Res. A ████████████████░░░░ $180,000 │ │
│ │ 102 - Proyecto Com. B ██████████░░░░░░░░░░ $ 70,000 │ │
│ │ 200 - Administración ████░░░░░░░░░░░░░░░░ $ 50,000 │ │
│ │ 300 - Marketing ███░░░░░░░░░░░░░░░░░ $ 30,000 │ │
│ │ 103 - Servicios Comp. ██░░░░░░░░░░░░░░░░░░ $ 20,000 │ │
│ │ │ │
│ │ Total mes: $350,000 📈 +15% vs mes anterior │ │
│ │ [Ver Todos] │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 📊 Métricas del Sistema (Últimas 2h) │ │
│ │ │ │
│ │ CPU: ████████░░░░░░░░░░ 45% Memoria: ██████░░░░ 62%│ │
│ │ Disco: ████░░░░░░░░░░░░░░ 35% Conexiones BD: 24 │ │
│ │ │ │
│ │ [Gráficos de línea mostrando tendencias] │ │
│ │ │ │
│ │ Requests/min: 1,250 Tiempo respuesta: 125ms │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ ⚡ Acciones Rápidas: │
│ [+ Invitar Usuario] [🔒 Backup Manual] [👁️ Sesiones] [📊 Reporte]│
└─────────────────────────────────────────────────────────────────┘
```
### Modal de Exportar Dashboard
```
┌─────────────────────────────────────────────┐
│ Exportar Dashboard [X]│
├─────────────────────────────────────────────┤
│ │
│ Formato * │
│ ◉ PDF (recomendado para reportes) │
│ ○ Excel (incluye datos tabulares) │
│ ○ CSV (solo datos, sin gráficos) │
│ │
│ Incluir │
│ ☑️ Todos los widgets │
│ ☑️ Gráficos y tablas │
│ ☑️ Metadata (fecha, usuario) │
│ ☐ Anexar bitácora de auditoría │
│ │
│ Periodo │
│ ◉ Datos actuales (snapshot) │
│ ○ Rango personalizado │
│ │
El archivo contendrá datos sensibles. │
│ Será registrado en la bitácora. │
│ │
│ [Cancelar] [Exportar] │
└─────────────────────────────────────────────┘
```
---
## 🧪 Casos de Prueba
### CP-001: Dashboard Carga Correctamente
**Precondiciones:**
- Usuario con rol "director"
**Pasos:**
1. Login al sistema
2. Navegar a "Dashboard de Administración"
**Resultado Esperado:**
- ✅ Todos los widgets cargan en <2 segundos
- Datos son actuales (timestamp correcto)
- No hay errores en consola
- Gráficos se renderizan correctamente
### CP-002: Actualización Automática
**Precondiciones:**
- Dashboard abierto
**Pasos:**
1. Esperar 30 segundos
2. Observar actualización de datos
**Resultado Esperado:**
- Widgets se actualizan automáticamente
- Sin recargar página completa
- Indicador visual de actualización
- No interrumpe interacción del usuario
### CP-003: Filtro por Periodo
**Precondiciones:**
- Dashboard muestra "Hoy"
**Pasos:**
1. Cambiar filtro a "Últimos 30 días"
2. Verificar cambios
**Resultado Esperado:**
- Todos los widgets actualizan datos
- Actividad reciente muestra últimos 30 días
- Métricas recalculadas correctamente
- Comparación con periodo anterior visible
### CP-004: Exportar Dashboard a PDF
**Precondiciones:**
- Dashboard con datos
**Pasos:**
1. Clic "Exportar"
2. Seleccionar "PDF"
3. Confirmar
**Resultado Esperado:**
- PDF genera en <5 segundos
- Incluye todos los widgets visibles
- Gráficos renderizados correctamente
- Descarga automáticamente
- Exportación registrada en audit log
### CP-005: Acciones Rápidas Funcionan
**Precondiciones:**
- Dashboard abierto
**Pasos:**
1. Clic en "[+ Invitar Usuario]"
2. Verificar modal
**Resultado Esperado:**
- Modal de invitación abre correctamente
- No requiere navegación a otra página
- Al cerrar modal, vuelve al dashboard
### CP-006: Personalizar Dashboard
**Precondiciones:**
- Dashboard en configuración por defecto
**Pasos:**
1. Clic "⚙ Personalizar"
2. Arrastrar widget "Usuarios" al primer lugar
3. Ocultar widget "Métricas del Sistema"
4. Guardar
**Resultado Esperado:**
- Widgets reordenados correctamente
- Widget oculto no se muestra
- Configuración persiste al recargar
- Otros usuarios no ven cambios (configuración personal)
---
## 🔗 Dependencias
**Requisitos Previos:**
- Todos los módulos de MAI-013 implementados
- APIs de estadísticas disponibles
- WebSockets o polling para actualización en tiempo real
**APIs Necesarias:**
- `GET /api/admin/dashboard/summary` - Resumen general
- `GET /api/admin/dashboard/users` - Métricas de usuarios
- `GET /api/admin/dashboard/security` - Score de seguridad
- `GET /api/admin/dashboard/activity` - Actividad reciente
- `GET /api/admin/dashboard/backups` - Estado de backups
- `GET /api/admin/dashboard/cost-centers` - Top centros de costo
- `GET /api/admin/dashboard/alerts` - Alertas pendientes
- `GET /api/admin/dashboard/system-metrics` - Métricas de sistema
- `POST /api/admin/dashboard/export` - Exportar
- `PUT /api/admin/dashboard/layout` - Guardar configuración
**Componentes Frontend:**
- DashboardLayout (grid responsive)
- Widget components (UserWidget, SecurityWidget, etc.)
- Charts (recharts, chart.js)
- Drag & drop (react-beautiful-dnd)
---
## 📊 Métricas de Éxito
- **Tiempo de carga inicial:** <2 segundos
- **Actualización automática:** Cada 30 segundos sin errores
- **Precisión de datos:** 100% consistencia con datos reales
- **Tiempo de exportación:** <5 segundos para PDF
---
## 🎯 Valor de Negocio
Este dashboard permite a los administradores:
- Detectar problemas de seguridad rápidamente
- Monitorear salud del sistema proactivamente
- Tomar decisiones informadas con datos en tiempo real
- Ahorrar tiempo al tener todo consolidado en una vista
- Identificar tendencias y patrones de uso
---
**Generado:** 2025-11-20
**Estado:** Listo para desarrollo