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).

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