Pular para o conteúdo principal

Padrões de Projeto

Este sistema segue práticas de arquitetura limpa e utiliza alguns padrões de projeto fundamentais para manter o código organizado, extensível e de fácil manutenção.


Domain-Driven Design (DDD)

O backend é modelado seguindo os princípios de Domain-Driven Design (DDD).
A ideia central é que o domínio do WMS (operações de armazém) é representado diretamente no código, com fronteiras bem definidas e responsabilidades claras.

Estrutura típica adotada:

  • Domain → Entidades, Value Objects, Regras de Negócio.
  • Application → Casos de uso, serviços de aplicação, orquestração de fluxo.
  • Infrastructure → Implementações técnicas (persistência, mensageria, APIs externas).
  • Presentation → Camada de entrada (APIs, Blazor, etc).

Desenho DDD

informação

Esse ponto central da arquitetura é o Core do WMS, que concentra toda a lógica de negócio. Ele é independente de aplicação e reutilizado por qualquer cliente ou serviço (Blazor Client, API de Integração, Serviço de Geração de Onda, etc), evitando duplicação de regras.

Benefícios:

  • Código mais próximo da linguagem do negócio.
  • Facilidade de evolução do domínio sem quebrar camadas técnicas.
  • Reaproveitamento da lógica de negócio em diferentes aplicações.
  • Testabilidade e clareza na modelagem.

Strategy

Nos módulos de Inteligência Artificial e no serviço de Geração de Onda, aplicamos o padrão Strategy.
Esse padrão permite definir diferentes algoritmos intercambiáveis para um mesmo processo, mantendo uma interface comum.

Exemplos no sistema:

  • Geração de Onda → diferentes estratégias de agrupamento de pedidos (por volume, por prioridade, por rota, etc).
  • IA → escolha de modelos ou algoritmos específicos para tomada de decisão em tempo de execução.

Benefícios:

  • Flexibilidade para trocar algoritmos sem alterar o restante do código.
  • Facilita testes e extensões de comportamento.
  • Promove aderência ao Open/Closed Principle (OCP).

📖 Referência: Strategy