Skip to content

Interação entre camadas

Visão fim a fim

As camadas de domínio funcionam como um pipeline lógico de decisão:

  1. demand define histórico válido.
  2. modeling define e governa o modelo autorizado.
  3. forecasting executa a previsão com controle de estado.
  4. shared sustenta o contrato comum entre todas as etapas.

Fluxo de dados e decisão

flowchart LR SH["shared (ids, tempo, UOM, erros)"] DE["demand (series e observações)"] MO["modeling (definição, instâncias, promoção)"] FO["forecasting (run e pontos)"] SH --> DE SH --> MO SH --> FO DE --> MO DE --> FO MO --> FO

Contratos entre camadas

Demand -> Modeling

modeling depende de SeriesKey para versionar e ativar instâncias por série.

Garantias esperadas de demand:

  • série ordenada;
  • granularidade consistente;
  • UOM homogênea;
  • identidade estável de SKU/loja.

Modeling -> Forecasting

forecasting depende de ModelInstance ativa e de HorizonSpec coerente.

Garantias esperadas de modeling:

  • no máximo uma instância ativa por série;
  • artifact_uri presente para instância ativa;
  • versão anterior consultável para fallback.

Shared -> Todas as camadas

shared impõe:

  • semântica única de tempo;
  • semântica única de UOM;
  • taxonomia consistente de erros.

Regras de acoplamento permitidas

  • demand e forecasting podem depender de tipos shared.
  • modeling pode depender de SeriesKey para escopo de instâncias.
  • nenhuma camada de domínio depende de adapters ou infraestrutura.

Responsabilidade por tipo de regra

Tipo de regraCamada dona
Identidade e tipos fundamentaisshared
Integridade do histórico observadodemand
Governança de versão e promoçãomodeling
Integridade da execução de previsãoforecasting

Como pensar evolução sem quebrar o domínio

  1. Se mudou regra de tempo/UOM, começar em shared.
  2. Se mudou semântica de série observada, começar em demand.
  3. Se mudou promoção/versão/estratégia, começar em modeling.
  4. Se mudou ciclo de inferência e fallback, começar em forecasting.

Checklist de impacto por mudança

  • A mudança afeta compatibilidade de granularidade?
  • A mudança afeta coerência de unidade de medida?
  • A mudança altera regra de promoção/instância ativa?
  • A mudança altera critério de conclusão de run?
  • A mudança mantém rastreabilidade em fallback degradado?