develop #23
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "develop"
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?
- 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>Achado real por trás de "as páginas estão demorando": o chunk do Recharts (~565 KB) não ficava isolado na rota de Métricas como a documentação dizia — manualChunks: { charts: ['recharts'] } (atalho por nome de pacote) deixava o Rollup livre pra decidir onde colocar react/react-dom (usados em toda página), e ele colocava os dois dentro do mesmo chunk do Recharts, criando um import estático do bundle principal pro chunk gigante. Toda página baixava esse chunk, não só Métricas. Corrigido com manualChunks(id) explícito (isola react/react-dom em vendor-react, separado de charts) + modulePreload.resolveDependencies (o Vite ainda injetava <link rel="modulepreload"> pro chunk de charts no index.html por padrão). Validado com vite preview + Resource Timing API em porta/cache limpos: página inicial cai de ~223 KB pra ~64 KB transferidos, e só a rota de Métricas baixa os 113 KB (gzip) de charts. Mais três causas encontradas no caminho, menores mas reais: - Fonte do Google Fonts saía de @import dentro do CSS (bloqueia carregamento em série) pra <link rel="preconnect"> + <link rel="stylesheet"> no index.html, descoberto em paralelo desde o parse do HTML. - nginx do frontend não tinha Cache-Control pros assets com hash do Vite — agora immutable/max-age longo pros hasheados, no-cache pro index.html (pra nunca servir um index.html velho apontando pra assets que sumiram). - Nem Traefik nem nginx comprimiam respostas. Adicionado middleware compress no Traefik (compose.yaml), cobrindo API + frontend + docs de uma vez, no mesmo padrão de label já usado pro Basic Auth. Testado localmente com Docker indisponível neste sandbox (daemon não acessível) — validado via `vite build`/`vite preview` real + inspeção do bundle gerado (grep pela string do chunk, Resource Timing API) em vez de um teste end-to-end do container; a config do nginx/Traefik foi revisada com cuidado mas não rodou dentro de um container de fato. 37/37 testes de backend e 8/8 de frontend passando. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>