Previsão com fallback
Contexto operacional
Este é o fluxo que protege a plataforma durante inferência. Quando o modelo ativo falha, a engine tenta automaticamente uma versão anterior para reduzir indisponibilidade de previsão.
Caso de uso
run_forecast_with_fallback recebe:
RunForecastWithFallbackCommand(run=<ForecastRun>, series=<DemandSeries>)
Dependências:
ModelingRepositoryPortForecastingRepositoryPortStrategyRegistryPortForecastObservabilityPort(opcional)DomainToColumnarPort | ColumnarToDomainPort
Saída:
ForecastRunfinalizado emCOMPLETEDouFAILED.
Sequência de execução
- Valida correspondência
command.series.key == run.series_key. - Carrega
ModelDefinition. - Coloca run em
RUNNING. - Converte histórico para frame.
- Resolve instância ativa da série.
- Tenta previsão primária.
- Se falhar, tenta fallback com versão anterior.
- Persiste run com resultado final.
- Emite telemetria de inferência quando
ForecastObservabilityPortestá configurado.
Estados do ForecastRun
REQUESTED: run criado.RUNNING: execução em andamento.COMPLETED: previsão válida concluída.FAILED: nenhuma execução válida possível.
Semântica de fallback degradado
Quando fallback funciona:
degraded = Truefallback_from_version = <versão ativa que falhou>executed_model_version = <versão de fallback que executou>
Regras de consistência:
- versões de fallback e execução devem ser diferentes;
degraded=Falsenão permitefallback_from_version;- run concluído exige quantidade de pontos igual ao horizonte.
Telemetria operacional
Quando a porta de observabilidade é injetada, cada execução gera um payload com:
requested_model_versionexecuted_model_versionfallback_from_versiondegradedstatusfailure_reasonhorizon_sizeprediction_volumeduration_ms
Isso torna visível o uso de fallback sem depender de leitura direta da base de forecast runs.
Exemplo de inicialização
from domain.forecasting.model import ForecastRunfrom domain.modeling.model import HorizonSpecfrom domain.shared.value_objects import TimeGrain, UomCode
run = ForecastRun( organization_id=series.key.organization_id, model_definition_id=model_definition.id, model_version=2, series_key=series.key, horizon_spec=HorizonSpec(periods=2, grain=TimeGrain.DAILY, step=1), expected_uom=UomCode("EA"),)Falhas mais comuns
- Sem instância ativa para a série.
artifact_uriausente na instância usada na previsão.- UOM prevista diferente da UOM esperada.
- Sequência temporal de pontos fora do
stepconfigurado. - Execução degradada recorrente sinalizando problema do modelo ativo em produção.