Pular para o conteúdo principal

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 wrapper MeetRoom. 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 /consultoria não renderiza a reunião diretamente; ela redireciona facilitador para /agenda e participante para /agendar. Evidências: src/app/(protected-routes)/consultoria/page.tsx:9-17.
  • A rota /consultoria/[slug] resolve uma sala individual a partir do slug no 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 MeetingRoom com 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.
  • slug com IDs suficientes para ids[0] e ids[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

  1. O usuário entra em /consultoria/{slug} autenticado. Evidências: src/app/(protected-routes)/consultoria/[slug]/page.tsx:15-19.
  2. O slug é particionado em IDs. Evidências: src/app/(protected-routes)/consultoria/[slug]/page.tsx:21-23.
  3. 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.
  4. 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 /consultoria sem slug redireciona 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, MeetingRoom entra 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 de getOneOnOneRoom. Evidências: src/app/(protected-routes)/consultoria/[slug]/page.tsx:24-29.
  • em_sala: MeetingRoom renderizado. 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 reutiliza GET /api/jitsi/config e os comportamentos de sala-de-reuniao.md.

Dados impactados

  • Ver model.md: Appointment, Class e credenciais temporárias de reunião.
  • Credenciais 1:1 também podem ser lidas de updRoom1on1Credentials no navegador quando a entrada ocorre pelo wrapper MeetRoom. Evidências: src/components/MeetRoom/MeetRoom.component.tsx:20-49.

Pendências

  • O formato semântico do slug da consultoria não está documentado além do split por -.
  • Não há documentação local de expiração das credenciais de mentoria individual.