Feature: Consultoria
Introdução ao documento
Este documento cobre o fluxo de consultoria 1:1, que funciona como entrada específica para uma sala individual já agendada. Evidências: src/app/(protected-routes)/consultoria/page.tsx:8-18, src/app/(protected-routes)/consultoria/[slug]/page.tsx:15-44, src/components/MeetRoom/MeetRoom.component.tsx:101-139.
Versionamento
- Documento criado em
2026-03-20. - Revisar quando mudarem as rotas
/consultoria,/consultoria/[slug]ou o wrapperMeetRoom. Evidências:src/app/(protected-routes)/consultoria/page.tsx:8-18,src/app/(protected-routes)/consultoria/[slug]/page.tsx:15-44.
Referencial teórico
O fluxo foi derivado das rotas protegidas de consultoria e do reaproveitamento de MeetingRoom. Evidências: src/app/(protected-routes)/consultoria/page.tsx:8-18, src/app/(protected-routes)/consultoria/[slug]/page.tsx:21-43.
Visão geral
- A rota
/consultorianão renderiza a reunião diretamente; ela redireciona facilitador para/agendae participante para/agendar. Evidências:src/app/(protected-routes)/consultoria/page.tsx:9-17. - A rota
/consultoria/[slug]resolve uma sala individual a partir doslugno formato com dois IDs separados por-. Evidências:src/app/(protected-routes)/consultoria/[slug]/page.tsx:21-29. - O resultado final é sempre a renderização de
MeetingRoomcom credenciais 1:1. Evidências:src/app/(protected-routes)/consultoria/[slug]/page.tsx:31-43.
Atores
- Participante entrando em uma mentoria individual. Evidências:
src/app/(protected-routes)/consultoria/page.tsx:14-17. - Facilitador recebendo ou administrando mentorias. Evidências:
src/app/(protected-routes)/consultoria/page.tsx:14. - Serviço de turma que devolve a sala 1:1. Evidências:
src/app/(protected-routes)/consultoria/[slug]/page.tsx:24-29.
Pré-condições
- Sessão válida. Evidências:
src/app/(protected-routes)/consultoria/page.tsx:9-12,src/app/(protected-routes)/consultoria/[slug]/page.tsx:16-19. slugcom IDs suficientes paraids[0]eids[1]. Evidências:src/app/(protected-routes)/consultoria/[slug]/page.tsx:21-29.- Serviço de backend disponível para
getOneOnOneRoom. Evidências:src/app/(protected-routes)/consultoria/[slug]/page.tsx:24-29.
Fluxo principal
- O usuário entra em
/consultoria/{slug}autenticado. Evidências:src/app/(protected-routes)/consultoria/[slug]/page.tsx:15-19. - O
slugé particionado em IDs. Evidências:src/app/(protected-routes)/consultoria/[slug]/page.tsx:21-23. - A página resolve credenciais chamando
getOneOnOneRoom(ids[0], ids[1], token, role). Evidências:src/app/(protected-routes)/consultoria/[slug]/page.tsx:24-29. - A reunião 1:1 é renderizada em
MeetingRoom. Evidências:src/app/(protected-routes)/consultoria/[slug]/page.tsx:31-43.
Fluxos alternativos
- Sem sessão, a rota redireciona para
/. Evidências:src/app/(protected-routes)/consultoria/[slug]/page.tsx:16-19. - A rota
/consultoriasemslugredireciona o usuário para a feature adequada do seu perfil. Evidências:src/app/(protected-routes)/consultoria/page.tsx:9-17. - Se as credenciais não forem resolvidas,
MeetingRoomentra no fluxo de erro de credenciais. Evidências:src/components/MeetingRoom/MeetingRoom.component.tsx:231-240.
Regras de negócio
- Facilitadores/admins não entram por
/consultoria; são enviados para/agenda. Evidências:src/app/(protected-routes)/consultoria/page.tsx:14. - Participantes não entram por
/consultoria; são enviados para/agendar. Evidências:src/app/(protected-routes)/consultoria/page.tsx:14. - A URL do servidor Jitsi aceita variações de nome (
jitsi_server_url,jitsiServerUrl,jitsi_url). Evidências:src/app/(protected-routes)/consultoria/[slug]/page.tsx:33-38.
Estados possíveis
redirect_perfil: redirecionamento da rota/consultoria. Evidências:src/app/(protected-routes)/consultoria/page.tsx:14.resolvendo_credencial: busca degetOneOnOneRoom. Evidências:src/app/(protected-routes)/consultoria/[slug]/page.tsx:24-29.em_sala:MeetingRoomrenderizado. Evidências:src/app/(protected-routes)/consultoria/[slug]/page.tsx:31-43.
Endpoints envolvidos
- Ver OpenAPI: a feature depende principalmente do backend externo resolvido por
getOneOnOneRoom; localmente ela reutilizaGET /api/jitsi/confige os comportamentos de sala-de-reuniao.md.
Dados impactados
- Ver model.md:
Appointment,Classe credenciais temporárias de reunião. - Credenciais 1:1 também podem ser lidas de
updRoom1on1Credentialsno navegador quando a entrada ocorre pelo wrapperMeetRoom. Evidências:src/components/MeetRoom/MeetRoom.component.tsx:20-49.
Pendências
- O formato semântico do
slugda consultoria não está documentado além do split por-. - Não há documentação local de expiração das credenciais de mentoria individual.