Pular para o conteúdo principal

Especificações Gerais

A camada de infraestrutura (Infra) fornece os meios técnicos para suportar o domínio e a aplicação, encapsulando detalhes de persistência, integrações e serviços auxiliares. Seu objetivo é manter a lógica de negócio isolada de preocupações técnicas, garantindo desacoplamento e flexibilidade.


Divisão em Projetos

A camada está organizada em dois projetos principais:

  1. Infra.Data

    • Responsável pela persistência de dados.
    • Estrutura modular com múltiplos DbContexts e repositórios específicos por escopo.
    • Baseada em Entity Framework Core, mas com suporte a Dapper/SQL para cenários de alta performance.
    • Suporte a multi-tenancy, isolando dados por cliente/instância.
  2. Infra.AiModels

    • Responsável pela integração com modelos de inteligência artificial.
    • Utiliza o padrão Strategy para permitir múltiplos modelos de IA sob a mesma interface.
    • Centraliza a configuração de IoC (Dependency Injection) via Extensions.
    • Facilita a inclusão de novos modelos de IA sem impacto nas camadas superiores.

Padrões Aplicados

  • Repository Pattern
    • Implementação base em EF Core (RepositoryBase).
    • Repositórios específicos organizados por módulo/domínio.
  • Strategy Pattern
    • Aplicado no projeto de IA, permitindo a troca de modelos dinamicamente.
  • Dependency Injection (IoC)
    • Configuração centralizada via Extensions.
    • Serviços, repositórios e estratégias registrados no container de DI.

Boas Práticas Adotadas

  • Isolamento de responsabilidades → Data e AI são separados em projetos distintos.
  • Flexibilidade de persistência → EF como padrão, Dapper/SQL como alternativa.
  • Modularidade → tanto repositórios quanto contextos seguem uma estrutura segmentada por subdomínio.
  • Escalabilidade → novos módulos, contextos ou estratégias de IA podem ser adicionados sem alterar código existente.
  • Reutilização → abstrações comuns e helpers evitam duplicação de lógica técnica.
aviso

A camada de infraestrutura é um alicerce técnico do WMS. Ela não contém regras de negócio, mas oferece os recursos necessários para que o domínio e a aplicação funcionem de forma desacoplada, performática e escalável.