Pular para o conteúdo principal

ADR 002 — Dependências cross-feature permitidas

Status

Aceito (baseline legada)

Contexto

SGApi é monólito modular com features (Auth, Comercial, Geral, etc.). O código legado possui acoplamentos diretos entre features (ex.: ComercialGeral.Produtos, ComercialParametro).

Testes arquiteturais em tests/SGApi.ArchitectureTests bloqueiam novas dependências cross-feature não documentadas.

Decisão

  1. Manter baseline explícita em LegacyCrossFeatureBaseline.cs
  2. Toda nova dependência entre features de top-level distintos exige:
    • Entrada na baseline e
    • Justificativa neste ADR (ou PR referenciando-o)
  3. Compartilhamento preferencial via SGApi.Data, SGApi.Infra, SGApi.Utilities

Baseline atual (resumo)

OrigemDestinoMotivo
AuthGeralOperador, empresa no login
Comercial.*ParametroParâmetros de loja/SG
Comercial.*Geral.*Produtos, clientes, fornecedores
Geral.ProdutosComercial.MotivosAlteracaoEstoqueLegado grupo família
Geral.ClienteParametroConfiguração de crédito
DatabaseTodas entitiesSglinxDbContext

Lista completa: tests/SGApi.ArchitectureTests/LegacyCrossFeatureBaseline.cs

Consequências

  • PRs que aumentam acoplamento falham no CI até atualizar baseline + ADR
  • Refatorações que removem dependências podem limpar entradas da baseline