9.3 KiB
đŻ ARQUITETURA DEFINITIVA: SUPABASE EXTERNO vs NOSSO SUPABASE
đ REGRA DE OURO
Supabase Externo (Fechado da Empresa): CRUD bĂĄsico de appointments, doctors, patients, reports
Nosso Supabase: Features EXTRAS, KPIs, tracking, gamificação, auditoria, preferĂȘncias
đ” SUPABASE EXTERNO (FONTE DA VERDADE)
Tabelas que JĂ EXISTEM no Supabase Externo:
- â
appointments- CRUD completo de agendamentos - â
doctors- Cadastro de mĂ©dicos - â
patients- Cadastro de pacientes - â
reports- RelatĂłrios mĂ©dicos bĂĄsicos - â
availability(provavelmente) - Disponibilidade dos mĂ©dicos - â Dados de autenticação bĂĄsica
Endpoints que PUXAM DO EXTERNO:
MĂDULO 2.1 - Appointments (EXTERNO):
/appointments/listâ Puxa de lĂĄ + mescla com nossos logs/appointments/createâ Cria LĂ + grava log aqui/appointments/updateâ Atualiza LĂ + grava log aqui/appointments/cancelâ Cancela LĂ + notifica waitlist aqui/appointments/confirmâ Confirma LĂ + grava log aqui/appointments/checkinâ Atualiza LĂ + cria registro de checkin aqui/appointments/no-showâ Marca LĂ + atualiza KPIs aqui
MĂDULO 2.2 - Availability (DEPENDE):
/availability/listâ SE existir LĂ, puxa de lĂĄ. SENĂO, cria tabela aqui/availability/createâ Cria onde for o source of truth/availability/updateâ Atualiza onde for o source of truth/availability/deleteâ Deleta onde for o source of truth
MĂDULO 6 - Reports (EXTERNO):
/reports/list-extendedâ Puxa LĂ + adiciona filtros extras/reports/export/pdfâ Puxa dados LĂ + gera PDF aqui/reports/export/csvâ Puxa dados LĂ + gera CSV aqui
MĂDULO 8 - Patients (EXTERNO):
/patients/historyâ Puxa appointments LĂ + histĂłrico estendido aqui/patients/portalâ Mescla dados LĂ + teleconsulta aqui
đą NOSSO SUPABASE (FEATURES EXTRAS)
Tabelas que criamos para COMPLEMENTAR:
â Tracking & Auditoria:
user_sync- Mapear external_user_id â local_user_iduser_actions- Log de todas as açÔes dos usuĂĄriosuser_sessions- SessĂ”es de login/logoutaudit_actions- Auditoria detalhada (MĂDULO 13)access_log- Quem acessou o quĂȘ (LGPD)patient_journey- Jornada do paciente
â PreferĂȘncias & UI:
user_preferences- Modo escuro, fonte dislexia, acessibilidade (MĂDULO 1 + 11)patient_preferences- HorĂĄrios favoritos, comunicação (MĂDULO 8)
â Agenda Extras:
availability_exceptions- Feriados, exceçÔes (MĂDULO 2.3)doctor_availability- SE nĂŁo existir no externo (MĂDULO 2.2)
â Fila & Waitlist:
waitlist- Lista de espera (MĂDULO 3)virtual_queue- Fila virtual da recepção (MĂDULO 4)
â NotificaçÔes:
notifications_queue- Fila de SMS/Email/WhatsApp (MĂDULO 5)notification_subscriptions- Opt-in/opt-out (MĂDULO 5)
â Analytics & KPIs:
kpi_cache/analytics_cache- Cache de mĂ©tricas (MĂDULO 10)doctor_stats- Ocupação, no-show %, atraso (MĂDULO 7)
â Gamificação:
doctor_badges- Conquistas dos mĂ©dicos (MĂDULO 7)patient_points- Pontos dos pacientes (gamificação)patient_streaks- SequĂȘncias de consultas
â Teleconsulta:
teleconsult_sessions- Salas Jitsi/WebRTC (MĂDULO 9)
â Integridade:
report_integrity- Hashes SHA256 anti-fraude (MĂDULO 6)
â Sistema:
feature_flags- Ativar/desativar features (MĂDULO 14)patient_extended_history- HistĂłrico detalhado (MĂDULO 8)
Endpoints 100% NOSSOS:
MĂDULO 1 - User Preferences:
/user/infoâ Busca role e permissĂ”es AQUI/user/update-preferencesâ Salva AQUI (user_preferences)
MĂDULO 2.3 - Exceptions:
/exceptions/listâ Lista DAQUI (availability_exceptions)/exceptions/createâ Cria AQUI/exceptions/deleteâ Deleta AQUI
MĂDULO 2.2 - Availability Slots:
/availability/slotsâ Gera slots baseado em disponibilidade + exceçÔes DAQUI
MĂDULO 3 - Waitlist:
/waitlist/addâ Adiciona AQUI/waitlist/listâ Lista DAQUI/waitlist/matchâ Busca match AQUI/waitlist/removeâ Remove DAQUI
MĂDULO 4 - Virtual Queue:
/queue/listâ Lista DAQUI (virtual_queue)/queue/checkinâ Cria registro AQUI/queue/advanceâ Avança fila AQUI
MĂDULO 5 - Notifications:
/notifications/enqueueâ Enfileira AQUI (notifications_queue)/notifications/processâ Worker processa fila DAQUI/notifications/confirmâ Confirma AQUI/notifications/subscriptionâ Gerencia AQUI (notification_subscriptions)
MĂDULO 6 - Report Integrity:
/reports/integrity-checkâ Verifica hash AQUI (report_integrity)
MĂDULO 7 - Doctor Stats:
/doctor/summaryâ Puxa stats DAQUI (doctor_stats) + appointments LĂ/doctor/occupancyâ Calcula AQUI (doctor_stats)/doctor/delay-suggestionâ Algoritmo AQUI (doctor_stats)/doctor/badgesâ Lista DAQUI (doctor_badges)
MĂDULO 8 - Patient Preferences:
/patients/preferencesâ Salva/busca AQUI (patient_preferences)
MĂDULO 9 - Teleconsulta:
/teleconsult/startâ Cria sessĂŁo AQUI (teleconsult_sessions)/teleconsult/statusâ Consulta AQUI/teleconsult/endâ Finaliza AQUI
MĂDULO 10 - Analytics:
/analytics/summaryâ Puxa appointments LĂ + calcula KPIs AQUI/analytics/heatmapâ Processa appointments LĂ + cache AQUI/analytics/demand-curveâ Processa LĂ + cache AQUI/analytics/ranking-reasonsâ Agrega LĂ + cache AQUI/analytics/monthly-no-showâ Filtra LĂ + cache AQUI/analytics/specialty-heatmapâ Usa doctor_stats DAQUI/analytics/custom-reportâ Query builder sobre dados LĂ + AQUI
MĂDULO 11 - Accessibility:
/accessibility/preferencesâ Salva AQUI (user_preferences)
MĂDULO 12 - LGPD:
/privacy/request-exportâ Exporta dados LĂ + AQUI/privacy/request-deleteâ Anonimiza LĂ + deleta AQUI/privacy/access-logâ Consulta AQUI (access_log)
MĂDULO 13 - Auditoria:
/audit/logâ Grava AQUI (audit_actions)/audit/listâ Lista DAQUI (audit_actions)
MĂDULO 14 - Feature Flags:
/flags/listâ Lista DAQUI (feature_flags)/flags/updateâ Atualiza AQUI
MĂDULO 15 - System:
/system/health-checkâ Verifica saĂșde LĂ + AQUI/system/cache-rebuildâ Recalcula cache AQUI/system/cron-runnerâ Executa jobs AQUI
đ FLUXO DE DADOS CORRETO
Exemplo 1: Criar Appointment
1. Frontend â Edge Function /appointments/create
2. Edge Function â Supabase EXTERNO (cria appointment)
3. Edge Function â Nosso Supabase (grava user_actions log)
4. Edge Function â Nosso Supabase (enfileira notificação)
5. Retorna sucesso
Exemplo 2: Listar Appointments
1. Frontend â Edge Function /appointments/list
2. Edge Function â Supabase EXTERNO (busca appointments)
3. Edge Function â Nosso Supabase (busca logs de checkin/no-show)
4. Edge Function â Mescla dados
5. Retorna lista completa
Exemplo 3: Dashboard do Médico
1. Frontend â Edge Function /doctor/summary
2. Edge Function â Nosso Supabase (busca doctor_stats)
3. Edge Function â Supabase EXTERNO (busca appointments de hoje)
4. Edge Function â Nosso Supabase (busca badges)
5. Retorna dashboard completo
Exemplo 4: PreferĂȘncias do UsuĂĄrio
1. Frontend â Edge Function /user/update-preferences
2. Edge Function â Nosso Supabase APENAS (salva user_preferences)
3. Retorna sucesso
â CHECKLIST DE IMPLEMENTAĂĂO
O que DEVE usar externalRest():
- â Criar/listar/atualizar/deletar appointments
- â Buscar dados de doctors/patients/reports
- â Atualizar status de appointments
- â Buscar availability (se existir lĂĄ)
O que DEVE usar supabase (nosso):
- â user_preferences, patient_preferences
- â user_actions, audit_actions, access_log
- â user_sync, user_sessions, patient_journey
- â availability_exceptions, doctor_availability (se for nossa tabela)
- â waitlist, virtual_queue
- â notifications_queue, notification_subscriptions
- â kpi_cache, analytics_cache, doctor_stats
- â doctor_badges, patient_points, patient_streaks
- â teleconsult_sessions
- â report_integrity
- â feature_flags
- â patient_extended_history
O que DEVE mesclar (LĂ + AQUI):
- â /appointments/list (appointments LĂ + logs AQUI)
- â /doctor/summary (appointments LĂ + stats AQUI)
- â /patients/history (appointments LĂ + extended_history AQUI)
- â /patients/portal (dados LĂ + teleconsult AQUI)
- â /analytics/* (dados LĂ + cache/KPIs AQUI)
đŻ CONCLUSĂO
SUPABASE EXTERNO = CRUD BĂSICO (appointments, doctors, patients, reports)
NOSSO SUPABASE = FEATURES EXTRAS (KPIs, tracking, gamificação, preferĂȘncias, auditoria)
Todos os endpoints seguem esse padrĂŁo:
- LĂȘ/Escreve no Supabase Externo quando for dado base
- Complementa com nossa DB para features extras
- SEMPRE grava logs de auditoria em user_actions
â Arquitetura 100% alinhada com a especificação!