Pipeline: épicos via parent, sync resiliente e paralelização - #15
Merged
Conversation
Épicos (GitLab): - resolução de épico via Parent (work item hierarchy) + fallbacks REST/projetos - gitlab_epics.py: enriquecimento em lote, catálogo do grupo - backfill_epicos_mergeadas.py e audit_epicos_grupo.py Retenção / filtro de fechadas: - config.closed_exclude_days() lê MGI_CLOSED_EXCLUDE_DAYS em runtime; 0 = mantém todo o histórico (necessário para "Mergeadas por época") Resiliência e performance: - merge dates (gitlab_merges.py) e épicos-projetos (gitlab_epics.py) paralelizados com ThreadPoolExecutor (sessão por thread) - timeouts HTTP configuráveis por env (MGI_GITLAB_HTTP_TIMEOUT, RETRIES, RETRY_DELAY, MERGE_WORKERS, EPIC_WORKERS, GRAPHQL_TIMEOUT); timeout baixo evita 1 request travado segurar um worker - sync_supabase.py: DELETE de issue_participants em lotes (evita HTTP 414) Testes: - conftest: fixture autouse isola os.environ e flags do config por teste (evita vazamento do .env local entre testes) - 209 testes passando Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- gitlab_epics._buscar_issues_do_epico: sanitiza segmentos do path da URL (urllib.parse.quote no grupo + int no iid) — corrige S7044 (Security Rating) - pyproject: per-file-ignore E402 em atualizar_gitlab_issues.py (imports após _load_dotenv_early por design) - ruff --fix: remove import sys não usado (audit_epicos_grupo) e ordena imports do conftest Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
test_enriquecer_issues_com_epicos e test_aplicar_epicos_em_issues_retorna_vinculos dependiam do GITLAB_TOKEN real do .env (enriquecer_epicos_via_filhas_grupo retorna 0 sem token) — passavam local mas falhavam no CI (sem .env). Agora mockam _any_gitlab_token. conftest isola GITLAB_TOKEN* para os testes rodarem token-less como no CI (também elimina chamadas de rede reais: suíte de ~255s p/ ~6s). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Resumo
Torna o pipeline resiliente e correto para o KPI "Mergeadas por época".
Épicos (GitLab)
backfill_epicos_mergeadas.pyeaudit_epicos_grupo.pypara preencher/validar.Retenção do histórico
config.closed_exclude_days()lêMGI_CLOSED_EXCLUDE_DAYSem runtime; 0 = mantém todo o histórico (fechadas antigas não são mais podadas), necessário para o KPI de mergeadas.Resiliência e performance
sync_supabase.py: DELETE deissue_participantsem lotes (corrige HTTP 414 com muitas chaves).Testes
conftest: fixture autouse isolaos.environe flags doconfigpor teste (evita vazamento do.envlocal entre testes, que quebrava testes por ordem de execução).🤖 Generated with Claude Code