Interação entre camadas
Visão fim a fim
As camadas de domínio funcionam como um pipeline lógico de decisão:
demanddefine histórico válido.modelingdefine e governa o modelo autorizado.forecastingexecuta a previsão com controle de estado.sharedsustenta 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_uripresente 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
demandeforecastingpodem depender de tiposshared.modelingpode depender deSeriesKeypara escopo de instâncias.- nenhuma camada de domínio depende de adapters ou infraestrutura.
Responsabilidade por tipo de regra
| Tipo de regra | Camada dona |
|---|---|
| Identidade e tipos fundamentais | shared |
| Integridade do histórico observado | demand |
| Governança de versão e promoção | modeling |
| Integridade da execução de previsão | forecasting |
Como pensar evolução sem quebrar o domínio
- Se mudou regra de tempo/UOM, começar em
shared. - Se mudou semântica de série observada, começar em
demand. - Se mudou promoção/versão/estratégia, começar em
modeling. - 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?