Appearance
Banco de Dados
O CRM usa PostgreSQL 13 com extensão pgvector (para futuras features de embedding). O schema é gerenciado via Prisma ORM.
Acesso
Em produção:
bash
# Via container (dentro do servidor)
docker exec -it crm-galdix-postgres-1 psql -U $POSTGRES_USER -d $POSTGRES_DB
# Via logs
docker logs crm-galdix-postgres-1 --tail 50Em desenvolvimento:
bash
# Usando DATABASE_URL do .env.secrets
psql $DATABASE_URL
# Ou via Prisma Studio
cd backend && npx prisma studioTecnologia
| Componente | Versão | Função |
|---|---|---|
| PostgreSQL | 13 | Banco relacional principal |
| pgvector | latest | Extensão para vetores (futuro) |
| Prisma Client | 5.x | ORM — queries type-safe |
| Prisma Migrate | — | Migrations versionadas |
Configuração de produção
O container PostgreSQL roda com:
- CPU: 1 core (cpu_quota=100000)
- Persistência: Volume Docker
postgres_data→/var/lib/postgresql/data - Rede:
network_swarm_publiccom aliascrm-postgres - Health check:
pg_isreadya cada 10s
Estatísticas do schema
| Métrica | Valor |
|---|---|
| Modelos (tabelas) | ~40 |
| Tamanho do schema | 942 linhas |
| Relações principais | Organization → tudo (multi-tenant) |
| Índices | ~50+ para performance |
Seções desta área
- Schema Completo — todos os modelos com campos e relações
- Migrations — como criar e aplicar migrations
Padrões do schema
Multi-tenancy
Quase toda tabela tem organizationId: String como chave de isolamento. O TenantInterceptor garante que toda query inclui esse campo.
IDs
- UUID (via Prisma
@default(uuid())) para a maioria das entidades - CUID (via
@default(cuid())) para entidades de volume alto (tokens, logs, eventos)
Timestamps
Padrão em toda tabela com dados mutáveis:
prisma
createdAt DateTime @default(now())
updatedAt DateTime @updatedAtSoft delete
O sistema não usa soft delete. Exclusões são permanentes. Logs de auditoria registram as ações antes da exclusão.
JSON fields
Campos Json? são usados para dados estruturados variáveis:
Campaign.behaviorRules— regras de comportamentoCampaign.metadata— dados extrasStore.settings— configurações por lojaStore.businessHours— horários de funcionamentoTransaction.items— produtos da vendaChatwootConfig.*Message— mensagens configuráveis