A pesquisa de qualidade é uma tela final que aparece para cliente e dono separadamente após cada chamada de vídeo. Coleta 5 estrelas + comentário opcional. Persiste no banco pra você acompanhar a média ao longo do tempo.
Quando aparece?
A tela substitui a sala de vídeo no momento que daily.leave() é chamado (qualquer um sai) ou quando a sessão expira. Você não vai pra outra URL — o componente PesquisaQualidade é renderizado na mesma página.
Tela curta (sessão menor que 30s)
Se a duração total da sessão foi menor que 30 segundos, o sistema pula a avaliação automaticamente e mostra apenas:
💖 Obrigado pela conversa!
Cliente vê: "Até a próxima."
Dono vê: "Sessão muito curta para avaliação. Bom dia!"
Decisão: pedir avaliação pra chamada que durou 5 segundos não tem valor estatístico — usuário marca aleatório só pra fechar a tela. Skip silencioso preserva qualidade dos dados.
Tela completa (sessão ≥30s)
Passo 1 — 5 estrelas
Como foi sua experiência?
⭐ ⭐ ⭐ ⭐ ⭐ (1 a 5)
Hover em cada estrela mostra preview. Click define a nota.
Passo 2 condicional — Problemas (se nota abaixo de 4)
Se você marca 1, 2 ou 3 estrelas, expande lista de problemas pra você marcar:
- Áudio cortou
- Vídeo travou
- Desconectou
- Eco / microfonia
- Lag
- Tela preta
- Outro
Múltipla escolha. Útil pro time analisar padrões (se 30% dos clientes marcam "áudio cortou" → temos problema sistêmico).
Passo 3 — Comentário (opcional)
Campo de texto livre, sem limite estrito. Útil pra:
- Detalhe do problema ("eco quando ele falava alto")
- Elogio ("conversa muito tranquila")
- Sugestão ("queria botão pra mutar background ruído")
Botão "Pular"
Sempre disponível. Click → marca como enviado=true sem fazer POST. Não persiste nota nenhuma.
Não é "anti-engajamento" — respeitamos quem não quer avaliar. Forçar avaliação distorce dados (notas defensivas) e gera má experiência.
Cliente vs Dono — independentes
Cada um avalia separadamente. As respostas vão pra colunas diferentes:
- Cliente →
video_sessoes.avaliacao_cliente_estrelas+avaliacao_cliente_comentario - Dono →
video_sessoes.avaliacao_dono_estrelas+avaliacao_dono_comentario
Sistema não compara as 2 (ex: "vocês deram notas diferentes!"). Cada um vê apenas a sua tela.
Pós-envio cliente
- Mostra "Obrigado!" 3 segundos
- Tenta
window.close()(best-effort — alguns navegadores bloqueiam) - Fallback: redireciona pra
/ - Cliente não volta pra página do vídeo
Pós-envio dono
- Mostra "Obrigado!"
- Botão "Ir pra agenda" sempre visível
- Click → vai pra
/agendadireto - Dono pode fazer outras coisas no app
Onde dono vê as notas
1. Detalhe do agendamento
No card de agendamento concluído (/agenda → click), bloco "Vídeo" mostra:
- ⭐⭐⭐⭐ Cliente avaliou (4 estrelas)
- ⭐⭐⭐⭐⭐ Você avaliou (5 estrelas)
- Comentários expansíveis
Se uma das pontas pulou, mostra "Não avaliado".
2. Histórico (/configuracoes/video/historico)
Lista cronológica com média de estrelas por chamada. Filtra por nota baixa pra revisar problemas.
3. Relatórios (/relatorios/video) — futuro
Dashboard de média mensal própria do dono (RN-V17). MVP atual é simples; expansão futura inclui gráfico temporal, breakdown por agenda, top comentários.
O que admin TMB vê
No painel admin /admin/video/avaliacoes:
- Média geral de estrelas (cliente vs dono separadas)
- Lista de problemas mais marcados (top 3 do mês)
- Filtros por negócio e período
- Drill-down em comentários ruins (úteis pra entender bugs sistêmicos)
Admin não vê o conteúdo da chamada (sem acesso à gravação/transcrição/sentimento). Apenas as notas e comentários da pesquisa.
O que NÃO faz (decisões arquiteturais)
Sem follow-up por WhatsApp dia seguinte (RN-V13)
Pesquisa NPS via WhatsApp continua existindo como instrumento separado (gatilho P22), mas é genérico do atendimento (não específico do vídeo). Decidimos não duplicar — quem quer avaliar avalia na hora, quem quer feedback profundo pega o NPS dia seguinte.
Sem botão "contatar negócio" pro cliente (RN-V16)
Pesquisa de cliente NÃO tem botão "tenho dúvida, fale comigo" — quem precisa contatar o negócio vai pelo WhatsApp normal (já existe). Botão na tela final geraria fricção desnecessária.
Sem "vincular cliente" pra cliente_id NULL
Algumas chamadas não têm cliente_id (ex: link compartilhado pra pessoa não-cadastrada). Pesquisa funciona mesmo assim — nota é gravada na sessão, sem cliente associado. Útil pra demos e onboarding.
Sem preenchimento automático de "estrelas presumidas"
Se cliente pula a pesquisa, sistema não estima nota baseado em duração da chamada ou outros sinais. Dado fica NULL. Honesto > inferência.
Edge cases
Cliente fecha aba sem clicar Enviar
Tela some, nada é gravado. avaliacao_cliente_estrelas fica NULL. Sem retry — cliente já saiu do contexto.
Dono recarrega aba durante pesquisa
Estado do form é client-side only — recarregar perde o que já tinha digitado. Em prática o user volta a ver a tela de pesquisa novamente (sessão ainda é a mesma) e pode preencher do zero.
Conexão cai entre clicar Enviar e response
Componente captura erro de fetch → mostra "Falha ao enviar" → user pode tentar novamente. Estado do form preservado.
Nota dada e depois user quer mudar
Não há UI pra editar depois. Decidimos não permitir — a pesquisa é uma snapshot do momento. Se vc errou (deu 5 querendo dar 4), fica 5 mesmo.
Roadmap futuro pode incluir edição em janela de 24h. Por enquanto, intencionalmente imutável.
Próximos artigos
- Histórico e relatórios — onde ler médias agregadas
- Tempo da sessão — duração afeta se aparece pesquisa
- Troubleshooting vídeo — quando notas baixas indicam problema técnico