2025 — presente
Reportia — gestión contable multiempresa
Fundador y autor único — CtisEvolution
Impacto
Un contador o gerente gestiona varias empresas desde una sola cuenta, con sincronización real contra SIIGO Pyme y reportes de comisiones que se actualizan solos — sin depender de que alguien note a mano cuándo un dato quedó desactualizado.
El problema
SIIGO Pyme, el software contable de escritorio más usado en Colombia, no tiene API pública. Cualquier sistema que necesite hablar con él tiene que inventarse su propia forma de hacerlo — y encima resolver multiempresa, reportes de comisiones y procesamiento de archivos Excel pesados sin trabar la aplicación mientras tanto.
El enfoque
Como SIIGO no expone API, la sincronización se resuelve con un servicio intermediario propio que ejecuta comandos en una máquina Windows real donde corre SIIGO. El ciclo es asíncrono de punta a punta: el backend genera un UUID de correlación, lo guarda con estado "procesando", dispara el comando, y el resultado — un archivo Excel — vuelve minutos después por un endpoint separado que cierra el ciclo contra ese mismo UUID. Un servicio de monitoreo aparte detecta y limpia solo los comandos que quedan "zombis" más de dos horas sin respuesta.
El procesamiento de Excel pesado corre en un worker de background con colas (Redis + BullMQ), no en el request del usuario. El reporte de comisiones se sirve desde una vista materializada de Postgres que se refresca sola — pero esa parte tuvo un bug real de concurrencia: si una carga caía justo dentro de la ventana de throttle del refresh, el sistema podía quedar con el flag de "actualización pendiente" colgado indefinidamente, sin ningún mecanismo que lo notara. La solución fue un worker con un job recurrente que revisa ese estado cada cinco minutos y fuerza el refresco si lo encuentra colgado — y un segundo ajuste al día siguiente, porque el reintento con backoff exponencial estaba configurado pero nunca se pasaba de verdad a la cola, así que un fallo transitorio esperaba en silencio al próximo ciclo en vez de reintentarse.
Todo esto corre con una pirámide de pruebas real: tests unitarios con cobertura mínima exigida en CI, tests de integración contra una base Postgres real levantada en Docker, y e2e con Playwright — no una capa de humo para quedar bien.
Resultado
Un contador o gerente gestiona varias empresas desde una sola cuenta, con sincronización real contra SIIGO Pyme y reportes de comisiones que se actualizan solos — sin depender de que alguien note a mano cuándo un dato quedó desactualizado.