feat: Issue vira entidade própria (N:N com Report) + nota geral calculada #24
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/issue-first-class-and-score"
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?
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.
9f3d2a1c7b44: tabelareport_issues(N:N), backfill sem perda de dado,origin_report_idcomo proveniência (não dono).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 referenciam o achado),PATCH /api/issues/{id}(edição, comclosed_atautomático).Report.overall_scoredeixa de ser preenchido à mão — vira calculado (severidade dos achados abertos + status) emservices.reports.compute_overall_score./achadose/achados/:id,IssuePickerpra anexar achado existente em vez de duplicar, nota geral exibida como somente leitura.--expect-alembicatualizado pro novo head.test_issues.py) + suíte completa (59) passando; verificado manualmente end-to-end (criar achado, anexar em 2 reports, fechar o achado e ver as duas notas recalcularem, detach preserva o achado, delete global remove de todos).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.Pull request closed