Skip to main content

4. Mapa de dominios y servicios REST

4. Diseño de Dominios y Agregados

4.1 Identity Access

  • Agregado: OperatorSession (invariantes: credenciales válidas, token vigente 24h). Entidades Operator, RoleProfile. Value Objects Credentials, JwtClaims.
  • Reglas: debe existir perfil activo retornado por legacy (O_PERFIL). Se propaga evento SessionCreated para auditoría.
  • Consistencia: ACID; repositorio transaccional.

4.2 Catalog Management

  • Agregados: Origin, Route, Zone. Value Objects GeoCoordinate, ProfileCode.
  • Invariantes: ruta no puede activarse sin zona habilitada y catálogo SIRLA actualizado < 24h.
  • Eventos: CatalogUpdated (trigger SIRLA sync). Consistencia eventual con caches (Redis) + versionado.

4.3 Trip Query

  • Agregados de lectura: TripView, TripTankView, TripStopView (materialized views).
  • Invariantes: reportes sólo exponen viajes PUBLICADOS; se actualizan vía eventos TripCheckpointRegistered y TicketIssued.
  • Consistencia: eventual mediante proyecciones (Outbox → Kafka → consumidores).

4.4 Trip Execution

  • Agregados: Trip, Checkpoint, TankMeasurement, Checkin.
  • Reglas: cada checkpoint requiere firma base64 y coordenadas válidas; mediciones exigen densidad y temperatura; Checkin valida evento y transferencia.
  • Eventos dominio: TripCheckpointRegistered, TripTankMeasured, TripCheckinRecorded.
  • Consistencia: ACID + outbox; idempotencia con Idempotency-Key.
  • Saga: orquesta con Ticketing/Quality (ver sección 8).

4.5 Dispatch Control

  • Agregados: DispatchOrder, Assignment.
  • Reglas: sincronización requiere existencia de viaje, validación de operador y transporte. Mantiene DispatchSyncJob para reintentos.
  • Eventos: DispatchSynced, DispatchSyncFailed.
  • Consistencia: eventual; se aplica patrón ACL para consumir BPEL legado hasta su retiro.

4.6 Ticketing

  • Agregados: Ticket, TicketSeal, TransferDetail.
  • Invariantes: sellos deben validarse (Quality), ticket único por controlInterno+evento. Genera TicketIssued, TicketCancelled.
  • Consistencia: ACID; idempotencia en generación.

4.7 Weighbridge

  • Agregado: WeighEvent (entrada, salida, diferencia). Value Object Weight.
  • Invariantes: Ent_Peso y Sal_Peso no negativos; calcula delta y marca EstatusActualizacion.
  • Eventos: WeighbridgeMeasurementCaptured.

4.8 Remittance

  • Agregado: RemittedVolume.
  • Reglas: litros totales = suma remisiones > 0; datos AS/400.
  • Eventos: RemittanceQueried (auditoría).

4.9 Quality Assurance

  • Agregados: SealInspection, VehicleValidation.
  • Reglas: sellos sin captura requieren justificación; vehículos combinan tractor+dolly+pipa únicos.
  • Eventos: VehicleValidated, SealAnomalyDetected.

5. Catálogo de Servicios REST

ContextoEndpointMétodoDescripciónIdempotentePaginaciónFiltros
identity/sessionsPOSTAutentica operadores y crea sesión.NoNo-
reference-data/origins/_searchPOSTConsulta orígenes disponibles.Nolimit, offset, sort
reference-data/profiles/&#123;perfil&#125;/originsGETObtiene orígenes por perfil.NoNo-
reference-data/routes/_searchPOSTConsulta rutas y zonas asignadas.NoNo-
trip-query/trips/_searchPOSTBusca viajes por operador, estatus y fecha.Nolimit, offset, sort
trip-query/trips/_search-by-typePOSTConsulta viajes por tipo/configuración.Nolimit, offset, sort
trip-query/trips/{idViaje}GETRecupera detalle resumido de viaje.NoNo-
trip-query/trips/{idViaje}/tanksGETConsulta tanques asociados a viaje.NoNoidSocio
trip-query/trips/{controlInterno}/stopsGETConsulta paradas y detalle de viaje.NoNo-
trip-execution/trips/{controlInterno}/checkpointsPOSTRegistra checkpoint y firma del responsable.No-
trip-execution/trips/{rowId}/tanksPOSTCaptura resultados de muestreo de tanques.No-
trip-execution/checkinsPOSTRegistra check-in en nodos o ranchos.No-
dispatch/orders/_searchPOSTConsulta despachos programados.Nolimit, offset, sort
dispatch/orders/{controlInterno}/syncPOSTSincroniza información de recolección vs despacho.No-
dispatch/orders/statusPOSTActualiza estatus masivo de despachos.No-
ticketing/ticketsPOSTGenera ticket de recolección.No-
ticketing/tickets/transfers/_searchPOSTConsulta tickets de transferencia.Nolimit, offset, sort
weighbridge/measurements/_searchPOSTConsulta datos de báscula.NoNo-
remittance/remissions/_searchPOSTConsulta litros remisionados.NoNo-
quality/seals/evaluationsPOSTEvalúa sellos buenos/malos.NoNo-
quality/seals/_searchPOSTConsulta bitácora de sellos.Nolimit, offset, sort
quality/vehicles/validatePOSTValida combinación de vehículo y accesorios.NoNo-