A Keeptor utiliza uma arquitetura de banco de dados Multi-Organizações e Multi-Empresas, permitindo isolamento de dados e flexibilidade operacional em dois níveis hierárquicos:
Arquitetura Multi-Tenant: Organizações e Empresas
Organizações (Organizations)
Representa o nível contratual da plataforma. Cada organização agrupa todas as configurações e dados de um contrato específico:
- Permissões e políticas globais do contrato
- Configurações gerais e limites de uso
- Dados de faturamento e informações contratuais
Empresas (Companies)
Representa o nível operacional dentro de uma organização. Cada empresa é uma unidade de negócio que utiliza a plataforma no dia a dia:
- Vinculada a uma organização (contrato)
- Responsável pelos lançamentos e registros transacionais
- Permite que múltiplos CNPJs ou filiais operem sob o mesmo contrato
- Segregação de dados operacionais entre empresas
Resumo: Uma Organização pode conter várias Empresas, onde a organização define "quem contrata" e as empresas definem "quem opera".
Relacionamento das Tabelas
┌─────────────────┐ ┌─────────────────────┐
│ Keeptor Plat │────────>│ KPT_CORE_ORG │
│ │ 1:N │ Organizations │
│─────────────────│ │─────────────────────│
│ │ │ organization_id [PK]│
│ │ │ partner_id [FK]│
│ │ │ organization_name │
│ │ │ subscription_plan │
└─────────────────┘ │ max_users │
│ max_concurrent_sess │
└──────────┬──────────┘
│
┌───────────────────────────┼───────────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ KPT_CORE_COM │ │ KPT_CORE_USR │ │ KPT_CORE_ORG_MOD│
│ Companies │ │ Users │ │ Modules Ativados│
│─────────────────│ │─────────────────│ │─────────────────│
│ organization_id │ │ organization_id │ │ organization_id │
│ company_id [PK]│ │ user_id [PK]│ │ module_id [PK]│
│ company_name │ │ user_email [UK]│ │ activated_at │
│ company_type │ │ user_name │ │ expires_at │
│ is_headquarters │ │ user_role │ └─────────────────┘
└─────────────────┘ │ auth_user_id[FK]│ ▲
└────────┬────────┘ │
│ │
▼ │
┌─────────────────┐ ┌───────┴───────┐
│KPT_CORE_SESSIONS│ │ KPT_CORE_MOD │
│ Sessoes Ativas │ │ Modules │
│─────────────────│ │───────────────│
│ session_id [PK]│ │ module_id [PK]│
│ user_id [FK]│ │ solution_id │
│ ip_address │ │ module_name │
│ not_after │ └───────┬───────┘
│ is_active │ │
└─────────────────┘ │
┌───────┴───────┐
│ KPT_CORE_SOL │
│ Solutions │
│───────────────│
│solution_id[PK]│
│ solution_name │
│ OMNI/CRM/ETC │
└───────────────┘
Lista de Tabelas
Core
| Tabela | Descrição |
|---|---|
kpt_core_org | Organizações com contrato ativo |
kpt_core_com | Filiais e unidades operacionais |
kpt_core_usr | Usuários do sistema |
kpt_core_usr_sessions | Sessões ativas por usuário |
kpt_core_usr_per | Permissões por usuário |
kpt_core_sol | Soluções: Omnichannel, CRM, ERP |
kpt_core_mod | Módulos de cada solução |
kpt_core_org_mod | Módulos contratados por org |
kpt_core_org_banners | Banners personalizados |
kpt_core_ent | Mapeamento de entidades |
Nomenclatura
As tabelas seguem o padrão KPT_[SOLUCAO]_[MODULO]_[NOME]:
KPT_CORE_→ Tabelas do núcleo multi-tenantKPT_OMNI_→ Tabelas do OmnichannelKPT_SHARED_→ Tabelas compartilhadas
Constraints:
PK_→ Chave primáriaFK_→ Chave estrangeiraUK_→ Índice únicoCK_→ Validação (check)