wiki: F6.4 SaaS-admin resolvida, F6.3 desbloqueada
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -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.
|
||||
-- ─────────────────────────────────────────────────────────────────────────────
|
||||
-- =============================================================================
|
||||
|
||||
|
||||
Reference in New Issue
Block a user