feat: rollback de deploy, Issue N:N, nota calculada, React Router 7, BDD/Gherkin #28
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/combined-perf-quality"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Combina as 4 PRs #24, #25, #26 e #27 numa só, a pedido — eram independentes entre si (todas baseadas em
develop), mas tinham sobreposição real de arquivo (main.py,models.py,schemas.py,docs/BACKLOG.md) e duas migrations irmãs (Issue N:N e BDD/Gherkin nasceram as duas de573520d0fbe5). Resolvi cada conflito manualmente e reencadeei a migration do BDD/Gherkin pra depender da do Issue N:N em vez de serem irmãs — cadeia final linear, testada com round-trip upgrade->downgrade->upgrade completo.O que entra
overall_scoredeixa de ser preenchido à mão..feature— Given/When/Then/And/But opcional em todo passo de cenário, parser de texto colado, export Gherkin de verdade (conecta complaywright-bdd, mas ainda exige step definitions escritas à mão — isso é inerente ao BDD).Verificação
scripts/test-deploy-remote.shpassando (inclusive os cenários de restore de banco).PRs originais (#24, #25, #26, #27) ficam como referência do histórico/discussão de cada decisão — a menos que prefira fechá-las, não fechei nenhuma.
Achado deixa de pertencer a um único report: o mesmo defeito reaparecendo em builds/reports diferentes agora é o mesmo Issue sendo reanexado, não uma cópia — status (Aberto/Em correção/Verificado/Fechado) e severidade ficam num lugar só, compartilhados por todo report que o referencia. - Migration 9f3d2a1c7b44: tabela report_issues (N:N), backfill sem perda de dado, origin_report_id como proveniência (não dono). - API: PUT/DELETE /api/reports/{id}/issues/{issue_id} (anexar/desanexar sem duplicar), GET /api/issues (listagem global com filtros), GET /api/issues/{id} (detalhe + traceability — reports que o referenciam), PATCH /api/issues/{id} (edição, com closed_at automático). - Report.overall_score deixa de ser preenchido à mão — vira calculado (severidade dos achados abertos + status) em compute_overall_score. - Frontend: telas /achados e /achados/:id, IssuePicker pra anexar achado existente em vez de duplicar, nota geral exibida como somente leitura. - CI: --expect-alembic atualizado pro novo head.Passo de cenário (biblioteca, Report, Run) ganha palavra-chave opcional (Given/When/Then/And/But). steps continua aceitando string simples (comportamento antigo) ou {description, keyword} — pode misturar os dois na mesma lista, sem quebrar quem já manda string. - gherkin_parser.py (novo, motor genérico): parse_gherkin extrai nome/ descrição/passos de texto colado em Gherkin (POST /api/scenarios/ parse-gherkin, botão "Extrair como Gherkin" no fluxo de colar texto que já existia); to_feature_text exporta um cenário da biblioteca como .feature de verdade (GET /api/scenario-templates/{id}/feature). - Migration 4c8a1f9d2e63: keyword em test_step_templates e test_run_steps. - Frontend: seletor de palavra-chave em todo lugar que cria/edita passo (ScenarioBuilder, compartilhado por Report/Run/Biblioteca), exibição com prefixo da palavra-chave onde já existia leitura, botão .feature na Biblioteca. - Rodar o .feature de verdade (ex.: playwright-bdd) ainda exige escrever as step definitions — inerente ao BDD, não dá pra gerar isso a partir de texto livre. - Scenario Outline/Examples (dado parametrizado) deliberadamente fora de escopo por ora.