Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/elegroag/nuxt-credito-caja/llms.txt

Use this file to discover all available pages before exploring further.

El endpoint de estadísticas del dashboard es el punto de entrada principal para el panel de control administrativo de Comfaca Créditos en Línea. En una sola petición agrega cuatro dimensiones analíticas del sistema: el estado del portafolio de solicitudes de crédito (incluyendo tasas de aprobación, montos acumulados y distribución por estado), el rendimiento del programa de convenios empresariales, la composición del directorio de usuarios por rol y la actividad más reciente del sistema. Esta consolidación evita múltiples llamadas paralelas desde el cliente y permite renderizar el dashboard completo con un único fetch.
Este endpoint requiere una sesión activa con rol administrador. Las peticiones sin autenticación o con rol insuficiente recibirán 401 Unauthorized o 403 Forbidden.

GET /api/admin/dashboard/estadisticas

Autenticación

Requiere rol administrador. Se autentica mediante la cookie de sesión de Nuxt (nuxt-session).

Query Parameters

Este endpoint no acepta parámetros de consulta. Siempre devuelve las estadísticas del estado actual del sistema completo.

Response

success
boolean
true cuando la consulta se ejecuta sin errores.
message
string
"Consulta completada exitosamente".
data
object

Ejemplo de petición

curl -X GET "https://app.comfaca.com/api/admin/dashboard/estadisticas" \
  -H "Cookie: nuxt-session=<token>"

Ejemplo de respuesta completa

{
  "success": true,
  "message": "Consulta completada exitosamente",
  "data": {
    "solicitudes": {
      "total": 102,
      "aprobadas": 34,
      "activas": 61,
      "pendientesFirma": 3,
      "montoTotalAprobado": 850000000,
      "tasaAprobacion": 33.33,
      "porEstado": [
        { "estado": "POSTULADO",           "nombre": "Postulado",             "count": "12", "color": "#6B7280" },
        { "estado": "DOCUMENTOS_CARGADOS", "nombre": "Documentos cargados",   "count": "8",  "color": "#F59E0B" },
        { "estado": "ENVIADO_VALIDACION",  "nombre": "Enviado a validación",  "count": "5",  "color": "#3B82F6" },
        { "estado": "PENDIENTE_FIRMADO",   "nombre": "Pendiente de firmado",  "count": "3",  "color": "#8B5CF6" },
        { "estado": "FIRMADO",             "nombre": "Firmado",               "count": "27", "color": "#10B981" },
        { "estado": "APROBADA",            "nombre": "Aprobada",              "count": "34", "color": "#22C55E" },
        { "estado": "RECHAZADA",           "nombre": "Rechazada",             "count": "6",  "color": "#EF4444" },
        { "estado": "DESESTIMADA",         "nombre": "Desestimada",           "count": "2",  "color": "#F97316" },
        { "estado": "CANCELADA",           "nombre": "Cancelada",             "count": "1",  "color": "#9CA3AF" },
        { "estado": "DESISTE",             "nombre": "Desistida",             "count": "4",  "color": "#D1D5DB" }
      ],
      "porMes": [
        { "mes": "2024-06", "nombre": "junio de 2024",      "count": 9  },
        { "mes": "2024-07", "nombre": "julio de 2024",      "count": 14 },
        { "mes": "2024-08", "nombre": "agosto de 2024",     "count": 18 },
        { "mes": "2024-09", "nombre": "septiembre de 2024", "count": 21 },
        { "mes": "2024-10", "nombre": "octubre de 2024",    "count": 22 },
        { "mes": "2024-11", "nombre": "noviembre de 2024",  "count": 18 }
      ]
    },
    "convenios": {
      "activos": "45",
      "totalEmpresas": "52",
      "topEmpresas": [
        { "razon_social": "Hospital Regional del Norte E.S.P.", "nit": "900456789", "numero_empleados": "850", "tipo_empresa": "E.S.P." },
        { "razon_social": "Constructora Andina S.A.S.",         "nit": "900123456", "numero_empleados": "250", "tipo_empresa": "S.A.S." }
      ],
      "porTipo": [
        { "tipo_empresa": "S.A.S.",  "count": "28" },
        { "tipo_empresa": "E.S.P.",  "count": "10" },
        { "tipo_empresa": "S.A.",    "count": "7"  },
        { "tipo_empresa": "Ltda.",   "count": "5"  },
        { "tipo_empresa": null,      "count": "2"  }
      ]
    },
    "usuarios": {
      "total": 187,
      "activos": 180,
      "recientes": 14,
      "trabajadores": "162",
      "porRol": [
        { "role": "user_trabajador", "count": "162" },
        { "role": "asesor",          "count": "18"  },
        { "role": "admin",           "count": "7"   }
      ]
    },
    "actividadReciente": {
      "solicitudesRecientes": [
        {
          "numero_solicitud": "SOL-2024-000102",
          "estado": "DOCUMENTOS_CARGADOS",
          "created_at": "2024-11-15T14:22:00.000Z",
          "owner_username": "pedro.ramirez"
        },
        {
          "numero_solicitud": "SOL-2024-000101",
          "estado": "APROBADA",
          "created_at": "2024-11-15T11:05:00.000Z",
          "owner_username": "lucia.vargas"
        }
      ],
      "usuariosRecientes": [
        {
          "username": "ana.moreno",
          "full_name": "Ana Moreno Castillo",
          "numero_documento": "63456789",
          "roles": ["user_trabajador"],
          "created_at": "2024-11-15T09:00:00.000Z"
        }
      ]
    },
    "ultimaActualizacion": "2024-11-15T17:30:00.000Z"
  }
}

Tipo DashboardStats

Estructura TypeScript del objeto de estadísticas que devuelve el endpoint (campo data):
interface DashboardStats {
  solicitudes: {
    total: number
    aprobadas: number
    activas: number
    pendientesFirma: number
    montoTotalAprobado: Decimal | null
    tasaAprobacion: number
    porEstado: Array<{
      estado: string
      nombre: string
      count: string      // serializado como string
      color: string
    }>
    porMes: Array<{
      mes: string        // formato "YYYY-MM"
      nombre: string     // ej. "noviembre de 2024"
      count: number
    }>
  }
  convenios: {
    activos: string      // serializado como string
    totalEmpresas: string
    topEmpresas: Array<{
      razon_social: string
      nit: string
      numero_empleados: string
      tipo_empresa: string | null
    }>
    porTipo: Array<{
      tipo_empresa: string | null
      count: string
    }>
  }
  usuarios: {
    total: number
    activos: number
    recientes: number
    trabajadores: string | undefined
    porRol: Array<{
      role: string
      count: string
    }>
  }
  actividadReciente: {
    solicitudesRecientes: Array<{
      numero_solicitud: string | null
      estado: string
      created_at: Date
      owner_username: string
    }>
    usuariosRecientes: Array<{
      username: string
      created_at: Date | null
      roles: unknown
      numero_documento: string | null
      full_name: string | null
    }>
  }
  ultimaActualizacion: string  // ISO 8601
}
Para refrescar únicamente los contadores por estado sin recargar todas las estadísticas del dashboard, usa el endpoint más liviano GET /api/admin/solicitudes/estados-count. Este solo ejecuta un groupBy en la tabla de solicitudes y es significativamente más rápido que el endpoint de estadísticas completas.

Build docs developers (and LLMs) love