7.0 KiB
Guia de Instalação e Uso — AgenciaPsi Database
Pré-requisitos
- Docker Desktop instalado e rodando
- Node.js 18+ instalado
- Supabase CLI instalado (
npm install -g supabase)
Instalação do Zero (banco vazio)
1. Iniciar o Supabase
# Na raiz do projeto (agenciapsi-primesakai/)
npx supabase start
Aguarde até o container supabase_db_agenciapsi-primesakai estar rodando.
2. Verificar se o container está ok
docker ps | grep supabase_db
Deve mostrar o container com status Up.
3. Instalar o banco completo
cd database-novo
node db.cjs setup
Isso faz tudo automaticamente:
- Aplica o schema completo (84 tabelas, funções, triggers, policies)
- Aplica os 7 fixes conhecidos
- Cria os 11 usuários de teste
- Cria os 7 planos + 4 preços
- Cria as 26 features + 85 vínculos plano↔feature
- Cria as 9 subscriptions + compromissos determinados
- Cria os templates de email, notificação e carousel
- Cria backup automático pós-instalação
- Verifica integridade no final
4. Verificar
node db.cjs status
Deve mostrar todos os counts verdes.
Backup
Criar backup manual
node db.cjs backup
Salva em backups/YYYY-MM-DD/ com 3 arquivos:
schema.sql— estrutura do bancodata.sql— dados (sem schemas de infra)full_dump.sql— tudo junto
Backup automático
O backup é feito automaticamente:
- Após o
setup - Antes de cada
migrate - Antes de cada
restore - Antes de cada
reset
Retenção
Backups com mais de 30 dias são removidos automaticamente. Para alterar, edite backupRetentionDays no db.config.json.
Restaurar o Banco
Restaurar do último backup
node db.cjs restore
Restaurar de uma data específica
node db.cjs restore 2026-03-23
O restore:
- Cria backup de segurança do estado atual
- Limpa o schema public
- Aplica o full_dump.sql do backup
- Verifica integridade
Migrations (alterações no banco)
Criar uma migration
Crie um arquivo SQL na pasta migrations/ com nome sequencial:
migrations/
├── 001_add_column_x.sql
├── 002_create_table_y.sql
└── 003_fix_something.sql
O nome deve começar com número para garantir a ordem.
Aplicar migrations pendentes
node db.cjs migrate
O CLI:
- Cria backup automático
- Compara com a tabela
_db_migrationsno banco - Aplica apenas as que ainda não foram executadas
- Registra cada migration aplicada
- Se uma falhar, para imediatamente (use
restorepara voltar)
Ver migrations aplicadas
node db.cjs status
Seeds (dados de teste)
Rodar todos os seeds
node db.cjs seed all # ou simplesmente: node db.cjs seed
Rodar grupo específico
node db.cjs seed users # Apenas usuários (seed_001 a 003)
node db.cjs seed system # Apenas sistema (seed_010 a 014)
node db.cjs seed test_data # Dados de teste (seed_020)
Ordem dos seeds
| # | Arquivo | O que faz |
|---|---|---|
| 1 | seed_001_fixed.sql |
6 usuários base + tenants |
| 2 | seed_002.sql |
Supervisor + Editor |
| 3 | seed_003.sql |
Therapist2, Therapist3, Secretary |
| 4 | seed_010_plans.sql |
7 planos + 4 preços |
| 5 | seed_011_features.sql |
26 features |
| 6 | seed_012_plan_features.sql |
85 vínculos plano↔feature |
| 7 | seed_013_subscriptions.sql |
9 subscriptions + compromissos |
| 8 | seed_014_global_data.sql |
Templates + carousel |
Outros Comandos
Ver status
node db.cjs status
Mostra: container, backups, migrations aplicadas/pendentes, counts de todas as tabelas.
Comparar mudanças
node db.cjs diff
Compara o schema atual no banco com o último backup. Mostra tabelas adicionadas, removidas ou alteradas.
Verificar integridade
node db.cjs verify
Checa se os dados essenciais existem (plans, features, subscriptions, etc).
Reset completo
node db.cjs reset
⚠ CUIDADO: Apaga tudo e reinstala do zero. Cria backup antes.
Estrutura de Pastas
database-novo/
├── db.js ← CLI principal
├── db.config.json ← Configuração (container, seeds, fixes)
│
├── schema/ ← Schema SQL separado por seção
│ ├── 00_full/ ← Schema completo (referência)
│ ├── 01_extensions/ ← Extensões PostgreSQL
│ ├── 02_types/ ← Enums e tipos
│ ├── 03_functions/ ← Funções (11 arquivos por domínio)
│ ├── 04_tables/ ← Tabelas (10 arquivos por domínio)
│ ├── 05_views/ ← 24 views
│ ├── 06_indexes/ ← Índices
│ ├── 07_foreign_keys/ ← PKs, FKs, constraints
│ ├── 08_triggers/ ← Triggers
│ ├── 09_policies/ ← 217 RLS policies
│ └── 10_grants/ ← Grants
│
├── seeds/ ← Seeds de dados
│ ├── seed_001_fixed.sql
│ ├── ...
│ └── run_all_seeds.sh
│
├── migrations/ ← Migrations (alterações incrementais)
│
├── fixes/ ← Correções aplicadas
│
├── backups/ ← Backups com data
│ ├── 2026-03-23/
│ └── ...
│
└── docs/ ← Documentação
├── setup_guide.md ← Este arquivo
├── schema_map.md ← Mapa de 84 tabelas
├── business_rules.md ← Regras de negócio
└── users_test.md ← Usuários de teste
Credenciais de Teste
| Senha | Tipo | |
|---|---|---|
| paciente@agenciapsi.com.br | Teste@123 | Paciente |
| terapeuta@agenciapsi.com.br | Teste@123 | Terapeuta solo |
| clinica1@agenciapsi.com.br | Teste@123 | Clínica coworking |
| clinica2@agenciapsi.com.br | Teste@123 | Clínica recepção |
| clinica3@agenciapsi.com.br | Teste@123 | Clínica full |
| saas@agenciapsi.com.br | Teste@123 | Admin plataforma |
| supervisor@agenciapsi.com.br | Teste@123 | Supervisor |
| editor@agenciapsi.com.br | Teste@123 | Editor |
| therapist2@agenciapsi.com.br | Teste@123 | Terapeuta |
| therapist3@agenciapsi.com.br | Teste@123 | Terapeuta |
| secretary@agenciapsi.com.br | Teste@123 | Secretária |
Troubleshooting
"Container não está rodando"
# Verificar
docker ps | grep supabase
# Reiniciar
npx supabase stop
npx supabase start
"Tabela não existe" após setup
O schema pode não ter sido aplicado corretamente. Rode:
node db.cjs reset
"Permission denied" / RLS bloqueando
Se features/plan_features estiverem vazios, o RLS bloqueia tudo. Rode:
node db.cjs seed system
Migration falhou no meio
# Voltar ao estado anterior
node db.cjs restore
# Corrigir o SQL da migration, depois tentar de novo
node db.cjs migrate
Quero começar do zero
node db.cjs reset
Isso apaga tudo, reaplica schema, fixes, seeds, e verifica.