wiki: F6.4 SaaS-admin resolvida, F6.3 desbloqueada

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-06-13 17:02:53 -03:00
parent dc2363b4e1
commit 96f4543138
3 changed files with 16 additions and 19 deletions
+3
View File
@@ -1687,3 +1687,6 @@ Touched: Migracao Schema-per-Tenant
## [2026-06-13 16:45] session | F6.3 preparada (nao-aplicada) + itens SaaS-admin
Touched: Migracao Schema-per-Tenant
## [2026-06-13 17:02] session | F6.4 superficie SaaS-admin resolvida (F6.3 desbloqueada)
Touched: Migracao Schema-per-Tenant
@@ -39,7 +39,10 @@ Triggers (A agnósticos + B schema-aware + C notif) + RPCs (D usuário + E cron
-**wiring DONE** (commit dc7826d, manual/f6_2h_clone_wiring.supabase_admin.sql): trigger AFTER INSERT em tenant_schemas (trg_attach_business_triggers) dispara os 3 attach pro schema novo → tenant novo nasce com 84 triggers. attach_agnostic agora SELF-CONTAINED (dirigido por colunas, não lê public — sobrevive ao DROP). provision_account_tenant: clone ANTES do seed. Smoke OK.
- **F6.3 DROP** 📋 PREPARADA não-aplicada (commit cdb9ce1, manual/f6_3_drop_public_tenant_tables.supabase_admin.sql): pré-flight assert + 2 FKs viram coluna solta (document_share_links.documento_id, whatsapp_credits_transactions.conversation_message_id) + dropa 9 views public + DROP CASCADE das 78 + limpa financial_records_inject_tenant. **BLOQUEADA** pelos itens em aberto abaixo.
## ⛔ ITENS EM ABERTO antes do F6.3 DROP (verificados: 16 reads FE públicos remanescentes, TODOS aqui)
## ✅ SUPERFÍCIE SaaS-ADMIN RESOLVIDA (F6.4, commit dc2363b)
RPCs `saas_admin` (manual/f6_4_saas_admin_rpcs.supabase_admin.sql): defaults editados no `_tenant_template` + fan-out pros schemas (saas_list/add/remove_default_feriado; saas_*_default_notif_template; saas_count_notif_template_overrides). Cross-tenant: `saas_list_all_whatsapp_channels` (fan-out, substitui v_twilio_whatsapp_overview). FE: SaasFeriadosPage/SaasNotificationTemplatesPage → RPCs; SaasWhatsappPage → `supabase.schema(tenant_<slug>)` (RLS permite saas_admin) p/ tenant selecionado + RPC p/ overview; getAllChannels → RPC. **Varredura confirma ZERO supabase.from('<tabela_tenant>') público no FE.** F6.3 DESBLOQUEADA (falta só Leonardo testar app + backup). TODOs deixados: stat-cards de feriados (cidade/estado) e incidents-7d viraram 0 (UI degrada sem crash).
## (histórico) ITENS EM ABERTO antes do F6.3 DROP — RESOLVIDOS acima
Superfície **SaaS-admin / cross-tenant** que ainda lê `public.<tabela_tenant>` e quebraria no DROP:
1. **SaasWhatsappPage.vue + v_twilio_whatsapp_overview + twilioWhatsappService.getAllChannels()** — admin cross-tenant de canais WhatsApp (notification_channels/whatsapp_connection_incidents). Reescrever fan-out por schema OU usar `public.channel_routing`.
2. **SaasNotificationTemplatesPage.vue** — gerencia templates DEFAULT do sistema (tenant_id NULL). Apontar pra `_tenant_template.notification_templates` (os defaults vivem lá agora).
@@ -18,24 +18,15 @@
-- --schema=public --no-owner --no-acl > database-novo/backups/pre-F6.3/public.sql
--
-- ─────────────────────────────────────────────────────────────────────────────
-- ITENS EM ABERTO (resolver ANTES de aplicar) — superfície SaaS-admin / anon
-- que AINDA aponta pra public e quebraria com o DROP:
--
-- 1. v_twilio_whatsapp_overview + twilioWhatsappService.getAllChannels()
-- → view SaaS-admin cross-tenant sobre notification_channels +
-- twilio_subaccount_usage (tenant). Reescrever getAllChannels pra varrer
-- os schemas (ou usar public.channel_routing) antes do DROP.
-- 2. Páginas SaaS revertidas na F3 (SaasFeriadosPage, SaasNotificationTemplates,
-- SaasDocumentTemplates, SaasWhatsappPage) — gerenciam defaults do sistema /
-- views cross-tenant; hoje leem public.<tabela_tenant>. Redirecionar pra
-- _tenant_template (defaults) ou fan-out por schema.
-- 3. notification-webhook (Meta) — fan-out por message_id em public; conferir
-- que só usa channel_routing/schemas.
-- 4. AgendadorPublicoPage — já usa RPCs roteadas (OK); confirmar.
--
-- Rodar pra detectar referências FE remanescentes a tabelas tenant em public:
-- grep -rnE "supabase\.from\('(patients|agenda_eventos|financial_records|
-- documents|notification_channels|conversation_messages|...)'\)" src
-- ITENS EM ABERTO — RESOLVIDOS (F6.4, commit dc2363b):
-- 1. v_twilio_whatsapp_overview / getAllChannels → RPC saas_list_all_whatsapp_
-- channels (fan-out). ✓
-- 2. SaasFeriadosPage / SaasNotificationTemplatesPage / SaasWhatsappPage →
-- RPCs saas_*_default + supabase.schema(tenant_<slug>). ✓
-- 3. notification-webhook (Meta) → confirmado: usa tdb/schema (F4). ✓
-- 4. AgendadorPublicoPage → RPCs roteadas. ✓
-- Varredura FE confirma ZERO supabase.from('<tabela_tenant>') público restante.
-- PRÉ-REQUISITO FINAL: Leonardo testar o app + backup fresco.
-- ─────────────────────────────────────────────────────────────────────────────
-- =============================================================================