release: promove develop pra produção (metrics na run v1.3, Runner Contract 429/422/dedup, imagens em itens de Validação Técnica, envio ao HubSpot) #83

Merged
jhony75 merged 11 commits from develop into main 2026-10-14 17:43:17 -03:00
Owner

O que é

Promove para produção as 4 PRs mescladas em develop depois da release #79. O dev já está rodando esse conteúdo (deploy do último commit do develop concluído com sucesso).

Principais mudanças

  • #80 — Automation Contract v1.3: campo opcional metrics (dict livre) no nível da run em POST /api/automation/runs, guardado em TestRun.metrics e devolvido em GET /api/runs/{id}. Aditivo, sem tela. Inclui o override do tinypool (2.2.0) no package.json do frontend, que destravou o npm audit crítico no CI (dependência só de teste, não vai pro bundle).
  • #81 — Runner Contract: POST /api/runners/{id}/jobs passa a tratar 429 (fila cheia) e 422 (pedido inválido, com o detail do runner) com mensagem própria em vez de 502 genérico; id repetido (deduplicated: true) reaproveita o job existente. Sem migration.
  • #82 — Imagens por item de Validação Técnica: POST/GET /api/technical-validation-items/{id}/images (base64, legenda opcional), PUT /api/images/{id} (legenda); imagens na tela de edição e embutidas no DOCX/PDF abaixo de cada item. Limites: 10 MiB, PNG/JPEG/GIF/WebP, 20 por item.
  • #84 — Validação Técnica → HubSpot: POST /api/technical-validations/{id}/hubspot-sync (+ GET .../hubspot-stages) anexa o PDF da validação como nota no deal vinculado e, se pedido, move o estágio (disparo manual, botão "Enviar ao HubSpot"). Link de ticket é recusado e o campo de ticket sai da tela. Sem migration.

Migrations (2 novas, ambas aditivas, rodam no deploy)

  • 0b41b961aa5b — coluna test_runs.metrics (JSON, nullable).
  • 214c24985940 — colunas images.technical_validation_item_id (FK com cascade) e images.caption, mais índice.
  • Cadeia única de heads, round-trip upgrade/downgrade, alembic check e restore drill ok. O CI passa a esperar 214c24985940.

