feat: envio da validação ao HubSpot preenche as Tasks do deal e anexa o PDF #87

Merged
jhony75 merged 1 commit from feature/validation-hubspot-tasks into develop 2026-10-15 15:34:34 -03:00
Owner

O que é

Faz o botão "Enviar ao HubSpot" da Validação Técnica se comportar como o fluxo que o qa-project já usa no HubSpot (Tasks do deal), mantendo o PDF, em chamadas independentes pelo mesmo clique.

Mudanças

  • Tasks (novo, igual ao qa-project): para cada item incluído no documento, acrescenta ao corpo da Task do deal de mesmo assunto (sem diferenciar caixa) um bloco [Validação automática — dd/mm/aaaa hh:mm] com status, equipamento e observação. Nunca sobrescreve; pula se o corpo já contém exatamente aquele texto (reenvio). Entre cópias da mesma Task (uma por dono) vale a do primeiro dono de HUBSPOT_TASK_OWNER_IDS (padrão 96389296,83229371), senão a primeira. Item sem Task correspondente é reportado em missing, não é erro.
  • PDF: continua subindo pro File Manager e sendo anexado numa nota do deal — agora como parte independente das Tasks.
  • Estágio: passou a ser uma terceira parte independente (só se pedido).
  • Resposta: {"tasks": {...}, "pdf": {...}, "stage": {...}}, cada parte com ok e, se falhou, error. Só vira erro HTTP quando todas as partes falham. A tela lista o resultado de cada uma e pede confirmação antes de enviar.
  • Correção: hs_timestamp da nota agora é epoch em milissegundos (string); o ISO dava 400 ("not a valid long") no portal real, segundo o qa-project. O add_note do Cockpit nunca tinha rodado contra o HubSpot real.
  • Sem migration. HUBSPOT_TASK_OWNER_IDS é opcional (compose e exemplos de .env); docs (INTEGRATIONS.md, BACKLOG.md) atualizadas.

Escopos do Private App

crm.objects.deals.read, crm.objects.tasks.read, crm.objects.tasks.write (Tasks); files e escrita de notas (PDF); crm.objects.deals.write e crm.schemas.deals.read (estágio e lista de estágios).

Não validado ao vivo

O PATCH em hs_task_body nunca foi exercitado contra o HubSpot real (nem aqui, nem no qa-project): o primeiro envio deve ser num deal de teste.

Verificação

  • Backend: 329 passed (testes novos de Tasks, partes independentes, falha parcial e timestamp). Frontend: tsc limpo, lint sem erros, 180 testes, build ok. docker compose config ok.

🤖 Generated with Claude Code

## O que é Faz o botão "Enviar ao HubSpot" da Validação Técnica se comportar como o fluxo que o qa-project já usa no HubSpot (Tasks do deal), mantendo o PDF, em **chamadas independentes** pelo mesmo clique. ## Mudanças - **Tasks (novo, igual ao qa-project):** para cada item incluído no documento, acrescenta ao corpo da Task do deal de **mesmo assunto** (sem diferenciar caixa) um bloco `[Validação automática — dd/mm/aaaa hh:mm]` com status, equipamento e observação. Nunca sobrescreve; pula se o corpo já contém exatamente aquele texto (reenvio). Entre cópias da mesma Task (uma por dono) vale a do primeiro dono de `HUBSPOT_TASK_OWNER_IDS` (padrão `96389296,83229371`), senão a primeira. Item sem Task correspondente é reportado em `missing`, não é erro. - **PDF:** continua subindo pro File Manager e sendo anexado numa nota do deal — agora como parte independente das Tasks. - **Estágio:** passou a ser uma terceira parte independente (só se pedido). - **Resposta:** `{"tasks": {...}, "pdf": {...}, "stage": {...}}`, cada parte com `ok` e, se falhou, `error`. Só vira erro HTTP quando **todas** as partes falham. A tela lista o resultado de cada uma e pede confirmação antes de enviar. - **Correção:** `hs_timestamp` da nota agora é epoch em milissegundos (string); o ISO dava 400 ("not a valid long") no portal real, segundo o qa-project. O `add_note` do Cockpit nunca tinha rodado contra o HubSpot real. - Sem migration. `HUBSPOT_TASK_OWNER_IDS` é opcional (compose e exemplos de `.env`); docs (`INTEGRATIONS.md`, `BACKLOG.md`) atualizadas. ## Escopos do Private App `crm.objects.deals.read`, `crm.objects.tasks.read`, `crm.objects.tasks.write` (Tasks); `files` e escrita de notas (PDF); `crm.objects.deals.write` e `crm.schemas.deals.read` (estágio e lista de estágios). ## Não validado ao vivo O PATCH em `hs_task_body` nunca foi exercitado contra o HubSpot real (nem aqui, nem no qa-project): o primeiro envio deve ser num deal de teste. ## Verificação - Backend: 329 passed (testes novos de Tasks, partes independentes, falha parcial e timestamp). Frontend: tsc limpo, lint sem erros, 180 testes, build ok. `docker compose config` ok. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat: envio da validacao ao HubSpot preenche as Tasks do deal e anexa o PDF (partes independentes)
All checks were successful
EEG QA CI / Detectar o que mudou (pull_request) Successful in 34s
EEG QA CI / Backend (pull_request) Successful in 4m50s
EEG QA CI / Frontend (pull_request) Successful in 9m34s
EEG QA CI / Build e publicação de imagens (pull_request) Successful in 10m2s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
c5e71363f3
O botao passa a acrescentar o texto de cada item ao corpo da Task do deal de mesmo
assunto (como o qa-project) e, em chamada independente, anexar o PDF numa nota;
estagio e uma terceira parte opcional. Uma falha parcial nao derruba as outras e a
tela mostra o resultado de cada parte. Corrige hs_timestamp da nota (epoch em ms).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
jhony75 merged commit 6e5e274cce into develop 2026-10-15 15:34:34 -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!87
No description provided.