Sitios, patios y canvas
El primer paso para montar TankOS es definir dónde viven los tanques. La estructura física de la instalación se modela como una jerarquía de tres niveles que el ingeniero configura desde el módulo de Ingeniería. Esta página explica la jerarquía, las listas de sitios y patios, y el canvas visual donde se disponen los tanques dentro de cada patio.
La jerarquía Site → Yard → Tank
TankOS organiza la planta en tres niveles anidados:
| Nivel | Qué representa | Ejemplo |
|---|---|---|
| Sitio (Site) | Una instalación o refinería completa | Refinería El Palito |
| Patio (Yard) | Una zona delimitada dentro del sitio (un dique, un grupo de tanques) | Patio Norte |
| Tanque (Tank) | Cada tanque de almacenamiento individual | TK-401 |
Esta jerarquía es el aislamiento lógico del sistema: TankOS es de una sola organización por
despliegue (single-tenant on-prem), de modo que la separación entre zonas, productos y equipos de
trabajo no se modela con multi-tenancy sino con esta estructura Site → Yard → Tank combinada con
el control de acceso por rol (RBAC).
El tag de cada tanque (su código corto, p. ej. TK-401) es único por patio — la combinación
(patio, tag) no se repite. Dos patios distintos pueden tener cada uno un tanque TK-01 sin conflicto.
TankOS guarda las alturas en milímetros, los volúmenes en metros cúbicos, las temperaturas en grados Celsius y las presiones en kilopascales. La conversión a unidades imperiales (pies, pulgadas, barriles) ocurre únicamente al mostrar los datos en pantalla, nunca en el almacenamiento.
Lista de sitios
En Ingeniería › Sitios se gestionan los sitios de la instalación. La tabla muestra el código,
el nombre y el conteo de patios de cada sitio. Desde la barra de herramientas, el botón
Nuevo sitio abre el formulario de creación (disponible para los perfiles de ingeniero y
administrador).

Cada fila ofrece acciones para editar, archivar o restaurar un sitio. Cuando aún no hay sitios creados, la pantalla muestra un estado vacío que invita a crear el primero.
Lista de patios
En Ingeniería › Patios se gestionan los patios. La tabla lista el código, el nombre y el
sitio al que pertenece cada patio. El botón Nuevo patio abre el formulario de creación, y
cada fila permite editar, archivar o restaurar.
Screenshot pendiente del barrido diferido — ver 61-DEFERRED-SWEEP.md.
Canvas de patio
El canvas de patio (Ingeniería › Patios › <patio> › Patio) es la vista visual donde se disponen
los tanques tal como están físicamente en el terreno. Es la herramienta clave para que el operador
reconozca de un vistazo qué tanque es cuál.
El canvas funciona así:
- Diques (drag-and-drop). El patio se compone de uno o más diques. El botón de la barra de
herramientas abre el
DikeCreateDialogpara crear un dique nuevo; los diques se arrastran y sueltan para reordenarlos dentro del lienzo. - Grilla por dique. Cada dique contiene una grilla de filas × columnas (
row×col). Cada celda de la grilla representa la posición de un tanque. - Render del tanque. Cada celda ocupada dibuja el
TankSVGdel tanque correspondiente, de modo que el canvas reproduce el plano del patio. - Inspector lateral. Al seleccionar una celda, se abre el InspectorRail a un costado con los detalles del tanque seleccionado y accesos a su configuración.
La disposición se persiste por revisión: la posición de cada tanque se guarda como (dikeId, row, col),
y cada patio mantiene su propia revisión de layout (YardLayoutRevision). Esto permite versionar
los cambios de disposición sin perder el historial.
Screenshot pendiente del barrido diferido — ver 61-DEFERRED-SWEEP.md.
El canvas ofrece además vistas alternativas (Grilla / Lista / Tabla) desde la barra de herramientas, para revisar la misma información en formato tabular cuando convenga.
Concurrencia: edición simultánea del layout
El layout del patio usa bloqueo optimista: cada revisión lleva un número de versión (patioVersion).
Si dos personas editan la disposición del mismo patio al mismo tiempo, TankOS detecta la divergencia y
evita que un cambio sobrescriba silenciosamente al otro.
Cuando el patioVersion de tu sesión difiere del que tiene el servidor — porque otro usuario guardó el
layout mientras editabas — aparece el StaleVersionBanner. Antes de continuar, recarga la vista para
traer la última revisión y vuelve a aplicar tus cambios sobre ella. No fuerces el guardado: perderías el
trabajo del otro usuario.
Screenshot pendiente del barrido diferido — ver 61-DEFERRED-SWEEP.md.
Siguiente paso
Con la estructura física definida, el siguiente paso es configurar cada tanque en detalle: identidad, geometría, propiedades de cálculo, tablas de aforo, dispositivos y alarmas. Continúa con el editor de tanque.
Si necesitas ubicarte en el conjunto del manual, vuelve a la introducción del manual o consulta la guía de uso por rol.