application.engine
Papel na engine
application.engine é a orquestração operacional do módulo de inteligência. Ele conecta regras de domínio às integrações externas por meio de ports, mantendo o core desacoplado.
Módulo: application.engine.contracts
Tipos
FeatureFrame = Anyparamsem requests usamParamsMapdo domínio de modelagem (dict[str, JSONValue]).
Requests/Results
TrainRequest
Campos:
organization_idmodel_definition_idseries_keyhorizon_specfeature_frameparams: ParamsMap
TrainResult
Campos:
metrics: dict[str, float]artifact_uri: str | Noneartifact_payload: bytes | Nonetags: dict[str, str]
Pelo menos um entre artifact_uri e artifact_payload deve existir para persistência do candidato.
BatchTrainItem
Campos:
series_keyfeature_frame
BatchTrainRequest
Campos:
organization_idmodel_definition_idhorizon_specitems: tuple[BatchTrainItem, ...]params: ParamsMap
Regras:
itemsnão pode ser vazio;series_keydeve ser único dentro do batch.
BatchTrainSeriesResult
Campos:
series_keymetrics: dict[str, float]artifact_uri: str | Noneartifact_payload: bytes | Nonetags: dict[str, str]error: str | None
BatchTrainResult
Campos:
series_results: tuple[BatchTrainSeriesResult, ...]shared_artifact_uri: str | Noneshared_artifact_payload: bytes | Nonetags: dict[str, str]
Regras:
series_resultsnão pode ser vazio;- séries bem-sucedidas precisam resolver para artefato próprio ou compartilhado;
- falhas por série permanecem explícitas e não devem ser promovidas.
PredictRequest
Campos:
organization_idmodel_definition_idseries_keyhorizon_specfeature_frameartifact_uriparams: ParamsMap
PredictResult
Campos:
forecast_framemetricstags
EvaluationResult
Campos:
strategy_keymetrics
Módulo: application.engine.ports
Protocolos (ports):
ModelStrategytrain(request) -> TrainResultpredict(request) -> PredictResult
BatchTrainingStrategytrain_batch(request) -> BatchTrainResult
StrategyRegistryPortresolve(strategy_key) -> ModelStrategy
ExperimentTrackerPortstart_run(...) -> strstart_batch_run(...) -> strlog_params(...)log_tags(...)log_metrics(...)log_artifact(...)end_run(...)ArtifactStorePortstore_artifact(...) -> strstore_batch_artifact(...) -> str
ModelRegistryPortregister_model_version(...) -> RegisteredModelVersionpromote_model_version(...)deprecate_model_version(...)resolve_serving_target(...) -> ServingTarget
ForecastObservabilityPortrecord_forecast(telemetry)
RunQueuePortenqueue_training(...)enqueue_forecast(...)
ModelingRepositoryPortget_model_definition(...)save_model_definition(...)save_promotion_audit_record(...)list_promotion_audit_records(...)
ForecastingRepositoryPortsave_forecast_run(...)
DemandReadRepositoryPortlist_series(...)
Módulo: application.engine.registry
InMemoryStrategyRegistry
Implementação simples em memória de StrategyRegistryPort.
Métodos:
register(strategy_key, strategy)resolve(strategy_key)
Comportamentos:
- normaliza chave da estratégia para slug;
- rejeita registro duplicado;
- falha para chave desconhecida.
Módulo: application.engine.policy
passes_thresholds(instance, thresholds, primary_metric) -> bool
Valida se candidato atende limites de promoção.
select_champion(candidates, primary_metric, thresholds) -> ModelInstance | None
Seleciona campeão entre candidatos viáveis.
- direção
MIN: menor valor da métrica primária; - direção
MAX: maior valor da métrica primária.
Módulo: application.engine.use_cases
Comandos e resultados
TrainCandidatesAndPromoteChampionCommand(model_definition_id)ActivateModelInstanceCommand(model_definition_id, series_key, version, actor_id, reason, metric_snapshot, serving_alias)ActivationResult(series_key, promoted_version, strategy_key, metrics, registered_model_name, registered_model_version, serving_alias, audit_id)PromotionResult(series_key, promoted_version, strategy_key, metrics)RunForecastWithFallbackCommand(run, series)
train_candidates_and_promote_champion(...) -> list[PromotionResult]
Orquestra treino de candidatos por estratégia e promoção de campeão por série.
Pontos-chave:
- captura o
ModelVersioncorrente antes de gerar candidatos; - resolve params de treino a partir do snapshot congelado dessa versão;
- lê
StrategySpec.training_mode(seriespor default,batchvia opt-in); - mantém o fluxo legado para estratégias single-series;
- usa
train_batch(...)apenas para estratégias batch-capable; - aceita resultado misto em lote e só cria instâncias para séries bem-sucedidas;
- preserva promoção, ativação e versionamento por
SeriesKey; - vincula cada
ModelInstancecriada aomodel_versionusado no treino; - permite compartilhar
artifact_uriemlflow_run_identre instâncias do mesmo lote. - quando
model_registryé fornecido, persiste candidatos antes da promoção e delega a ativação paraactivate_model_instance(...).
activate_model_instance(...) -> ActivationResult
Promove explicitamente uma instância já treinada para um alvo servível.
Pontos-chave:
- cria
PromotionAuditRecordem estadoPENDING; - registra versão concreta no registry quando necessário;
- grava metadados de registry na
ModelInstance; - promove a instância no agregado de domínio;
- sincroniza o alias operacional (
championpor default); - persiste auditoria em
COMPLETEDouFAILED.
run_forecast_with_fallback(...) -> ForecastRun
Orquestra previsão com tentativa primária e fallback para versão anterior.
Pontos-chave:
- falha sem instância ativa;
- resolve params de predição a partir do
model_versionarmazenado na instância; - marca execução degradada quando fallback é usado;
- sempre persiste run no repositório de forecasting.
- pode emitir
ForecastTelemetryviaForecastObservabilityPortsem acoplar observabilidade ao domínio.