develop #23

Merged
jhony75 merged 6 commits from develop into main 2026-09-04 22:35:18 -03:00
Owner
No description provided.
feat: salvar cenário na biblioteca do ScenarioBuilder + docs de API externa
All checks were successful
EEG QA CI / validate-and-build (pull_request) Successful in 3m24s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
8bcc6a4108
- 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>
perf: chunk do Recharts vazava pra toda página + compressão/cache ausentes
All checks were successful
EEG QA CI / validate-and-build (pull_request) Successful in 3m17s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
a27404b353
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>
Merge pull request 'feat: salvar cenário na biblioteca + documentação de acesso externo à API' (#20) from feature/save-scenario-to-library-and-api-docs into develop
All checks were successful
EEG QA CI / validate-and-build (push) Successful in 2m44s
EEG QA CI / Deploy production (push) Has been skipped
EEG QA CI / Deploy development (push) Successful in 38s
1dfa85ced3
Reviewed-on: #20
feat: sincronizar Report com card do HubSpot (nota + PDF + estágio opcional)
All checks were successful
EEG QA CI / validate-and-build (pull_request) Successful in 2m21s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
d8b14cad04
Anexa o PDF do report como nota no ticket/deal vinculado (hubspot_url) e,
opcionalmente, move o estágio do pipeline. Disparo manual via botão na tela
do Report. Fica em routers/report_hubspot_sync.py (fora de modules/reporting)
pra não violar a fronteira Core/integrações do test_architecture.py.
Merge pull request 'perf: corrigir vazamento do chunk do Recharts + compressão/cache ausentes' (#21) from perf/frontend-load-time into develop
Some checks failed
EEG QA CI / Deploy production (push) Has been cancelled
EEG QA CI / Deploy development (push) Has been cancelled
EEG QA CI / validate-and-build (push) Has been cancelled
689a6e1c95
Reviewed-on: #21
Merge pull request 'feat: sincronizar Report com card do HubSpot' (#22) from feature/hubspot-card-sync into develop
All checks were successful
EEG QA CI / validate-and-build (push) Successful in 3m5s
EEG QA CI / Deploy production (push) Has been skipped
EEG QA CI / Deploy development (push) Successful in 43s
EEG QA CI / validate-and-build (pull_request) Successful in 2m3s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
b704e88e46
Reviewed-on: #22
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
jhony75/eeg-qa!23
No description provided.