Inicio> Casos de Exportación> Arquitectura de referencia para sistemas de operaciones logísticas

Arquitectura de referencia para sistemas de operaciones logísticas

Tipo de referenciaReferencia de aplicación
Materiales para revisarVue · Go · MySQL · Redis · Aplicación Android para conductores · API de mapas
Arquitectura de referencia para sistemas de operaciones logísticas

Referencia de aplicación. Se trata de una arquitectura ilustrativa y una lista de comprobación del alcance, no de un proyecto de cliente verificado ni de una implementación con resultados medidos. Las tecnologías, el alcance de la integración y los elementos de entrega se acuerdan para el encargo concreto.

Escenario y restricciones

Un operador logístico que sustituye las hojas de cálculo para la asignación de servicios y la facturación manual. Dos restricciones determinan el diseño: los conductores trabajan en zonas sin señal fiable y cada partida de factura debe poder justificarse cuando un cliente la impugna. Esto orienta el sistema hacia un registro de eventos de solo anexado como fuente de verdad, en lugar de una columna de estado que cualquiera pueda sobrescribir.

Arquitectura

Capas y responsabilidades

CapaTecnologíaResponsabilidad
Web de operacionesVue 3 + Element PlusRecepción de pedidos, panel de asignación, gestión de excepciones y revisión de facturación.
Aplicación del conductorAndroid (Kotlin), compatible con el modo sin conexiónLista de tareas, escaneo, fotos, firmas y registro de estados. Todo se guarda primero de forma local y se carga cuando hay conexión disponible.
Portal del clienteMiniprograma de WeChatSeguimiento de autoservicio; medir cualquier cambio en el volumen de consultas en vez de dar por sentada una reducción.
APIGo + GinValidación, reglas de asignación, recepción de eventos y cálculo de cargos.
AlmacenamientoMySQLEnvíos, eventos y liquidación. La tabla de eventos es de solo anexado y constituye el registro del sistema.
Caché / colaRedisAlmacenamiento en caché del panel de asignación, deduplicación de cargas y tareas en segundo plano para facturación y notificaciones.
ArchivosAlmacenamiento de objetosFotos y firmas de comprobantes de entrega, referenciadas por clave en lugar de almacenarse en la base de datos.

Modelo de datos

Las tablas siguientes contienen las reglas de las que depende todo lo demás. Si se definen mal, una demostración funcional puede convertirse en un sistema imposible de ampliar.

Entidades principales

EntidadCampos clave, relaciones y reglas
consignmentRegistro del envío: partes, direcciones, tipo de servicio, franjas horarias, peso y volumen declarados, y base de precios acordada al recibir el pedido.
shipment_eventDe solo anexado, con marca de tiempo, operador, ubicación, tipo de evento y carga útil. El estado actual se deriva del evento más reciente, no se almacena por separado; esto permite justificar la cronología en caso de disputa.
task / assignmentAsignación de conductor y vehículo con secuencia de paradas, además del historial de reasignaciones cuando se transfiere un trabajo.
pod_assetComprobante de entrega: claves de fotos y firmas, marca de tiempo de captura y ubicación del dispositivo, que se conservan como evidencia de la facturación.
charge / invoicePartidas de cargo generadas a partir de reglas aplicadas a los eventos registrados; cada una incluye el id del evento que la justifica. Por diseño, se rechaza toda partida de factura sin un evento trazable.
rate_cardReglas de precios específicas para cada cliente, basadas en peso, volumen, distancia, tiempo de espera y recargos, con control de versiones para que las facturas históricas sigan reproduciendo sus importes originales.

Interfaces clave

Endpoints que contienen las reglas de negocio

EndpointFinalidad y consideraciones de concurrencia
POST /api/v1/consignmentsRecepción de pedidos con geocodificación de direcciones y resolución de la tarifa en el momento de la creación, de modo que la base de precios quede fijada antes de que se ejecute el trabajo.
POST /api/v1/events/batchCarga masiva de eventos desde la aplicación del conductor tras un periodo sin conexión. Se deduplica mediante un UUID de evento del cliente y se almacena por separado la hora de captura y la hora de recepción para mantener la veracidad de la cronología.
POST /api/v1/tasks/{id}/podCarga firmas y fotos con la marca de tiempo de captura y devuelve claves de almacenamiento que se vinculan al consignment.
POST /api/v1/billing/runGenera partidas de cargo a partir de los eventos de un periodo. Es idempotente por (cliente, periodo), de modo que una nueva ejecución corrige los resultados en lugar de duplicarlos.
GET /api/v1/track/{no}Seguimiento público en caché que expone únicamente el subconjunto de eventos visible para el cliente.

