Botão de ajuda → Central de Observabilidade (DEV-1085)¶
TL;DR¶
Ticket criado pelo FeedbackButton (POST /api/app/tickets) com type bug ("Algo não funcionou") ou broken_feature ("Função com problema") é encaminhado assinado pra bridge da Central, que cria issue tipo:suporte + own:felipe no Linear (projeto maint: Cadência) com dedup e WhatsApp.
Fluxo¶
- Usuário envia o report → insert em
support_tickets(comportamento original intacto). - A rota POSTa pro
https://sentry-bridge.cadencia.app.br/support-webhookcom HMAC sha256 do body no headerx-support-signature(envSUPPORT_WEBHOOK_SECRET— 1PCadencia Bridge - SUPPORT_WEBHOOK_SECRET [ClaudeCode], mesma env no Coolify da bridge e no Vercel). - Bridge (repo
Posicionamento-Digital/health-check,bridge/app/main.py): dedup[support:<sha1(tenant|option|message)[:10]>]→ issue no Linear → WhatsApp best-effort. - Fail-open: bridge fora do ar NUNCA quebra a criação do ticket (try/catch + timeout 5s +
console.errorcom prefixo[DEV-1085]).
Escopo¶
missing_feature("Falta uma função") fica só na tabela — decisão de escopo da issue.- Report de usuário NUNCA vai direto pra
own:agente— triagem humana decide se é bug.
Payload (contrato com a bridge)¶
{"tenant_id","user_email","option":"bug|broken_feature","message","page","meta":{"ticket_id","component_path"}}
Troubleshooting¶
- Issue não criada mas ticket sim → ver logs da função (
[DEV-1085] support forward fail-open) e/healthda bridge; conferir envSUPPORT_WEBHOOK_SECRETnos dois lados (401 = assinatura). - Issue duplicada não aparece → é o dedup por conteúdo (mesmo tenant+option+message) — comportamento desenhado.
Histórico¶
- 2026-07-04 — criado (PRs #110/#111 + bridge PRs #4/#5). E2E produção: DEV-1180 criada automaticamente a partir de ticket real.
Notas Relacionadas¶
audit-cross-tenant