Ir para o conteúdo

C4 - Nível 3 (Componentes Backend)

Objetivo

Detalhar os componentes internos do backend no estado atual, com ênfase em composição de rotas, middlewares e contextos de domínio.

Composição principal

Bootstrap HTTP

Arquivo central: internal/http/bootstrap/routes.go

  • rotas públicas de infra: /health, /metrics, /docs* (docs/métricas protegidas para admin)
  • rotas públicas de negócio: auth, planos públicos e webhooks
  • grupos protegidos: /api, /api/v1, /api/v2

Cadeia de middleware por grupo protegido

  • AuthMiddleware (todos os grupos protegidos)
  • ObservationContextMiddleware + ObservationReadOnlyMiddleware
  • ResolveMiddleware(public_id) apenas em /api/v2

Módulos registrados

  1. general
  2. sync, accounts, subscriptions, cycles, cycle_comments, symbols, billings_data, observations, messages, appointments, notifications, work_schedule, module_access (geral)

  3. client

  4. profile/health-info, professionals, vínculo com profissional, daily-register (MOOP), cycle-analysis, payments, courses
  5. com enforcement de módulo por RequireModule(...)

  6. professional

  7. profile/upload, disponibilidade, gestão de consultas
  8. camada approved com ProfileApprovalMiddleware para rotas que exigem perfil aprovado
  9. financeiro, crm, pacientes, cursos, unread chat count

  10. admin

  11. billings catálogos (appearances, sensations, symbols, day-based-rules)
  12. dashboard drilldown
  13. observação de usuários (admin observe)
  14. module access admin (/admin/modules/*, overrides por usuário)
  15. operação admin do marketplace de cursos

  16. auth

  17. login/register/refresh/password/email
  18. OAuth público e OAuth protegido (associate/disassociate)

Componentes transversais relevantes

Module Access

  • catálogo canônico em internal/modules/module_access/catalog.go
  • snapshot efetivo por usuário em GET /users/me/modules
  • endpoints admin para global settings e user overrides
  • aliases legados mapeados para chaves canônicas

Feature flags

  • avaliadas por internal/config/feature_flags.go
  • exemplo em uso: habilitação de CRM profissional

Observabilidade

  • middleware Prometheus global
  • endpoint /metrics protegido por middleware admin

Dependências críticas

  • database.DB (GORM/Postgres)
  • storage R2 (internal/infra/storage)
  • providers de e-mail e OAuth

Riscos técnicos

  • manutenção de 3 prefixos de API simultâneos aumenta superfície de compatibilidade.
  • mudanças de chave canônica de módulo exigem migração cuidadosa (legado + novo).