Flujo de Firmas
Entiende el proceso completo de firma digital de dos partes en la plataforma.
Vision General
Flujo de Firma de Dos Partes:
- EMPRESA: Crear Solicitud
- EMPRESA: Firmar documento
- Notificacion enviada al postulante
- POSTULANTE: Firmar documento
- SISTEMA: Constancia NOM-151
- Completado
Estados del Flujo
pending_company
Estado: Pendiente Empresa Color: Amarillo
Significado:
- Solicitud recien creada
- Esperando firma de la empresa
- Postulante NO ha sido notificado
- Documento aun no firmado por nadie
Acciones disponibles:
- Empresa: Firmar documento
- Empresa: Cancelar solicitud
- Empresa: Ver documento
- Postulante: No ve la solicitud aun
Siguiente paso: Empresa debe firmar
pending_postulant
Estado: Pendiente Postulante Color: Naranja
Significado:
- Empresa ya firmo
- Esperando firma del postulante
- Postulante notificado (email + plataforma)
- Documento tiene 1 de 2 firmas
Acciones disponibles:
- Postulante: Firmar documento
- Postulante: Ver documento
- Empresa: Ver estado
- Empresa: Cancelar (si necesario)
- Empresa: Reenviar notificacion
Siguiente paso: Postulante debe firmar
pending_constancia
Estado: Pendiente Constancia Color: Azul
Significado:
- Ambas partes firmaron
- Esperando timestamp NOM-151
- Proceso automatico en curso
- Usualmente toma segundos
Acciones disponibles:
- Ver estado de constancia
- Esperar proceso automatico
- En caso de error: reintentar
Siguiente paso: Sistema obtiene constancia automaticamente
completed
Estado: Completado Color: Verde
Significado:
- Ambas firmas completadas
- Constancia NOM-151 obtenida
- Documento legalmente firmado
- Proceso terminado exitosamente
Acciones disponibles:
- Descargar documento firmado
- Descargar evidencia forense (XML)
- Ver link de verificacion publica
- Enviar copia por email
- Ver detalles de firmas
Siguiente paso: Ninguno - proceso completado
expired
Estado: Expirado Color: Gris
Significado:
- Tiempo limite excedido
- No se completo a tiempo
- No se puede continuar
- Requiere nueva solicitud
Acciones disponibles:
- Ver historial
- Crear nueva solicitud
- No se puede firmar
Para resolver: Crear nueva solicitud
cancelled
Estado: Cancelado Color: Rojo
Significado:
- Cancelado por la empresa
- Razon de cancelacion registrada
- Proceso terminado
- Auditoria preservada
Acciones disponibles:
- Ver razon de cancelacion
- Ver historial
- Crear nueva solicitud si necesario
No se puede: Revertir cancelacion
Paso a Paso
Paso 1: Crear Solicitud
Quien: Empresa (reclutador) Estado resultante: pending_company
Acciones:
- Seleccionar documento PDF
- Seleccionar candidato (contratado)
- Definir titulo y descripcion
- Establecer fecha de expiracion
- Crear solicitud
Resultado:
- Solicitud creada
- Documento copiado a carpeta de firmas
- Hash SHA-256 calculado
- Esperando firma de empresa
Paso 2: Firma de Empresa
Quien: Usuario de la empresa Estado resultante: pending_postulant
Proceso:
- Abrir solicitud
- Ver documento completo
- Seleccionar certificado e.firma
- Proporcionar llave privada (.key)
- Ingresar contrasena
- Confirmar firma
- Click en "Firmar"
Lo que sucede:
- Hash del documento calculado
- Firma CMS/PKCS#7 generada
- IP y User-Agent registrados
- Certificado snapshot guardado
- Llave privada eliminada de memoria
- DocumentSignature creado
Notificaciones enviadas:
- Email al postulante
- Notificacion en plataforma
- WebSocket (si esta conectado)
Paso 3: Firma de Postulante
Quien: Candidato/postulante Estado resultante: pending_constancia
Proceso:
- Recibir notificacion (email/plataforma)
- Acceder a la solicitud
- Leer documento completo
- Seleccionar su certificado e.firma
- Proporcionar llave privada (.key)
- Ingresar contrasena
- Confirmar firma
- Click en "Firmar"
Lo que sucede:
- Hash del documento calculado
- Firma CMS/PKCS#7 generada
- IP y User-Agent registrados
- Certificado snapshot guardado
- Llave privada eliminada de memoria
- DocumentSignature creado
- Trigger para constancia NOM-151
Paso 4: Constancia NOM-151
Quien: Sistema automaticamente Estado resultante: completed
Proceso:
- Calcular hash final del documento
- Enviar a PSCWorld (proveedor NOM-151)
- Recibir timestamp RFC 3161
- Almacenar constancia
- Actualizar estado
Lo que sucede:
- finalDocumentHashHex calculado
- Request a PSCWorld API
- TimeStampToken (TST) recibido
- constanciaTimestampResp guardado
- constanciaStatus = valid
- Estado = completed
Notificaciones:
- Email a empresa con documento
- Email a postulante con documento
- Notificaciones en plataforma
- Evento para automatizacion
Diagrama de Estados
INICIO
|
v
pending_company
/ | \
v v v
CANCELAR FIRMAR EXPIRAR
| EMPRESA |
v | v
cancelled | expired
v
pending_postulant
/ | \
v v v
CANCELAR FIRMAR EXPIRAR
| POSTULANTE |
v | v
cancelled | expired
v
pending_constancia
|
v
completed
Tiempos Tipicos
Tiempos estimados:
| Paso | Tiempo |
|---|---|
| Crear solicitud | Inmediato |
| Firma empresa | Depende del usuario (Recomendado: Mismo dia) |
| Notificacion | 1-5 minutos (email), Instantaneo (plataforma) |
| Firma postulante | Tipico: 1-3 dias |
| Constancia NOM-151 | Tipico: 5-30 segundos |
| Completado | Inmediato despues de constancia |
Tiempo total tipico: 1-5 dias
Notificaciones del Flujo
Email a postulante (paso 2):
- Asunto: "Documento para firmar: [titulo]"
- Contenido:
- Nombre del documento
- Empresa solicitante
- Fecha limite
- Link para firmar
- Cuando: Al completar firma de empresa
Email de completado (paso 4):
- Para: Empresa y postulante
- Adjuntos:
- Documento firmado (PDF)
- Evidencia forense (XML)
- Contenido:
- Confirmacion de firma
- Link de verificacion
- Instrucciones de archivo
- Cuando: Al obtener constancia
Notificaciones plataforma:
- Al crear: Solo empresa
- Al firmar empresa: Postulante
- Al firmar postulante: Empresa
- Al completar: Ambos
Manejo de Errores
Error en Constancia
Si PSCWorld falla:
- Estado: pending_constancia (se mantiene)
- constanciaStatus: failed
- constanciaErrorMessage: [detalle del error]
Acciones:
- Sistema reintenta automaticamente
- Admin puede reintentar manualmente
- Si persiste: contactar soporte
- Firmas siguen siendo validas
Expiracion Durante Proceso
Si expira antes de completar:
Estado actual -> expired
Posibles escenarios:
- Expiro antes de firma empresa -> Crear nueva solicitud
- Expiro antes de firma postulante -> Crear nueva solicitud (empresa firma de nuevo)
- Ambos casos requieren reinicio
Proximos Pasos
- Firmar Documentos - Como firmar
- NOM-151 y Constancia - Entender la constancia
- Verificacion Publica - Validar firmas