Skip to content

[feat] Disable Unhealthy Flow Schedules #976

@Winzen

Description

@Winzen

Disable Unhealthy Flow Schedules

Contexto

Precisamos de um comando que:

  • Desative automaticamente flows no Prefect que apresentaram falhas recentes
  • Avalie se um flow deve ser desativado com base na última execução da task run_dbt
  • Permita rodar em modo dry-run, logando quais flows seriam desativados sem alterá-los

Objetivos

  • Criar um comando Django mínimo (disable_unhealthy_flow_schedules)
  • Implementar classes de domínio (Task, TaskRun, FlowRun, FlowDisable)
  • Implementar serviço (FlowService) com integração GraphQL
  • Permitir execução dry-run
  • Garantir parsing correto de datas para comparações precisas
  • Organizar código em módulos separados para legibilidade e testabilidade
  • Configurar variável de ambiente para autenticação Prefect
  • Adicionar dependências necessárias no Poetry
  • Criar rotina que rode o comando automaticamente (cron job / schedule)

Tasks

  • Criar pasta _disable_unhealthy_flow_schedules dentro de management/commands/
  • Criar constants.py para queries GraphQL e nomes de tasks/estados
  • Criar datetime_utils.py com funções parse_datetime e one_week_ago
  • Criar models.py com Task, TaskRun, FlowRun, FlowDisable
  • Criar service.py com MakeClient e FlowService
  • Implementar função disable_unhealthy_flow_schedules(dry_run=False)
  • Implementar modo dry-run para logar flows sem desativar
  • Criar comando Django mínimo disable_unhealthy_flow_schedules.py
  • Garantir parsing e comparação correta de datas ISO
  • Organizar imports e dependências entre módulos
  • Criar diagrama visual de dependências e fluxo de execução (para documentação interna / PR)
  • Adicionar nova variável de ambiente para a key do Prefect no Secret do pod
  • Adicionar dependências necessárias para o Poetry (gql, loguru, faker, python-dotenv, etc)
  • Criar rotina agendada que execute o comando automaticamente em produção

Observações

  • Todas as datas são tratadas como datetime naive, no mesmo formato recebido (%Y-%m-%dT%H:%M:%SZ)
  • Dry-run é útil para verificar fluxos sem alterar estado de produção

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions