Herramientas de usuario

Herramientas del sitio


ada:howto:sicoferp:factory:new-migracion-sicoferp:local-storage

Almacenamiento local: Machine vs RutaPAE

Visión general

  • Machine: almacena datos detallados de entrega con biometría local.
  • RutaPAE: almacena referencias a máquinas, entregas sincronizadas y estado de operador.

Machine - MachineData

La aplicación Machine mantiene una base de datos local completa para procesar entregas de manera autónoma.

Entidades principales

1. ''Delivery''

Almacena cada entrega procesada localmente.

Campos clave:

  • id: PK autoincrementada
  • registeredAt: timestamp de creación
  • weight: peso capturado en gramos
  • beneficiaryPhotoPath: ruta local a foto del beneficiario
  • alimentPhotoPath: ruta local a foto del producto
  • similarity: similitud del embedding con base de datos (0-1)
  • beneficiaryId: FK a Beneficiary
  • machineEnrollmentShiftId: FK a MachineEnrollmentShift
  • processTimeMs: tiempo total de procesamiento
  • deliveryMs: timestamp en milisegundos de la entrega
  • machineGeneratedBeneficiaryId: ID temporal generado por la máquina
  • serverDeliveryId: ID remoto asignado después de sincronización

Relaciones:

  • muchas entregas por beneficiario
  • muchas entregas por turno

2. ''Beneficiary''

Datos del beneficiario registrados localmente.

Campos clave:

  • id: PK autoincrementada
  • embedding: vector de 512 dimensiones (COSINE)
  • name: nombre del beneficiario
  • enrollmentId: ID de inscripción local
  • remoteBeneficiaryId: ID remoto del servidor
  • lastRecognitionAtMs: última vez que fue reconocido
  • machineEnrollmentShiftId: FK a MachineEnrollmentShift

Relaciones:

  • muchos beneficiarios por turno
  • muchas entregas por beneficiario

3. ''MachineEnrollmentShift''

Información técnica de las asignaciones remotas de la máquina.

Campos clave:

  • id: PK autoincrementada
  • campusOfferId: ID de oferta de campus remota
  • campusOfferPlaces: cupos disponibles
  • campusId: ID del campus
  • campusName: nombre del campus
  • campusCode: código institucional
  • modalityId: ID de modalidad
  • modalityTypeName: nombre de modalidad
  • shiftId: ID del turno
  • shiftName: nombre del turno
  • gradeId: ID del grado
  • gradeName: nombre del grado
  • active: indicador de turno activo

Relaciones:

  • una por asignación remota de máquina
  • muchos beneficiarios por turno
  • muchas entregas por turno

4. ''MinutaMenuDue''

Snapshot local de las jornadas operativas del día descargadas desde backend.

Campos clave:

  • id: PK remota de la minuta
  • dueDate: fecha/hora programada
  • started: fecha/hora de inicio reportada por backend
  • ended: fecha/hora de cierre reportada por backend
  • deliveries: entregas registradas en backend
  • deliveriesDue: meta remota esperada
  • modalityId: modalidad a la que pertenece la jornada

Uso principal:

  • permitir que Machine construya una vista operativa de jornadas con paridad respecto a la Maquina #1
  • ocultar duplicados visibles cuando existen varias asignaciones (MachineEnrollmentShift) que pertenecen a la misma jornada del día

Proyección operativa

La UI principal ya no lista MachineEnrollmentShift crudo como si fuera una jornada final. Ahora calcula una OperationalShift en memoria a partir de:

  • MachineEnrollmentShift locales
  • MinutaMenuDue del día
  • conteo agregado de entregas

Reglas principales:

  • la unidad técnica sigue siendo MachineEnrollmentShift
  • la unidad visible para el operador es la jornada operativa del día
  • varias asignaciones con la misma modalidad y mismo turno visible se unifican en una sola tarjeta
  • si una modalidad válida no tiene MinutaMenuDue de hoy en el snapshot local, la UI conserva fallback con la asignación técnica para no esconder jornadas reales
  • al seleccionar una tarjeta, se activa un MachineEnrollmentShift representante para no romper el flujo interno de la Maquina #2
  • la card de sincronización usa el conteo de jornadas visibles mostrado en pantalla; el detalle de progreso conserva el conteo técnico de asignaciones

