feat: salvar cenário na biblioteca + documentação de acesso externo à API #20
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/save-scenario-to-library-and-api-docs"
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?
Resumo
Três pedidos desta rodada:
POST/GET/PUT/DELETE /api/reports+duplicate). Documentado emdocs/API.mdcomo usar de fora do navegador: mesmo Basic Auth compartilhado do Traefik (provisório até o Authelia, ver ADR-0004), com exemplos decurlpra criar/listar/ler.docs/BACKLOG.md(P2) pra não ficar esquecido.ScenarioBuilder.jsx(compartilhado entre "Novo report",ReportDetail,RunFormeRunDetail) ganha um checkbox "Também salvar esse cenário na biblioteca" — usa o endpointPOST /api/scenario-templatesque já existia (sem exigir suíte). Escondido emLibrary.jsx, onde isso já é a ação principal.Outras correções encontradas no caminho
bruno/Reports/Create Report.bruedocs/generate_bruno_collection.pytinham o exemplo de payload desatualizado desde o split doeeg(campos soltos em vez de aninhados). Corrigido.docs/openapi.jsonregenerado a partir da aplicação real — estava desatualizado desde antes desta sessão de refactors.Test plan
pytestno backend: 37/37 passando (nenhuma mudança de backend nesta PR, só validação de regressão)vitestno frontend: 8/8 passando- ScenarioBuilder.jsx ganha um checkbox "Também salvar esse cenário na biblioteca". Quando marcado, além de adicionar o cenário ao Report/Run em edição, chama POST /api/scenario-templates (endpoint que já existia, sem exigir suíte) pra criar o mesmo cenário como template reutilizável. Funciona em qualquer lugar que usa o componente compartilhado — "Novo report" (ReportForm), ReportDetail, RunForm e RunDetail. Escondido via showSaveToLibrary={false} no próprio Library.jsx, onde salvar na biblioteca já é a ação principal (seria redundante). Falha ao salvar na biblioteca não descarta o preenchimento — mostra o erro e não adiciona o cenário, pra não perder silenciosamente uma ação que o usuário pediu explicitamente. - docs/API.md ganha uma seção "Acesso externo": a API de Reports já é CRUD completo (create/list/read/update/delete/duplicate) usada pelo próprio frontend, sem endpoint separado pra integrações externas — autenticação é o mesmo Basic Auth compartilhado do Traefik (provisório até o Authelia substituir, ver ADR-0004), com exemplos de curl pra criar/listar/ler. - bruno/Reports/Create Report.bru e docs/generate_bruno_collection.py estavam com o payload de exemplo desatualizado desde o split do eeg (has_photic/has_cardio/has_video soltos em vez de aninhados em "eeg"). Corrigido só o necessário (não regenerei a coleção inteira — o gerador produz uma quebra de linha final diferente da que já estava commitada, o que sujaria todos os 53 arquivos sem nenhuma mudança de conteúdo real). - docs/openapi.json regenerado a partir da aplicação real (script determinístico, sem edição manual) — estava desatualizado desde antes desta sessão (extração de módulos, split do eeg, Report.run). Nenhuma mudança de contrato de API nem de schema — só documentação, exemplo e uma funcionalidade de conveniência na UI. 37/37 testes de backend e 8/8 de frontend passando. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>