Confiabilidad en Desarrollo de Sistemas
La plataforma

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.

30,937reglas de negocio rescatadas del catálogo del legado
7,852tipos de operación
56fórmulas financieras, traducidas renglón por renglón
365pruebas automatizadas en verde (Python y Rust)

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.

Capturadores · UI · tercerosREST/JSON · SOAP 1.1 (/wsa/wsa1)Servicio HTTP (FastAPI)login, roles, sesiones, tokens de servicio, idempotencia, auditoríaCapa de plataforma (Python)posteo, repositorios, dialecto de base, modo sombra, parámetrosPyO3Núcleo de posteo (Rust, función pura)pack + reglas + fórmulas + calendario + foto de saldos → asientos y deltasBase por tenantPostgreSQL · SQL Server — catálogo versionado, libro append-only, saldos por horizonte
Un esquema por tenant, y el mismo núcleo sobre PostgreSQL o SQL Server. Al núcleo en Rust se llega desde Python por PyO3 y viaja compilado como rueda, así que el despliegue es una sola imagen.

Decisiones que explican todo lo demás

01

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.

02

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.

03

Un esquema por tenant

Respaldar, restaurar o entregar al regulador los datos de un cliente sin tocar los de los demás.

04

Dinero como texto en el cable, Decimal en memoria

Nunca flotante. Un 5.5 numérico en JSON se rechaza.

05

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.

06

La escalera de liquidación se calcula al leer

No se almacena reconstruida como en el legado, así que no puede desfasarse.

07

Clave de idempotencia obligatoria

Que corrige el error del legado en el que un reintento duplicaba la posición.

08

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.

20,029reglas
3,288tipos de operación
Operable: la mesa de dinero postea de punta a punta En SABI: Mercado de Dinero Prueba ancla y detalle

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.

764reglas
338tipos de operación
Operable, con costo promedio por escalón En SABI: Mercado de Capitales Prueba ancla y detalle

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.

426reglas
179tipos de operación
Reglas reales, módulo operable En SABI: Fondos de Inversión Prueba ancla y detalle

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.

72reglas
26tipos de operación
Operable: contado y plazo, por cuenta del cliente y propia En SABI: Mercado de Cambios Prueba ancla y detalle

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.

239reglas
85tipos de operación
Completo y operable: OTC y listados En SABI: Mercado de Derivados Prueba ancla y detalle

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.

331reglas
153tipos de operación
Completo En SABI: Tesorería Prueba ancla y detalle

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.

30,937reglas
7,852tipos de operación
Para exploración Prueba ancla y detalle

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.

No lo afirmamos

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.

No lo afirmamos

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.

No lo afirmamos

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.