Persistencia

  • Base de datos: SQLite con ORM personalizado VectorDB
  • Índices: índice vectorial local para búsquedas de similitud
  • Operaciones: lectura/escritura local sin red (excepto sincronización)

RutaPAE - RutaPAEData

La aplicación RutaPAE mantiene una vista sincronizada de máquinas y entregas para el operador de ruta.

Entidades principales

1. ''Delivery''

Almacena entregas descargadas desde máquinas remotas.

Campos clave:

  • id: PK autoincrementada
  • registeredAt: timestamp de creación en máquina
  • weight: peso de la entrega
  • latitude: coordenada GPS de la entrega
  • longitude: coordenada GPS de la entrega
  • campusId: ID del campus
  • modalityId: ID de modalidad
  • benefitPhoto: URL remota de foto del beneficiario
  • beneficiaryEnrollmentId: ID de inscripción del beneficiario
  • beneficiaryPhoto: URL remota de foto del beneficiario
  • beneficiaryName: nombre del beneficiario
  • machineGeneratedBeneficiaryId: ID temporal de la máquina
  • processTimeMs: tiempo de procesamiento en la máquina
  • deliveryMs: timestamp de la entrega en máquina
  • idLocalDeliveryT: ID local de entrega en máquina (PK remota)
  • idMachineTmp: identificador temporal de máquina
  • url: URL remota de la entrega
  • photosUrl: URL remota de colección de fotos
  • checkDuplicateUrl: URL para verificación de duplicados
  • serverDeliveryId: ID asignado por servidor
  • machineId: FK a Machine (la máquina de origen)
  • synchronized: bandera de confirmación de sincronización

Relaciones:

  • muchas entregas por Machine

2. ''Machine''

Datos de máquinas descubiertas/conectadas.

Campos clave:

  • id: PK autoincrementada
  • machineId: identificador único
  • name: nombre descriptivo
  • unsyncedDeliveries: entregas no descargadas aún
  • enrolledBeneficiaries: beneficiarios inscritos
  • unenrolledBeneficiaries: beneficiarios no inscritos
  • currentDeliveries: entregas en curso
  • totalGoal: objetivo de entregas
  • modalityTypeName, shiftName, gradeName, campusName: contexto
  • machineStatus: estado P2P (Active/Inactive/Error)
  • weight: peso o valor relativo
  • active: máquina activa seleccionada
  • stateName: nombre del estado
  • localSyncedDeliveries: entregas ya descargadas localmente

Relaciones:

  • una por dispositivo máquina
  • muchas entregas por Machine

Persistencia

  • Base de datos: SQLite con ORM VectorDB
  • Operaciones: lectura/escritura local, sincronización vía P2P
  • Estado transiente: sincronización en progreso, máquina actual

Diferencias principales

Aspecto Machine RutaPAE
Propósito Procesar entregas Gestionar entregas remotas
Beneficiary Embedding vectorial 512d —(no almacena)
Delivery fotos Rutas locales al dispositivo URLs remotas
MachineEnrollmentShift Asignaciones técnicas de máquina —(no almacena)
MinutaMenuDue Jornada operativa del día —(no almacena)
Machine —(no almacena) Múltiples máquinas
Sincronización Envía a servidor HTTP Descarga de máquinas vía P2P
Contexto Biométrico + peso Geolocalización + estado

Estrategia de sincronización

Machine → Servidor

  • Entregas locales se envían al backend HTTP.
  • Fotos se suben a servidor.
  • Se recibe serverDeliveryId.

Máquina → RutaPAE (P2P)

  • RutaPAE solicita DELIVERIES_PAGE a la máquina.
  • Descarga P2PDeliveryData para cada entrega.
  • Almacena localmente con machineId de origen.
  • Al confirmar sincronización, la máquina marca como procesada.

RutaPAE → Usuario

  • Lista entregas sincronizadas con Machine.
  • Muestra estado de sincronización (nuevas, presentes, errores).
  • Permite visualizar fotos remotas y datos geográficos.
ada/howto/sicoferp/factory/new-migracion-sicoferp/local-storage.txt · Última modificación: 2026/04/07 20:02 por 10.1.62.149