🔔 Timbrador 2.0 (Balanceador y Enrutador Multi-PAC)
El Timbrador 2.0 es un middleware de arquitectura orientada a eventos desarrollado para Alpura, diseñado para gestionar, balancear y garantizar el procesado tolerante a fallos de comprobantes fiscales digitales (CFDI) mediante la integración con múltiples Proveedores Autorizados de Certificación (PACs).
📌 Objetivos Principales
- Multi-PAC Dynamic Routing: Balanceo inteligente de peticiones de timbrado entre múltiples PACs (ej. Click Factura, Pegaso) según disponibilidad, costos o políticas de negocio.
- Tolerancia a Fallos y Contingencia Escalonada (Fallback): Reintentos locales automáticos y redirección transparente hacia un PAC secundario/terciario si el PAC principal presenta degradación o caídas.
- Anti-Duplicidad Estricta: Verificación previa de sellado en la autoridad fiscal/PAC antes de ejecutar la contingencia para evitar timbrar el mismo comprobante dos veces.
- Notificación Asíncrona vía Webhook: Envío de callback HTTP POST al cliente originador para informar del resultado definitivo (Éxito, Error de Negocio o Fallo Definitivo).
- Observabilidad y Telemetría: Endpoints REST de auditoría para consultar el estado actual del comprobante y el historial completo de eventos (Event Sourcing).
🏗️ Componentes del Sistema
| Componente | Descripción |
|---|---|
| API Receptor REST | Recibe peticiones de timbrado síncronamente, registra la transacción inicial y responde de inmediato 202 Accepted con un trackingId. |
| Google Cloud Pub/Sub | Message Broker desacoplado con colas por PAC (Queue 1..N) y cola de mensajes muertos (DLQ). |
| Connectors (Workers) | Consumidores independientes por cada PAC que ejecutan llamadas SOAP/WSDL, reintentos y validaciones anti-duplicidad. |
| DB Control (PostgreSQL) | Base de datos relacional para el seguimiento transaccional e historial cronológico (transaccion_timbrado e historial_timbrado). |
| Alert Manager (Notificador) | Proceso de alerta temprana que detecta fallos en la DLQ y notifica al equipo de soporte. |
📖 Contenido de la Documentación
- 📐 High-Level Design (HLD): Especificación arquitectónica detallada, diagrama de componentes, flujos de secuencia y modelo de datos.