Pendências conhecidas

  • O envio ao HubSpot (#84) nunca foi testado contra o HubSpot real (só com mock): o token precisa dos scopes de escrita (notes, files e, para mover estágio, deals) e o primeiro envio deve ser conferido num deal de teste.
  • As imagens de validação só passam a ser usadas pelo fluxo de validação de cliente (qa-project) depois deste deploy; até lá os endpoints novos não existem em prod.
  • Os runners (Yago/Linux) ainda não estão registrados no Cockpit e a validação ao vivo Cockpit → runner não foi feita; a VPS precisa alcançar os IPs da Tailscale deles.
  • A confirmação das variáveis GARAGE_* no .env de produção (herdada da release #79) continua valendo.

Verificação

  • develop sem conflito com main; CI do develop verde, incluindo o deploy de dev.
  • Backend: 302 testes; frontend: tsc/lint/172 testes/build ok.

🤖 Generated with Claude Code

## O que é Promove para produção as 4 PRs mescladas em `develop` depois da release #79. O dev já está rodando esse conteúdo (deploy do último commit do `develop` concluído com sucesso). ## Principais mudanças - **#80 — Automation Contract v1.3:** campo opcional `metrics` (dict livre) no nível da run em `POST /api/automation/runs`, guardado em `TestRun.metrics` e devolvido em `GET /api/runs/{id}`. Aditivo, sem tela. Inclui o override do `tinypool` (2.2.0) no `package.json` do frontend, que destravou o `npm audit` crítico no CI (dependência só de teste, não vai pro bundle). - **#81 — Runner Contract:** `POST /api/runners/{id}/jobs` passa a tratar `429` (fila cheia) e `422` (pedido inválido, com o `detail` do runner) com mensagem própria em vez de `502` genérico; id repetido (`deduplicated: true`) reaproveita o job existente. Sem migration. - **#82 — Imagens por item de Validação Técnica:** `POST/GET /api/technical-validation-items/{id}/images` (base64, legenda opcional), `PUT /api/images/{id}` (legenda); imagens na tela de edição e embutidas no DOCX/PDF abaixo de cada item. Limites: 10 MiB, PNG/JPEG/GIF/WebP, 20 por item. - **#84 — Validação Técnica → HubSpot:** `POST /api/technical-validations/{id}/hubspot-sync` (+ `GET .../hubspot-stages`) anexa o PDF da validação como nota no **deal** vinculado e, se pedido, move o estágio (disparo manual, botão "Enviar ao HubSpot"). Link de ticket é recusado e o campo de ticket sai da tela. Sem migration. ## Migrations (2 novas, ambas aditivas, rodam no deploy) - `0b41b961aa5b` — coluna `test_runs.metrics` (JSON, nullable). - `214c24985940` — colunas `images.technical_validation_item_id` (FK com cascade) e `images.caption`, mais índice. - Cadeia única de heads, round-trip upgrade/downgrade, `alembic check` e restore drill ok. O CI passa a esperar `214c24985940`. ## Pendências conhecidas - O envio ao HubSpot (#84) nunca foi testado contra o HubSpot real (só com mock): o token precisa dos scopes de escrita (notes, files e, para mover estágio, deals) e o primeiro envio deve ser conferido num deal de teste. - As imagens de validação só passam a ser usadas pelo fluxo de validação de cliente (qa-project) depois deste deploy; até lá os endpoints novos não existem em prod. - Os runners (Yago/Linux) ainda não estão registrados no Cockpit e a validação ao vivo Cockpit → runner não foi feita; a VPS precisa alcançar os IPs da Tailscale deles. - A confirmação das variáveis `GARAGE_*` no `.env` de produção (herdada da release #79) continua valendo. ## Verificação - `develop` sem conflito com `main`; CI do `develop` verde, incluindo o deploy de dev. - Backend: 302 testes; frontend: tsc/lint/172 testes/build ok. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat: Automation Contract v1.3 -- campo metrics agregado no nivel da run
Some checks failed
EEG QA CI / Detectar o que mudou (pull_request) Successful in 9s
EEG QA CI / Frontend (pull_request) Failing after 1m14s
EEG QA CI / Backend (pull_request) Successful in 1m55s
EEG QA CI / Build e publicação de imagens (pull_request) Has been skipped
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
539b774b0d
Runner passou a medir duracao, espera na fila e pico de CPU/RAM por run;
TestRun.metrics (JSON livre, opcional) guarda isso sem validacao de chaves,
devolvido em GET /api/runs/{id}. Aditivo: payloads v1/v1.1/v1.2 inalterados.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
feat: Runner Contract -- trata 429, 422 e deduplicacao do runner em POST /runs
All checks were successful
EEG QA CI / Detectar o que mudou (pull_request) Successful in 7s
EEG QA CI / Frontend (pull_request) Has been skipped
EEG QA CI / Backend (pull_request) Successful in 1m53s
EEG QA CI / Build e publicação de imagens (pull_request) Successful in 1m58s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
78a8aa7d28
429 (fila cheia) e 422 (pedido invalido) chegam ao usuario com o motivo em vez
de virar 502 generico; id repetido (deduplicated) reaproveita o job existente.
Sem migration; runner que so devolve {"id"} segue identico.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
feat: imagens por item de Validacao Tecnica (API, tela, DOCX e PDF)
Some checks failed
EEG QA CI / Detectar o que mudou (pull_request) Successful in 7s
EEG QA CI / Frontend (pull_request) Failing after 53s
EEG QA CI / Backend (pull_request) Successful in 1m47s
EEG QA CI / Build e publicação de imagens (pull_request) Has been skipped
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
1042731913
Itens aceitam varias imagens com legenda opcional (POST/GET
/api/technical-validation-items/{id}/images, PUT /api/images/{id}); aparecem
na tela de edicao e embutidas abaixo do item nos exports. Limites: 10 MiB,
PNG/JPEG/GIF/WebP, 20 por item. Reaproveita a tabela images (migration
214c24985940).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
fix: sobe tinypool pra versao corrigida (npm audit critico bloqueava o CI do frontend)
All checks were successful
EEG QA CI / Detectar o que mudou (pull_request) Successful in 6s
EEG QA CI / Backend (pull_request) Successful in 2m0s
EEG QA CI / Frontend (pull_request) Successful in 2m57s
EEG QA CI / Build e publicação de imagens (pull_request) Successful in 3m41s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
b13cf27e78
Novos advisories criticos (GHSA-5gmw-xhrv-c9v3, GHSA-85c8-ppgw-ccpr) em
tinypool <=2.1.1, dependencia transitiva do vitest 3.2.6 (so ferramenta de
teste, nao vai pro bundle). A unica correcao pelo audit e o vitest 5 (breaking);
um override pra tinypool 2.2.0 zera os criticos e os 168 testes seguem passando.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Merge pull request 'feat: Automation Contract v1.3 -- metrics agregado no nível da run' (#80) from feature/automation-run-metrics into develop
All checks were successful
EEG QA CI / Detectar o que mudou (push) Successful in 7s
EEG QA CI / Backend (push) Successful in 1m49s
EEG QA CI / Frontend (push) Successful in 2m43s
EEG QA CI / Build e publicação de imagens (push) Successful in 1m56s
EEG QA CI / Deploy production (push) Has been skipped
EEG QA CI / Deploy development (push) Successful in 38s
bebcf7c47a
Merge remote-tracking branch 'origin/develop' into feature/orchestration-runner-extensions
All checks were successful
EEG QA CI / Detectar o que mudou (pull_request) Successful in 5s
EEG QA CI / Frontend (pull_request) Has been skipped
EEG QA CI / Backend (pull_request) Successful in 1m56s
EEG QA CI / Build e publicação de imagens (pull_request) Successful in 1m57s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
dbc4010e24
Merge pull request 'feat: Runner Contract -- trata 429, 422 e deduplicação do runner' (#81) from feature/orchestration-runner-extensions into develop
All checks were successful
EEG QA CI / Detectar o que mudou (push) Successful in 9s
EEG QA CI / Frontend (push) Has been skipped
EEG QA CI / Backend (push) Successful in 1m59s
EEG QA CI / Build e publicação de imagens (push) Successful in 1m50s
EEG QA CI / Deploy production (push) Has been skipped
EEG QA CI / Deploy development (push) Successful in 23s
3abc7aa5da
Merge remote-tracking branch 'origin/develop' into feature/validation-item-images (migration re-apontada pra 0b41b961aa5b)
All checks were successful
EEG QA CI / Detectar o que mudou (pull_request) Successful in 6s
EEG QA CI / Backend (pull_request) Successful in 1m51s
EEG QA CI / Frontend (pull_request) Successful in 4m14s
EEG QA CI / Build e publicação de imagens (pull_request) Successful in 3m16s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
cc48b1fa6d
Merge pull request 'feat: imagens por item de Validação Técnica (API, tela, DOCX e PDF)' (#82) from feature/validation-item-images into develop
All checks were successful
EEG QA CI / Detectar o que mudou (push) Successful in 6s
EEG QA CI / Backend (push) Successful in 1m55s
EEG QA CI / Frontend (push) Successful in 3m6s
EEG QA CI / Build e publicação de imagens (push) Successful in 1m42s
EEG QA CI / Deploy production (push) Has been skipped
EEG QA CI / Deploy development (push) Successful in 21s
EEG QA CI / Detectar o que mudou (pull_request) Successful in 7s
EEG QA CI / Backend (pull_request) Successful in 2m7s
EEG QA CI / Frontend (pull_request) Successful in 3m20s
EEG QA CI / Build e publicação de imagens (pull_request) Successful in 2m33s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
d2ad6a3ba7
feat: envia Validacao Tecnica ao deal do HubSpot (nota + PDF + estagio opcional)
All checks were successful
EEG QA CI / Frontend (pull_request) Successful in 3m14s
EEG QA CI / Build e publicação de imagens (pull_request) Successful in 2m48s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
EEG QA CI / Detectar o que mudou (pull_request) Successful in 6s
EEG QA CI / Backend (pull_request) Successful in 2m0s
5a3eb3490e
POST /api/technical-validations/{id}/hubspot-sync e GET .../hubspot-stages,
mesmo molde do sync de Report, disparo manual. A validacao so trabalha com deal:
link que nao seja de deal e recusado (400) e o campo de ticket sai da tela.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Merge pull request 'feat: envia Validação Técnica ao deal do HubSpot' (#84) from feature/validation-hubspot-sync into develop
All checks were successful
EEG QA CI / Detectar o que mudou (pull_request) Successful in 6s
EEG QA CI / Detectar o que mudou (push) Successful in 6s
EEG QA CI / Backend (push) Successful in 1m59s
EEG QA CI / Frontend (push) Successful in 2m52s
EEG QA CI / Backend (pull_request) Successful in 1m50s
EEG QA CI / Frontend (pull_request) Successful in 2m41s
EEG QA CI / Build e publicação de imagens (push) Successful in 1m43s
EEG QA CI / Deploy production (push) Has been skipped
EEG QA CI / Build e publicação de imagens (pull_request) Successful in 1m31s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
EEG QA CI / Deploy development (push) Successful in 25s
5c2f92581f
jhony75 changed title from release: promove develop pra produção (metrics na run v1.3, Runner Contract 429/422/dedup, imagens em itens de Validação Técnica) to release: promove develop pra produção (metrics na run v1.3, Runner Contract 429/422/dedup, imagens em itens de Validação Técnica) 2026-10-14 17:42:28 -03:00
jhony75 changed title from release: promove develop pra produção (metrics na run v1.3, Runner Contract 429/422/dedup, imagens em itens de Validação Técnica) to release: promove develop pra produção (metrics na run v1.3, Runner Contract 429/422/dedup, imagens em itens de Validação Técnica, envio ao HubSpot) 2026-10-14 17:43:03 -03:00
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!83
No description provided.