Servicio de extracción de datos fiscales que obtiene, normaliza y almacena datos de facturas desde múltiples proveedores de autoridades tributarias (Chile SII, México SAT). Construido con Express, colas Bull, PostgreSQL y Redis.
- Express API — Endpoints REST para ejecutar extracciones, gestionar agendamientos y consultar el estado de los jobs
- Bull Queue — Cola de trabajos respaldada por Redis con lógica de reintentos, soporte de prioridad y agendamiento cron
- Workers — Procesadores de jobs concurrentes (concurrencia: 10) que obtienen y normalizan datos fiscales
- Providers — Patrón de proveedor abstracto que soporta Chile SII y México SAT, con un modelo de factura normalizado
- PostgreSQL — Almacenamiento persistente para seguimiento de jobs y datos de facturas
- Bull Board — Interfaz web para monitoreo de colas en
/queues
- Docker y Docker Compose
docker compose up --buildEl servidor API inicia en el puerto 3000.
curl -X GET http://localhost:3000/extractFiscalData \
-H "Content-Type: application/json" \
-d '{
"orgId": "org-666",
"period": "2026-03",
"options": { "provider_name": "chile_sii", "priority": "1" }
}'curl -X POST http://localhost:3000/extractFiscalDataAddSchedule \
-H "Content-Type: application/json" \
-d '{
"orgId": "org-666",
"options": {
"provider_name": "chile_sii",
"priority": "1",
"cron": "* * * * *",
"timeZone": "America/Santiago"
}
}'curl -X POST http://localhost:3000/extractFiscalDataRemoveSchedule \
-H "Content-Type: application/json" \
-d '{ "jobId": "<repeatable-job-id>" }'| Método | Endpoint | Descripción |
|---|---|---|
| GET | /jobs/:id |
Obtener job por ID |
| GET | /jobs/status/:status |
Listar jobs por estado (?limit=100&offset=0) |
| GET | /jobs/queue/:queue |
Listar jobs por nombre de cola |
| GET | /stats |
Estadísticas de jobs |
| GET | /queues |
Interfaz Bull Board |
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /getFiscalDataSII |
Datos SII de ejemplo paginados (?period=&rut_receptor=&page=1) |
| POST | /sii_authenticate |
Autenticación SII simulada |
El esquema de la tabla jobs se encuentra en table_create.sql.