Modelo de datos
Las tablas que hay detrás de Portline y quién puede leer y escribir en cada una.
Todas las tablas se encuentran en el esquema public con el prefijo pl_, y cada fila lleva un workspace_id. La seguridad a nivel de fila pasa por dos funciones auxiliares: pl.role_in(workspace) devuelve su rol, y pl.can(workspace, area, level) responde a "¿puede este usuario hacer esto aquí?", comprobando la pertenencia, las funciones del plan y el estado de la suscripción.
"Ver", "editar" y "aprobar" en las tablas siguientes se refieren al nivel en el área de esa tabla. "+ fleet" significa que el plan también debe incluir esa función.
Espacio de trabajo y personas
| Tabla | Contiene | Lectura | Escritura |
|---|---|---|---|
pl_workspaces | Nombre, slug, zona horaria | Miembros | Propietario (solo nombre y zona horaria) |
pl_subscriptions | Plan, estado, puestos, fin del periodo | Miembros | Solo el rol de servicio |
pl_members | Rol, nombre visible, cargo, correo electrónico | Miembros | Propietario y administrador, protegido por un trigger |
pl_notifications | Título, cuerpo, enlace, hora de lectura | Las suyas | Solo read_at |
pl_audit | Quién hizo qué y cuándo | Aprobar | Solo inserción a su propio nombre; nunca se actualiza |
Envíos y contenedores
| Tabla | Contiene | Lectura | Escritura |
|---|---|---|---|
pl_customers | Nombre y país del cliente | Ver | Editar |
pl_ports | UN/LOCODE, nombre, país, posición | Cualquier usuario con sesión iniciada | Rol de servicio |
pl_shipments | Código, cliente, ruta, modo, estado, carga, peso, contenedor, conductor, incoterm, ETD/ETA | Ver | Editar |
pl_shipment_stops | Puntos de control de la ruta en orden, horas previstas y reales | Ver | Editar |
pl_shipment_events | La línea de tiempo de "últimas actualizaciones" | Ver | Editar |
pl_documents | Conocimiento de embarque, declaración de aduana, facturas, con estado de revisión | Ver | Editar para subir; aprobar para revisar |
pl_containers | Número ISO 6346, tipo, punto de consigna del reefer, estado, posición | Ver | Editar |
pl_telemetry | Lecturas de temperatura de reefer | Ver + telemetry | Rol de servicio (flujo de sensores) |
Flota, almacenes y muelles
| Tabla | Contiene | Lectura | Escritura |
|---|---|---|---|
pl_assets | Camiones, buques y drones con estado y posición | Ver + fleet | Editar |
pl_drivers | Nombre, teléfono, transportista, camión, remolque, matrícula | Ver + fleet | Editar |
pl_warehouses | Sitio, ciudad, capacidad y m² ocupados | Ver + warehouses | Editar |
pl_zones | Zonas por sitio con su ocupación | Ver + warehouses | Editar |
pl_stock | SKU, producto, ubicación, existencias disponibles, punto de reorden, ETA | Ver + warehouses | Editar |
pl_dock_doors | Puertas por almacén y su tipo | Ver + docks | Aprobar |
pl_dock_appointments | Camión, transportista, sentido, horas, estado, entrada y salida | Ver + docks | Editar; la salida requiere la entrada |
Mensajes
| Tabla | Contiene | Lectura | Escritura |
|---|---|---|---|
pl_threads | Asunto, envío o conductor vinculado | Ver | Editar |
pl_messages | Autor, cuerpo, hora | Ver | Editar, como autor usted mismo |
pl_thread_reads | Dónde leyó cada miembro un hilo por última vez | Los suyos | Los suyos |
Funciones del plan
pl.plan_features replica el catálogo de planes de @portline/pricing, de modo que la base de datos y la aplicación coinciden en qué plan incluye qué función.
Id de la demo
El generador de la demo crea id con formato UUID a partir de claves estables. La carga inicial local usa el mismo generador, de modo que un envío tiene el mismo id y código en el modo demo y en el modo local.