Modelo de dados
Entidades Prisma (User, Customer, Tenant, App, AuditLog) e seus relacionamentos.
O schema Prisma (prisma/schema.prisma, PostgreSQL) define cinco modelos.
Todas as entidades de negócio usam soft delete (deletedAt).
Diagrama de entidades
Entidades
User
Perfil local vinculado a uma identidade Keycloak.
| Campo | Tipo | Observações |
|---|---|---|
id | uuid | PK |
idIdentity | string | Único; o sub do Keycloak |
name | string | |
email | string | Único |
type | string | Admin | Technician | Cooperative |
customerId | uuid? | Customer opcional (FK) |
createdAt/updatedAt/deletedAt | datetime | deletedAt = soft delete |
Customer
Cliente/empresa. Raiz do multi-tenancy.
| Campo | Tipo | Observações |
|---|---|---|
id | uuid | PK |
federalTaxId | varchar(14) | Único (CPF/CNPJ) |
name | string | |
alias | string? | |
email | string? | |
phone | string? | |
logoPath | string? | |
active | boolean | Padrão true |
Tenant
Instância de um App para um Customer.
| Campo | Tipo | Observações |
|---|---|---|
id | uuid | PK |
customerId | uuid | FK → Customer (indexado) |
appId | uuid | FK → App (indexado) |
name | string | |
active | boolean | Padrão true |
metadata | json? | Dados livres |
keycloakClientId | string? | Único; client Keycloak para auth de serviço |
allowedScopes | json? | Escopos permitidos no fluxo app-to-app |
App
Aplicação registrada (ex.: app1, app2).
| Campo | Tipo | Observações |
|---|---|---|
id | uuid | PK |
name | string | Único |
AuditLog
Registro de auditoria gravado em operações de escrita (via @AuditLog).
| Campo | Tipo | Observações |
|---|---|---|
id | uuid | PK |
timestamp | datetime | |
action | string | read | create | update | delete |
entity | string | Entidade afetada |
entityId | string? | Id do registro afetado |
metadata | json? | |
userId | string | Autor da ação |