Início> Casos de Exportação> Arquitetura de referência de sistema de operações logísticas

Arquitetura de referência de sistema de operações logísticas

Tipo de referênciaReferência de aplicação
Materiais para análiseVue · Go · MySQL · Redis · Aplicativo Android do motorista · API de mapas
Arquitetura de referência de sistema de operações logísticas

Referência de aplicação. Esta é uma arquitetura ilustrativa e uma lista de verificação de escopo, não um projeto de cliente verificado nem uma implementação medida. As tecnologias, o escopo de integração e os itens de entrega são acordados para o briefing real.

Cenário e restrições

Uma operadora logística que substitui o despacho por planilhas e o faturamento manual. Duas restrições orientam o design: os motoristas trabalham em áreas sem sinal confiável, e cada linha da fatura deve ser justificável quando um cliente a contesta. Isso direciona o sistema para um registro de eventos somente para acréscimo como fonte de verdade, em vez de uma coluna de status que qualquer pessoa possa substituir.

Arquitetura

Camadas e responsabilidades

CamadaTecnologiaPelo que é responsável
Web de operaçõesVue 3 + Element PlusEntrada de pedidos, painel de despacho, tratamento de exceções e revisão do faturamento.
Aplicativo do motoristaAndroid (Kotlin), com suporte offlineLista de tarefas, leitura, foto, assinatura e captura de status. Tudo é gravado primeiro localmente e enviado quando há conexão disponível.
Portal do clienteMini programa do WeChatAcompanhamento self-service; medir qualquer alteração no volume de consultas, em vez de presumir uma redução.
APIGo + GinValidação, regras de despacho, ingestão de eventos e cálculo de cobranças.
ArmazenamentoMySQLRemessas, eventos e liquidação. A tabela de eventos é somente para acréscimo e constitui o registro oficial do sistema.
Cache / filaRedisCache do painel de despacho, deduplicação de uploads e tarefas em segundo plano para faturamento e notificações.
ArquivosArmazenamento de objetosFotos e assinaturas de comprovantes de entrega, referenciadas por chave em vez de armazenadas no banco de dados.

Modelo de dados

As tabelas abaixo contêm as regras das quais todo o restante depende. Errar aqui é o que transforma uma demonstração funcional em um sistema que não pode ser ampliado.

Entidades principais

EntidadeCampos-chave, relações e regras
consignmentRegistro da remessa: partes, endereços, tipo de serviço, janelas de horário, peso e volume declarados e a base de preços acordada na entrada.
shipment_eventSomente para acréscimo, com registro de data e hora, operador, localização, tipo de evento e payload. O status atual é derivado do evento mais recente, não armazenado separadamente — é isso que torna a linha do tempo defensável em uma contestação.
task / assignmentDesignação de motorista e veículo com sequência de paradas, além do histórico de redistribuição quando uma tarefa é transferida.
pod_assetComprovante de entrega: chaves de fotos e assinaturas, registro de data e hora da captura e localização do dispositivo, mantidos como evidência por trás do faturamento.
charge / invoiceLinhas de cobrança geradas a partir de regras aplicadas aos eventos registrados, cada uma contendo o ID do evento que a justificou. Uma linha de fatura sem evento rastreável é rejeitada por definição.
rate_cardRegras de preços específicas por cliente, por peso, volume, distância, tempo de espera e sobretaxa, versionadas para que as faturas históricas continuem reproduzindo seus valores originais.

Interfaces principais

Endpoints que transportam as regras de negócio

EndpointFinalidade e observações sobre concorrência
POST /api/v1/consignmentsEntrada do pedido com geocodificação do endereço e resolução do tarifário aplicável no momento da criação, para que a base de preços seja fixada antes da execução da tarefa.
POST /api/v1/events/batchUpload em lote de eventos do aplicativo do motorista após uma interrupção de conectividade. Deduplicado por um UUID de evento do cliente e com o horário de captura armazenado separadamente do horário de recebimento, para que a linha do tempo permaneça fiel.
POST /api/v1/tasks/{id}/podFaz upload da assinatura e das fotos com o horário de captura, retornando chaves de armazenamento que são anexadas à remessa.
POST /api/v1/billing/runGera linhas de cobrança a partir dos eventos de um período. Idempotente por (cliente, período), para que uma reexecução corrija o resultado do faturamento, em vez de duplicá-lo.
GET /api/v1/track/{no}Acompanhamento público, armazenado em cache, que expõe somente o subconjunto de eventos visível ao cliente.

