Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.nextmed.med.br/llms.txt

Use this file to discover all available pages before exploring further.

Arquitetura

Camadas do projeto

  • src/app: App Router do Next.js, com layouts, paginas e route handlers em src/app/api.
  • src/components: componentes de produto compartilhados, incluindo chat, referrals, navbar, video call e dialogs.
  • src/lib: hooks, providers, stores, queries de backend, IA, Firebase e utilitarios de dominio.
  • src/package: pacote interno com HTTP client, themes, helpers, Firebase, modelos e componentes base.
  • src/@core: camada de casos de uso, entidades/gateways e adaptadores para alguns fluxos de instituicao, unidade e autenticacao.
  • public: assets, manifest, service worker publico e imagens.

Fluxo HTTP

O cliente HTTP principal esta em src/package/http/http.ts.
  • baseURL: NEXT_PUBLIC_GATEWAY_HOST_WEB.
  • Header padrao: app-name: nextmed-web.
  • Autenticacao: Authorization: Bearer <token>, recuperado dos cookies pelo helper auth-token-handler.
  • Em 401 ou 500 com errorCode: TOKEN_EXPIRED, a aplicacao remove tokens, redireciona para / e mostra toast de sessao expirada.
  • Erros 4xx e 5xx sao enviados ao Sentry, exceto 401 e 403 no grupo de client errors.

Cookies de autenticacao

Os cookies seguem o prefixo do ambiente:
{
  TOKEN: `${NODE_ENV}@nextauth.token`,
  USER_ID: `${NODE_ENV}@nextauth.userid`,
  REFRESH_TOKEN: `${NODE_ENV}@nextauth.refreshToken`
}

Padrao BFF

Alguns endpoints em src/app/api funcionam como BFF:
  • escondem tokens de Dyte e OpenAI no servidor.
  • fazem proxy ou composicao com o gateway NextMed.
  • leem cookies de sessao no servidor.
  • retornam contratos simplificados para o frontend.

PWA

O PWA e configurado no next.config.js com Serwist:
  • swSrc: src/lib/sw.ts.
  • swDest: public/sw.js.
  • cache em navegacao frontend habilitado.
  • reload automatico quando volta online.
  • desabilitado em NODE_ENV=development.
  • tamanho maximo de arquivo em cache: 5 MB.

Observabilidade

  • Sentry configurado para o projeto web-nextmed-pwa.
  • PostHog em provider dedicado.
  • Google Analytics com NEXT_PUBLIC_GA_TRACKING_ID, default G-T7JQ0S30PX.

Pontos de atencao

  • Alguns arquivos usam OPEN_API_KEY para OpenAI, enquanto o schema de ambiente declara OPENAI_API_KEY. O endpoint POST /api/anamnesis-chat/evaluate aceita ambos, mas os demais endpoints de IA usam principalmente OPEN_API_KEY.
  • POST /api/dyte/webhook chama diretamente https://api-dev.nextmed.med.br, em vez de usar GATEWAY_HOST_WEB.
  • src/lib/queries/referrals/get-referral-details.ts monta objetos usando res.data dentro de res.data.referrals.map, o que parece suspeito para mapeamento por item.