Vessel Operations
Diagrama de Flujo de Operaciones
Desde la preparación hasta el reporte final.
sequenceDiagram
participant P as Preparación
participant U as Usuario/Operador
participant App as Aplicación VIN Tracker
participant DB as Firebase Firestore
participant E as Escáner (Netum)
%% --- Fase 1: Preparación ---
P->>U: Capacitación sobre la app y dispositivos
P->>P: Configurar credenciales de Firebase en la App
P->>U: Entregar tablet/dispositivo con la app
P->>U: Entregar escáner Netum C750 emparejado
%% --- Fase 2: Inicio de Operación ---
U->>App: Abre la aplicación en el dispositivo
App->>DB: Solicita lista de operaciones existentes
DB-->>App: Envía lista de operaciones
App->>U: Muestra la interfaz principal
U->>App: Clic en "New Operation"
U->>App: Rellena "Vessel Name", "Voyage No."
U->>App: Selecciona tipo (Import/Export)
U->>App: Adjunta archivo de manifiesto (Excel)
U->>App: Clic en "Start Operation"
App->>DB: Crea un nuevo documento de operación
DB-->>App: Confirma creación
App->>U: Muestra panel de operación activa
%% --- Fase 3: Proceso de Escaneo (Unidad Manifestada) ---
U->>E: Escanea VIN de un vehículo
E->>App: "Escribe" el VIN en el campo de búsqueda + Enter
App->>App: Busca el VIN en el manifiesto activo
Note right of App: El VIN existe y está "Pending"
App->>DB: Actualiza el estado del VIN a "Loaded/Discharged"
DB->>DB: Guarda el timestamp y usuario
DB-->>App: Propaga el cambio a todos los dispositivos
App->>U: Actualiza la fila del VIN en la tabla (cambia color y estado)
App->>U: Limpia y reenfoca el campo de búsqueda
%% --- Fase 4: Proceso de Escaneo (Excepciones) ---
U->>E: Escanea VIN de un vehículo
E->>App: "Escribe" el VIN + Enter
App->>App: Busca el VIN en el manifiesto activo
alt VIN No Encontrado
Note right of App: El VIN no existe
App->>U: Muestra Pop-up: "¿Agregar como No Manifestado o Retorno?"
U->>App: Selecciona "No Manifestado"
App->>DB: Añade el nuevo VIN a la operación con estado "Unmanifested"
DB-->>App: Propaga el cambio
App->>U: Muestra el nuevo VIN en la tabla
else VIN ya Procesado
Note right of App: El VIN ya está "Loaded/Discharged"
App->>U: Muestra Pop-up: "VIN ya procesado"
U->>App: Clic en "Aceptar"
App->>U: Limpia y reenfoca campo de búsqueda
else VIN es un Retorno
Note right of App: El VIN tiene estado "Return"
App->>DB: Elimina el VIN de la operación
DB-->>App: Propaga el cambio
App->>U: Elimina el VIN de la tabla, notifica "Retorno completado"
end
%% --- Fase 5: Acciones Manuales ---
U->>App: Clic en el menú "Actions" de un VIN "Unmanifested"
U->>App: Selecciona "Match"
App->>U: Abre diálogo con lista de VINs pendientes y buscador
U->>App: Busca y selecciona el VIN correcto
U->>App: Clic en "Match VIN"
App->>DB: Transfiere datos del no manifestado al VIN correcto y borra el no manifestado
DB-->>App: Propaga el cambio
App->>U: Actualiza la tabla
%% --- Fase 6: Finalización de Operación ---
U->>App: Clic en el botón "Finish Operation"
App->>U: Muestra diálogo de confirmación
U->>App: Clic en "Accept"
App->>DB: Actualiza el estado de la operación a "Finished" y guarda el "endTime"
DB-->>App: Propaga el cambio
App->>U: Muestra estado "Finished"
U->>App: Clic en "Export Report"
App->>U: Genera y descarga archivo Excel con el resumen de la operación