feat: sincronizar Report com card do HubSpot #22

Merged
jhony75 merged 1 commit from feature/hubspot-card-sync into develop 2026-09-04 15:14:44 -03:00
Owner

Adiciona escrita no HubSpot a partir de um Report:

  • POST /api/reports/{id}/hubspot-sync: gera o PDF do report, anexa como nota no ticket/deal vinculado (hubspot_url) e, opcionalmente, move o estágio do pipeline (move_to_stage).
  • GET /api/reports/{id}/hubspot-stages: lista os estágios do pipeline atual do card, pra popular o seletor no frontend.
  • Disparo manual, via botão "Sincronizar com HubSpot" na tela do Report.
  • backend/hubspot_client.py ganha upload de arquivo, criação de nota com associação e atualização de estágio (Files API + CRM v3/v4), reaproveitando o padrão do lookup já existente.
  • Novo backend/routers/report_hubspot_sync.py (fora de modules/reporting/) por causa da fronteira Core/integrações validada em test_architecture.py — reporting não pode depender de hubspot_client.
  • Testes mockados cobrindo client (upload/nota/estágio) e endpoints (sucesso, sem hubspot_url, tradução de erros).
  • Verificado manualmente via dev local (uvicorn + vite): botão aparece condicionalmente, chamada real ao HubSpot retornou 401 (token local inválido) traduzido corretamente na UI — nenhuma escrita real chegou a acontecer.
Adiciona escrita no HubSpot a partir de um Report: - `POST /api/reports/{id}/hubspot-sync`: gera o PDF do report, anexa como nota no ticket/deal vinculado (`hubspot_url`) e, opcionalmente, move o estágio do pipeline (`move_to_stage`). - `GET /api/reports/{id}/hubspot-stages`: lista os estágios do pipeline atual do card, pra popular o seletor no frontend. - Disparo manual, via botão "Sincronizar com HubSpot" na tela do Report. - `backend/hubspot_client.py` ganha upload de arquivo, criação de nota com associação e atualização de estágio (Files API + CRM v3/v4), reaproveitando o padrão do lookup já existente. - Novo `backend/routers/report_hubspot_sync.py` (fora de `modules/reporting/`) por causa da fronteira Core/integrações validada em `test_architecture.py` — reporting não pode depender de `hubspot_client`. - Testes mockados cobrindo client (upload/nota/estágio) e endpoints (sucesso, sem `hubspot_url`, tradução de erros). - Verificado manualmente via dev local (`uvicorn` + `vite`): botão aparece condicionalmente, chamada real ao HubSpot retornou 401 (token local inválido) traduzido corretamente na UI — nenhuma escrita real chegou a acontecer.
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.
jhony75 merged commit b704e88e46 into develop 2026-09-04 15:14:44 -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!22
No description provided.