Sessoes 1-6 acumuladas: hardening B2, defesa em camadas, +192 testes
Repositorio estava ha ~5 sessoes sem commit. Consolida tudo desde d088a89.
Ver commit.md na raiz para descricao completa por sessao.
# Numeros
- A# auditoria abertos: 0/30
- V# verificacoes abertos: 5/52 (todos adiados com plano)
- T# testes escritos: 10/10
- Vitest: 192/192
- SQL integration: 33/33
- E2E (Playwright, novo): 5/5
- Migrations: 17 (10 novas Sessao 6)
- Areas auditadas: 7 (+documentos com 10 V#)
# Highlights Sessao 6 (hoje)
- V#34/V#41 Opcao B2: tenant_features com plano + override (RPC SECURITY DEFINER, tela /saas/tenant-features)
- A#20 rev2 self-hosted: defesa em 5 camadas (honeypot + rate limit + math captcha condicional + paranoid mode + dashboard /saas/security)
- Documentos hardening (V#43-V#49): tenant scoping em storage policies (vazamento entre clinicas eliminado), RPC validate_share_token, signatures policy granular
- SaaS Twilio Config (/saas/twilio-config): UI editavel para SID/webhook/cotacao; AUTH_TOKEN permanece em env var
- T#9 + T#10: useAgendaEvents.spec.js + Playwright E2E (descobriu bug no front que foi corrigido)
# Sessoes anteriores (1-5) consolidadas
- Sessao 1: auth/router/session, normalizeRole extraido
- Sessao 2: agenda - composables/services consolidados
- Sessao 3: pacientes - tenant_id em todas queries
- Sessao 4: security review pagina publica - 14/15 vulnerabilidades corrigidas
- Sessao 5: SaaS - P0 (A#30: 7 tabelas com RLS off corrigidas)
# .gitignore ajustado
- supabase/* + !supabase/functions/ (mantem 10 edge functions, ignora .temp/migrations gerados pelo CLI)
- database-novo/backups/ (regeneravel via db.cjs backup)
- test-results/ + playwright-report/
- .claude/settings.local.json (config local com senha de dev removida do tracking)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,256 +1,14 @@
|
||||
-- =============================================================================
|
||||
-- AgenciaPsi — Extensions e Schemas
|
||||
-- Extraído de schema.sql (2026-03-23)
|
||||
-- =============================================================================
|
||||
|
||||
--
|
||||
-- PostgreSQL database dump
|
||||
--
|
||||
|
||||
\restrict ABfzP9IZJ8pAzvgt6E9jKpFn1phQ3b3Lgk09BZZTle5el6ODr77nIXlXnCf1PS1
|
||||
|
||||
-- Dumped from database version 17.6
|
||||
-- Dumped by pg_dump version 17.6
|
||||
|
||||
SET statement_timeout = 0;
|
||||
SET lock_timeout = 0;
|
||||
SET idle_in_transaction_session_timeout = 0;
|
||||
SET transaction_timeout = 0;
|
||||
SET client_encoding = 'UTF8';
|
||||
SET standard_conforming_strings = on;
|
||||
SELECT pg_catalog.set_config('search_path', '', false);
|
||||
SET check_function_bodies = false;
|
||||
SET xmloption = content;
|
||||
SET client_min_messages = warning;
|
||||
SET row_security = off;
|
||||
|
||||
--
|
||||
-- Name: _realtime; Type: SCHEMA; Schema: -; Owner: postgres
|
||||
--
|
||||
|
||||
CREATE SCHEMA _realtime;
|
||||
|
||||
|
||||
ALTER SCHEMA _realtime OWNER TO postgres;
|
||||
|
||||
--
|
||||
-- Name: auth; Type: SCHEMA; Schema: -; Owner: supabase_admin
|
||||
--
|
||||
|
||||
CREATE SCHEMA auth;
|
||||
|
||||
|
||||
ALTER SCHEMA auth OWNER TO supabase_admin;
|
||||
|
||||
--
|
||||
-- Name: pg_cron; Type: EXTENSION; Schema: -; Owner: -
|
||||
--
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS pg_cron WITH SCHEMA pg_catalog;
|
||||
|
||||
|
||||
--
|
||||
-- Name: EXTENSION pg_cron; Type: COMMENT; Schema: -; Owner:
|
||||
--
|
||||
|
||||
COMMENT ON EXTENSION pg_cron IS 'Job scheduler for PostgreSQL';
|
||||
|
||||
|
||||
--
|
||||
-- Name: extensions; Type: SCHEMA; Schema: -; Owner: postgres
|
||||
--
|
||||
|
||||
CREATE SCHEMA extensions;
|
||||
|
||||
|
||||
ALTER SCHEMA extensions OWNER TO postgres;
|
||||
|
||||
--
|
||||
-- Name: graphql; Type: SCHEMA; Schema: -; Owner: supabase_admin
|
||||
--
|
||||
|
||||
CREATE SCHEMA graphql;
|
||||
|
||||
|
||||
ALTER SCHEMA graphql OWNER TO supabase_admin;
|
||||
|
||||
--
|
||||
-- Name: graphql_public; Type: SCHEMA; Schema: -; Owner: supabase_admin
|
||||
--
|
||||
|
||||
CREATE SCHEMA graphql_public;
|
||||
|
||||
|
||||
ALTER SCHEMA graphql_public OWNER TO supabase_admin;
|
||||
|
||||
--
|
||||
-- Name: pg_net; Type: EXTENSION; Schema: -; Owner: -
|
||||
--
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS pg_net WITH SCHEMA extensions;
|
||||
|
||||
|
||||
--
|
||||
-- Name: EXTENSION pg_net; Type: COMMENT; Schema: -; Owner:
|
||||
--
|
||||
|
||||
COMMENT ON EXTENSION pg_net IS 'Async HTTP';
|
||||
|
||||
|
||||
--
|
||||
-- Name: pgbouncer; Type: SCHEMA; Schema: -; Owner: pgbouncer
|
||||
--
|
||||
|
||||
CREATE SCHEMA pgbouncer;
|
||||
|
||||
|
||||
ALTER SCHEMA pgbouncer OWNER TO pgbouncer;
|
||||
|
||||
--
|
||||
-- Name: realtime; Type: SCHEMA; Schema: -; Owner: supabase_admin
|
||||
--
|
||||
|
||||
CREATE SCHEMA realtime;
|
||||
|
||||
|
||||
ALTER SCHEMA realtime OWNER TO supabase_admin;
|
||||
|
||||
--
|
||||
-- Name: storage; Type: SCHEMA; Schema: -; Owner: supabase_admin
|
||||
--
|
||||
|
||||
CREATE SCHEMA storage;
|
||||
|
||||
|
||||
ALTER SCHEMA storage OWNER TO supabase_admin;
|
||||
|
||||
--
|
||||
-- Name: supabase_functions; Type: SCHEMA; Schema: -; Owner: supabase_admin
|
||||
--
|
||||
|
||||
CREATE SCHEMA supabase_functions;
|
||||
|
||||
|
||||
ALTER SCHEMA supabase_functions OWNER TO supabase_admin;
|
||||
|
||||
--
|
||||
-- Name: vault; Type: SCHEMA; Schema: -; Owner: supabase_admin
|
||||
--
|
||||
|
||||
CREATE SCHEMA vault;
|
||||
|
||||
|
||||
ALTER SCHEMA vault OWNER TO supabase_admin;
|
||||
|
||||
--
|
||||
-- Name: btree_gist; Type: EXTENSION; Schema: -; Owner: -
|
||||
--
|
||||
-- Extensions
|
||||
-- Gerado automaticamente em 2026-04-17T12:23:04.148Z
|
||||
-- Total: 10
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS btree_gist WITH SCHEMA public;
|
||||
|
||||
|
||||
--
|
||||
-- Name: EXTENSION btree_gist; Type: COMMENT; Schema: -; Owner:
|
||||
--
|
||||
|
||||
COMMENT ON EXTENSION btree_gist IS 'support for indexing common datatypes in GiST';
|
||||
|
||||
|
||||
--
|
||||
-- Name: citext; Type: EXTENSION; Schema: -; Owner: -
|
||||
--
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS citext WITH SCHEMA public;
|
||||
|
||||
|
||||
--
|
||||
-- Name: EXTENSION citext; Type: COMMENT; Schema: -; Owner:
|
||||
--
|
||||
|
||||
COMMENT ON EXTENSION citext IS 'data type for case-insensitive character strings';
|
||||
|
||||
|
||||
--
|
||||
-- Name: pg_graphql; Type: EXTENSION; Schema: -; Owner: -
|
||||
--
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS pg_cron WITH SCHEMA pg_catalog;
|
||||
CREATE EXTENSION IF NOT EXISTS pg_graphql WITH SCHEMA graphql;
|
||||
|
||||
|
||||
--
|
||||
-- Name: EXTENSION pg_graphql; Type: COMMENT; Schema: -; Owner:
|
||||
--
|
||||
|
||||
COMMENT ON EXTENSION pg_graphql IS 'pg_graphql: GraphQL support';
|
||||
|
||||
|
||||
--
|
||||
-- Name: pg_stat_statements; Type: EXTENSION; Schema: -; Owner: -
|
||||
--
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS pg_net WITH SCHEMA extensions;
|
||||
CREATE EXTENSION IF NOT EXISTS pg_stat_statements WITH SCHEMA extensions;
|
||||
|
||||
|
||||
--
|
||||
-- Name: EXTENSION pg_stat_statements; Type: COMMENT; Schema: -; Owner:
|
||||
--
|
||||
|
||||
COMMENT ON EXTENSION pg_stat_statements IS 'track planning and execution statistics of all SQL statements executed';
|
||||
|
||||
|
||||
--
|
||||
-- Name: pg_trgm; Type: EXTENSION; Schema: -; Owner: -
|
||||
--
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public;
|
||||
|
||||
|
||||
--
|
||||
-- Name: EXTENSION pg_trgm; Type: COMMENT; Schema: -; Owner:
|
||||
--
|
||||
|
||||
COMMENT ON EXTENSION pg_trgm IS 'text similarity measurement and index searching based on trigrams';
|
||||
|
||||
|
||||
--
|
||||
-- Name: pgcrypto; Type: EXTENSION; Schema: -; Owner: -
|
||||
--
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA extensions;
|
||||
|
||||
|
||||
--
|
||||
-- Name: EXTENSION pgcrypto; Type: COMMENT; Schema: -; Owner:
|
||||
--
|
||||
|
||||
COMMENT ON EXTENSION pgcrypto IS 'cryptographic functions';
|
||||
|
||||
|
||||
--
|
||||
-- Name: supabase_vault; Type: EXTENSION; Schema: -; Owner: -
|
||||
--
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS supabase_vault WITH SCHEMA vault;
|
||||
|
||||
|
||||
--
|
||||
-- Name: EXTENSION supabase_vault; Type: COMMENT; Schema: -; Owner:
|
||||
--
|
||||
|
||||
COMMENT ON EXTENSION supabase_vault IS 'Supabase Vault Extension';
|
||||
|
||||
|
||||
--
|
||||
-- Name: uuid-ossp; Type: EXTENSION; Schema: -; Owner: -
|
||||
--
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA extensions;
|
||||
|
||||
|
||||
--
|
||||
-- Name: EXTENSION "uuid-ossp"; Type: COMMENT; Schema: -; Owner:
|
||||
--
|
||||
|
||||
COMMENT ON EXTENSION "uuid-ossp" IS 'generate universally unique identifiers (UUIDs)';
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user