Decisões técnicas

  • Eventos como fonte de verdade, status como valor derivado. Uma coluna de status editável perde o histórico do qual o tratamento de contestações depende. Derivar o status custa uma junção e proporciona uma trilha de auditoria completa e defensável.
  • Horário de captura e horário de recebimento armazenados separadamente. A leitura feita por um motorista às 14:02 e enviada às 17:30 deve aparecer como 14:02, com um atraso de upload conhecido; caso contrário, toda área offline produzirá uma linha do tempo incorreta.
  • UUIDs de eventos gerados pelo cliente. Reenvios são normais em conexões ruins, portanto a deduplicação precisa ocorrer com base em um identificador que o cliente controla.
  • Tarifários versionados em vez de editados. Uma alteração de preço não deve reescrever silenciosamente as faturas do mês passado, portanto as versões antigas permanecem e as cobranças históricas continuam apontando para elas.
  • Faturamento gerado, mas não emitido automaticamente. As regras abrangem os casos calculáveis; tudo que exige julgamento humano vai para uma fila de revisão, em vez de ser forçado à automação.

Metas hipotéticas de design

Os números abaixo são exemplos hipotéticos de planejamento de capacidade, não resultados medidos de clientes, uma recomendação de dimensionamento validada nem um SLA. Defina metas de aceitação específicas do projeto depois de determinar a carga de trabalho, os dispositivos, os dados, o hardware e as dependências de terceiros; verifique-as por meio de um piloto e de testes de carga antes de se comprometer com uma meta de produção.

Metas de capacidade e desempenho

MetaValor e pressuposto
Ingestão de eventosLotes de até algumas centenas de eventos por upload, deduplicados e dimensionados para um motorista que retorna após várias horas offline.
Painel de despachoRenderiza o conjunto de trabalho ativo em menos de 1 segundo, com filtragem e paginação no servidor, em vez de carregar tudo no navegador.
Execução do faturamentoUm mês de eventos de um cliente processado como tarefa em segundo plano com relatório de progresso; o tempo de execução varia conforme o volume de eventos e é medido com base nos seus dados reais durante a aceitação.
Upload de fotosComprimir e colocar em fila localmente antes do upload, repetir em caso de falha e verificar retenção, confirmação e recuperação nos dispositivos reais.

O que a entrega inclui

  • Código-fonte da web de operações, do backend Go, do aplicativo Android do motorista e do mini programa
  • Esquema do banco de dados com as tabelas de eventos e liquidação documentadas, além do histórico de migrações
  • Documentação da API, incluindo o contrato de upload offline e deduplicação
  • Notas de implantação, configuração do armazenamento de objetos e procedimento de backup e restauração
  • Plano de migração de dados das planilhas existentes, com relatório de reconciliação após a importação

Planejamento para sua empresa

Os módulos acima são um ponto de partida, não um pacote fixo. Normalmente reduzimos a primeira versão a um fluxo de trabalho principal e um fluxo administrativo, e depois ampliamos quando o uso real mostra onde a carga e os casos extremos realmente estão. Envie um briefing com escopo e nós o mapearemos nesta arquitetura e informaremos quais partes você ainda não precisa.

Imagens da aplicação

Sistema de operações para pequenas empresas que substitui planilhas

Solicitar uma estimativa do projeto

Conte-nos sobre o objetivo do produto, o fluxo de trabalho atual, a plataforma-alvo, as restrições e o cronograma de decisão. Analisaremos o escopo e recomendaremos um próximo passo prático.

Adicionar requisitos do projeto (opcional — ajuda a estimar o escopo e o custo)
Usamos estes dados apenas para analisar e responder à sua consulta de projeto. Consulte nosso aviso de privacidade. Por favor, não envie senhas nem chaves de API sensíveis.

Demo Solutions