NextSabi
NextSabi es la conversión de SABI a una plataforma de posteo genérica y multi-tenant, desplegable como SaaS o en la infraestructura del cliente. La tesis, verificada leyendo el fuente del legado: el núcleo transaccional no contiene lógica de negocio, es un intérprete de un catálogo de reglas. El trabajo fue rescatar esa abstracción, no inventarla.
Arquitectura en una página
Cinco capas, cada una con un trabajo. La que decide qué se postea es una función pura: se le da el pack, las reglas, las fórmulas, el calendario y una foto de saldos, y devuelve asientos y deltas, o un error tipado.
Decisiones que explican todo lo demás
El núcleo no hace entrada/salida
Recibe todo lo que necesita y devuelve asientos o un error tipado. Por eso es probable por mutación y portable entre motores de base de datos.
Las reglas son datos versionados y aprobables
No código. Un pack es el catálogo completo de un mercado, y varios packs conviven en el mismo tenant.
Un esquema por tenant
Respaldar, restaurar o entregar al regulador los datos de un cliente sin tocar los de los demás.
Dinero como texto en el cable, Decimal en memoria
Nunca flotante. Un 5.5 numérico en JSON se rechaza.
Cero aritmética de dinero en SQL
Y todo el SQL en un solo módulo. Es lo que hizo posible SQL Server en dos sesiones.
La escalera de liquidación se calcula al leer
No se almacena reconstruida como en el legado, así que no puede desfasarse.
Clave de idempotencia obligatoria
Que corrige el error del legado en el que un reintento duplicaba la posición.
Errores tipados con su código de legado al lado
Para que un consumidor existente siga leyendo el código de retorno que ya conoce.
Packs: el catálogo de un mercado
Un pack es el catálogo completo de una aplicación de posteo: sus dimensiones de clave de saldo, sus horizontes de liquidación, sus medidas, sus fórmulas de importe y sus reglas. Varios packs conviven en el mismo tenant, cada uno con su libro.
Los packs cubren los mismos mercados que SABI cubre hoy: dinero, capitales, fondos de inversión, cambios, derivados y tesorería, cada uno traducido atributo por atributo desde el catálogo real.
Mercado de Dinero
sabi-md
El pack más grande del catálogo. La mesa opera contra su propio inventario: abre posición, vende al cliente y lleva calendario de vencimientos e interés de cupón, con las 24 fórmulas del módulo.
Mercados de Capital
sabi-mc
Orden y asignación con comisión e IVA, y el costo promedio ponderado calculado en el escalón que corresponde.
Sociedades de Inversión
sabi-si
Catálogo de fondos, jornada, captura, blotter y baja. Multiseries, rangos de serie sin traslape, bloqueos y límites de tenencia.
Mercado de Cambios
sabi-cambios
La compraventa de divisas del catálogo, acotada al instrumento DLL: compra y venta de contado (CCD/VCD), a plazo (VCCA, VCCD, VVCA, VVCD) y sus garantías. Un pack propio, pensado para una casa de cambio o una fintech que sólo cambia moneda.
Mercado de Derivados
sabi-der
Dos mundos en un pack: OTC (forwards y swaps, con orden y asignación citando folio, como capitales) y listados con cámara, con aportaciones y variación diaria como en MexDer. 83 de sus 85 tipos operan.
Tesorería
sabi-tesoreria
Depósitos y retiros con las reglas reales del catálogo del legado, traducidas atributo por atributo. El pack con el que se probó primero que la traducción literal funciona.
Catálogo completo
sabi-catalogo
Todo el catálogo descifrado en un solo pack, para explorar qué hay antes de decidir qué mercado se convierte a continuación.
Todos los packs comparten la misma geometría: diez dimensiones de clave de saldo, ocho horizontes de liquidación acumulativos, medidas identificadas por nombre y horizonte, y las fórmulas de importe de la biblioteca del legado. Un mercado nuevo es un pack nuevo, no un motor nuevo.
El servicio HTTP
Todo lo que necesita un capturador, un portal o un tercero, con roles, sesiones y huella auditora en cada escritura.
- Posteo con clave de idempotencia obligatoria
- Saldos con la escalera de liquidación por horizonte
- Jornada: semáforo, horarios y cierres
- Catálogo de fondos con series, rangos, bloqueos y límites de tenencia
- Blotter y cancelación: postear un asiento ligado con razón tipificada, una sola reversa
- Modo sombra: capturas, reconciliación y divergencias intencionales firmadas
- Sesiones con scrypt y cookie HttpOnly; roles de administrador, operador y consulta
- Contraseña temporal con cambio obligatorio y revocación de sesiones
- Configuración por tenant con historial inmutable
- Errores uniformes con código tipado y el código de retorno del legado
Integración: SOAP de hoy, REST de mañana
Los dos servicios SOAP que SABI expone hoy se responden tal cual: WSDL, Fault, las dos generaciones de namespace, el XML plano dentro del payload y hasta la prosa «SISTEMA CERRADO». Las pruebas usan como oráculo el parser del consumidor real, copiado verbatim. Al lado vive su equivalente REST, con códigos tipados e idempotencia.
La consecuencia práctica: los sistemas ya integrados con SABI no tienen que cambiar el día en que la plataforma toma el relevo.
Despliegue y portabilidad
- PostgreSQL y SQL Server 2022 posteando el mismo corpus de reglas reales y empatando al centavo
- Veintidós garantías de esquema: libro append-only, unicidad de cancelación, versiones de reglas sin traslape
- Imagen Docker en dos etapas; el núcleo Rust viaja compilado como rueda de Python
- Demo reproducible: un comando regenera esquema, packs, administrador, parámetros y humo desde una base vacía
- Desplegable como SaaS o dentro de la infraestructura del cliente
- En camino: Oracle, certificación de concurrencia y OIDC para identidad federada
Lo que no afirmamos
El criterio de éxito no es «programas convertidos», es cero divergencias contra el legado al centavo. Por eso separamos siempre lo probado de lo supuesto y de lo que falta, y publicamos también la tercera lista.
Paridad al centavo contra producción
Todo está traducido literalmente y verificado contra oráculos trazados a mano, pero la prueba definitiva es el modo sombra corriendo al lado del legado.
Que el calendario, el IVA y las cuentas con ficha de crédito sean los reales
Están marcados como supuestos o como entradas hasta que lleguen los datos.
Cifras de latencia del prototipo de arbitraje
Corre con datos retrasados y ejecución simulada. No se promete ninguna cifra hasta medirla contra un feed real.
Verlo corriendo
La demostración es un guion de veinte minutos: abrir la jornada, capturar una compra y ver los asientos que genera el catálogo real, cancelarla desde el blotter, hacer un depósito y un retiro en tesorería, y responder el servicio SOAP actual desde el consumidor que ya lo usa.