Decisiones técnicas

  • Los eventos son la fuente de verdad; el estado es un valor derivado. Una columna de estado editable pierde el historial del que depende la gestión de disputas. Derivar el estado requiere una unión y proporciona un registro de auditoría completo y justificable.
  • La hora de captura y la hora de recepción se almacenan por separado. El escaneo de un conductor a las 14:02, cargado a las 17:30, debe mostrarse como ocurrido a las 14:02 con una demora de carga conocida; de lo contrario, cada zona sin conexión generará una cronología incorrecta.
  • UUID de eventos generados por el cliente. Reintentar cargas es normal con conexiones deficientes, por lo que la deduplicación debe basarse en un identificador que pertenezca al cliente.
  • Las tarifas tienen control de versiones, en lugar de editarse. Un cambio de precio no debe modificar silenciosamente las facturas del mes pasado, por lo que se conservan las versiones anteriores y los cargos históricos siguen apuntando a ellas.
  • La facturación se genera, pero no se emite automáticamente. Las reglas cubren los casos calculables; todo lo que requiera criterio humano se envía a una cola de revisión, en lugar de forzarse dentro de la automatización.

Objetivos de diseño hipotéticos

Las cifras siguientes son ejemplos hipotéticos para la planificación de capacidad, no resultados medidos de clientes, recomendaciones de dimensionamiento validadas ni un SLA. Establezca objetivos de aceptación específicos para el proyecto después de definir la carga de trabajo, los dispositivos, los datos, el hardware y las dependencias de terceros; verifíquelos mediante un piloto y pruebas de carga antes de comprometerse con un objetivo de producción.

Objetivos de capacidad y rendimiento

ObjetivoValor y supuesto
Recepción de eventosLotes de hasta unos cientos de eventos por carga, deduplicados y dimensionados para un conductor que regresa tras varias horas sin conexión.
Panel de asignaciónRenderiza el conjunto de trabajo activo en menos de 1 segundo, con filtrado y paginación en el servidor en vez de cargarlo todo en el navegador.
Ejecución de facturaciónLos eventos de un mes para un cliente se procesan como una tarea en segundo plano con informes de progreso; el tiempo de ejecución depende del volumen de eventos y se mide con sus datos reales durante la aceptación.
Carga de fotosComprimir y poner en cola localmente antes de la carga, reintentar en caso de fallo y verificar la retención, la confirmación y la recuperación en los dispositivos reales.

Qué incluye la entrega

  • Código fuente de la web de operaciones, el backend en Go, la aplicación Android para conductores y el miniprograma
  • Esquema de base de datos con documentación de las tablas de eventos y liquidación, además del historial de migraciones
  • Documentación de la API, incluido el contrato de carga sin conexión y deduplicación
  • Notas de despliegue, configuración del almacenamiento de objetos y procedimiento de copia de seguridad y restauración
  • Plan de migración de datos desde las hojas de cálculo existentes, con un informe de conciliación posterior a la importación

Planificación para su empresa

Los módulos anteriores son un punto de partida, no un paquete fijo. Normalmente limitamos la primera versión a un flujo de trabajo principal y uno administrativo; después ampliamos la solución cuando el uso real muestra dónde están la carga y los casos límite. Envíenos una descripción del alcance y la contrastaremos con esta arquitectura para indicarle qué partes todavía no necesita.

Imágenes de la aplicación

Sistema de operaciones para pequeñas empresas que sustituye las hojas de cálculo

Solicitar un presupuesto del proyecto

Cuéntenos sobre el objetivo del producto, el flujo de trabajo actual, la plataforma de destino, las limitaciones y el calendario de decisión. Revisaremos el alcance y recomendaremos un siguiente paso práctico.

Añadir requisitos del proyecto (opcional: ayuda a estimar el alcance y el coste)
Usamos estos datos únicamente para revisar y responder a su consulta de proyecto. Consulte nuestro aviso de privacidad. Por favor, no envíe contraseñas ni claves de API sensibles.