Capacidades
TankOS integra en una sola plataforma todos los flujos que requiere una operación de tanques grado custody transfer: desde la medición de campo hasta el ticket PDF auditado, pasando por laboratorio, ingeniería y reportes. Los seis módulos operan sobre los mismos datos y comparten el log de auditoría.
Qué resuelve cada módulo
Operación SCADA en tiempo real
El dashboard de operación presenta el estado de todos los tanques del patio en tres modos: Tabla (filas densas, hasta 100 tanques sin paginación), Tarjetas (cuadrícula con SVG del tanque y KPIs clave) y Barras (comparación por métrica ordenable). El detalle de tanque muestra los volúmenes MPMS (TOV/GOV/GSV/NSV), masa, temperatura, nivel de agua y ullage con frescura de laboratorio en tiempo real.
Las alarmas se notifican vía WebSocket con tres niveles de severidad (CRÍTICA / MAYOR / MENOR), se acusan desde la UI con registro del operador, y se consultan sin salir del dashboard.
Motor de cálculo MPMS
El pipeline determinístico de 18 etapas implementa API MPMS Cap. 11.2 y Cap. 12.1: TOV → GOV → GSV → NSV → Masa, con factores CTSh / CTL / CPL / CSW y tablas 6A (crudo), 6B (refinados) y 6C (lubricantes). Cada ciclo emite el estado del cálculo, la cadena de fallbacks aplicada y las advertencias activas.
El engine es un paquete TypeScript puro sin dependencias de framework, testeable con fixtures de referencia con tolerancia < 1×10⁻⁶.
Laboratorio
El flujo de muestras tiene 7 estados (borrador → pendiente → aprobado / rechazado / anulado / cancelado / invalidado) con separación de funciones forzada a nivel de servidor: quien envía una muestra no puede aprobarla.
Al aprobar, la gravedad API y el BSW se proyectan al tanque en menos de 5 segundos y el motor de cálculo los adopta en el siguiente ciclo. Los adjuntos (imagen/PDF) se archivan con retención de 7 años.
Custodia (custody transfer)
Los lotes de despacho, recepción y traslado pasan por 9 estados con captura de aforo en tres capas: snapshot de telemetría, valor del operador y registro de divergencias con umbral configurable. La numeración de tickets es gap-free (contador transaccional con aislamiento serializable — nunca hay huecos en la secuencia).
Cada ticket PDF/A incluye todos los factores del cálculo, no sólo el resultado final.
Ingeniería
El workspace de ingeniería cubre la configuración completa: sitios, patios, tanques (5 geometrías), tablas de aforo (strapping) —configurables en milímetros → metros cúbicos o en pie · pulgada · fracción → barriles—, dispositivos de campo y plantillas de alarma. El canvas de patio permite posicionar tanques en un plano drag&drop. Las importaciones masivas desde Excel son transaccionales (todo-o-nada con previsualización en seco).
TankOS almacena todo internamente en SI (mm, m³, kg, °C, kPa) y convierte sólo al renderizar: dashboard, detalle de tanque, tablas de aforo, tickets y reportes pueden mostrarse íntegramente en imperial (pie-pulgada-fracción y barriles) mediante el conmutador SI ⇄ Imperial, sin pérdida de precisión. La planta opera en su unidad de trabajo habitual conservando la exactitud del cálculo custody.
Reportes y auditoría
Cuatro tipos de reporte automático en PDF: diario (24 snapshots horarios), balance de masa (entradas vs. salidas vs. delta de inventario), inventario (snapshot de cierre) y movimientos (lotes ticketados del período).
El log de auditoría es inmutable: toda mutación del sistema registra quién / qué / cuándo / antes / después, IP y timestamp. La retención mínima es de 7 años con backup automático (WAL continuo + snapshot diario, RPO < 5 minutos). Cualquier cálculo reciente es reproducible desde el visor de auditoría.
Todo el pipeline SCADA → laboratorio → custodia → reporte es trazable en un único log de auditoría. Los factores CTSh/CTL/CPL/CSW que generaron el volumen de un ticket se consultan desde la UI sin acceder a la base de datos directamente.