Implementar tarjeta de Vulnerabilidad y mejorar interactividad
- Reemplazar tarjeta 'Más Común' por 'Vulnerabilidad' - Backend: Agregar campo critical_actions_today al schema de stats - Backend: Calcular acciones críticas (delete, update sensibles, logout) - Frontend: Mostrar contador de acciones críticas con código de color - Frontend: Click en tarjeta filtra por acciones críticas del día - Frontend: Botón 'Ver' funcional con icono - Color rojo si >10 críticas, ámbar si >5, verde si <=5 - Función filterCriticalActions() para búsqueda rápida - UX mejorada con hover effects y transiciones
This commit is contained in:
@@ -270,10 +270,27 @@ async def get_audit_stats(
|
||||
# En producción podrías hacer un join con users para obtener nombres
|
||||
top_users = {} # Placeholder - implementar con join si es necesario
|
||||
|
||||
# Acciones críticas hoy (delete, update sensibles, etc.)
|
||||
critical_actions_query = select(func.count()).select_from(AuditLog).where(
|
||||
and_(
|
||||
AuditLog.tenant_id == current_tenant.id,
|
||||
AuditLog.created_at >= today_start,
|
||||
or_(
|
||||
AuditLog.action.like('%.delete'),
|
||||
AuditLog.action.like('user.update'),
|
||||
AuditLog.action.like('%.assign'),
|
||||
AuditLog.action.in_(['user.login_failed', 'user.logout'])
|
||||
)
|
||||
)
|
||||
)
|
||||
critical_result = await db.execute(critical_actions_query)
|
||||
critical_actions_today = critical_result.scalar() or 0
|
||||
|
||||
return AuditLogStats(
|
||||
total_actions=total_actions,
|
||||
actions_today=actions_today,
|
||||
actions_this_week=actions_this_week,
|
||||
critical_actions_today=critical_actions_today,
|
||||
top_actions=top_actions,
|
||||
top_users=top_users,
|
||||
by_resource_type=by_resource_type
|
||||
|
||||
Reference in New Issue
Block a user