Comfaca Créditos en Línea integra la plataforma FirmaPlus para la firma electrónica de los documentos de solicitud de crédito. Una vez que el administrador genera el PDF de la solicitud e inicia el proceso, FirmaPlus envía un enlace OTP a cada firmante. El estado de cada firma es monitoreado en tiempo real desde el panel administrativo y, en segundo plano, por un daemon independiente que consulta FirmaPlus en ciclos de 5 minutos.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.
Flujo de Firma
Administrador inicia el firmado
Desde el detalle de la solicitud en el panel admin, el administrador hace clic en Iniciar firmado. Esto invoca:El servidor construye el payload
FirmaPlusRequest con los firmantes (solicitante y, si aplica, cónyuge y representante del convenio) y lo envía al endpoint signer de FirmaPlus.Solicitud pasa a PENDIENTE_FIRMADO
Si FirmaPlus retorna
Code: "1", el backend actualiza el estado de la solicitud a PENDIENTE_FIRMADO y almacena el NroSolicitud devuelto por FirmaPlus como transaccion_id del proceso de firmado.FirmaPlus notifica a los firmantes
FirmaPlus envía automáticamente un correo electrónico (y/o SMS, según la configuración) a cada firmante con el enlace único de firma y un código OTP de validación.
Afiliado accede a la página pública de firma
El firmante recibe un enlace del tipo
/firma/:token. Esta página pública no requiere autenticación en la aplicación; el token identifica el proceso y la identidad del firmante ante FirmaPlus.Firmante ingresa el OTP y firma el documento
En la interfaz de FirmaPlus, el firmante valida su identidad con el OTP recibido, revisa el documento y aplica su firma electrónica.
Composable useFirmadoDigital
El composable useFirmadoDigital encapsula toda la lógica de interacción con los endpoints de firma desde el lado del cliente.
Estado reactivo
Propiedades computadas
| Propiedad | Descripción |
|---|---|
enProceso | true cuando estado === "PENDIENTE_FIRMADO" |
firmadoCompleto | true cuando estado === "FIRMADO" |
firmadoRechazado | true cuando estado === "RECHAZADO" |
porcentajeCompletado | (firmantes_completados / total) × 100 |
obtenerURLsFirma | Record<string, string> con los URLs de firma por firmante |
mensajeEstado | Objeto { titulo, descripcion, tipo, icono } según el estado actual |
puedeReintentar | true si el estado es RECHAZADO o EXPIRADO |
Métodos principales
API FirmaPlus
El servicioserver/services/api-firmaplus.ts abstrae la comunicación con la plataforma FirmaPlus. Soporta autenticación Basic y por token Bearer, y en entorno dev (API_FIRMA_ENV=dev) retorna respuestas mock sin hacer llamadas reales.
Endpoints expuestos por FirmaPlus
Autenticación
Ejemplo — Enviar solicitud al endpoint signer
Respuesta de FirmaPlus
Monitoreo de Firmas
El composableuseMonitoreoFirmasRealTime es usado en la página /admin/firmas/monitor para seguir el estado de todas las solicitudes en proceso de firma desde el panel administrativo.
Polling automático
El monitor realiza polling cada 30 segundos de forma silenciosa (sin mostrar indicador de carga):Detección de cambios de estado
En cada ciclo, el composable compara el estado anterior con el nuevo y registra los cambios encambiosRecientes (máximo 10 entradas):
Estadísticas en tiempo real
Filtros de estado disponibles
| Valor | Etiqueta |
|---|---|
PENDIENTE_FIRMADO | Pendiente de Firmar |
FIRMADO | Firmado |
RECHAZADO | Rechazado |
EXPIRADO | Expirado |
CANCELADO | Cancelado |
@ | Todos |
Daemon nohup
El daemon es un proceso independiente del servidor Nuxt que consulta de forma recurrente el estado de las solicitudes enviadas a FirmaPlus.Arquitectura
| Archivo | Responsabilidad |
|---|---|
app.ts | Loop infinito con pausa de 5 minutos, consulta Prisma, lanza workers secuenciales |
workers/consultar-firma.worker.ts | Consulta FirmaPlus y escribe logs por solicitud |
lib/config.ts | Carga variables API_FIRMA_* desde .env sin contexto Nuxt |
lib/types.ts | Tipos de workerData y resultado del worker |
Ciclo de trabajo
- Arranque → log
nohup: daemon de consulta FirmaPlus iniciado - Consulta solicitudes con
estado = "PENDIENTE_FIRMADO"en base de datos - Por cada solicitud lanza un worker con
numero_solicitudyfirmantesCount - Espera a que finalice el worker antes de procesar la siguiente (ejecución secuencial)
- Pausa 5 minutos
- Repite desde el paso 2
Ejecución
Ctrl+C. El proceso cierra el cliente Prisma limpiamente ante SIGINT o SIGTERM.
Logs
| Destino | Contenido |
|---|---|
storage/logs/app.log | Logs estructurados con prefijo nohup: |
storage/logs/nohup-firmas.log | Salida del script cuando se usa nohup:firmas:daemon |
app.log:
LOG_LEVEL (DEBUG, INFO, WARN, ERROR).
Página Pública de Firma
La ruta/firma/:token es accesible sin autenticación en la aplicación y está destinada al afiliado o firmante que recibe el enlace por correo electrónico.