- Marcelo Areco reviewers: [] created: 2026-07-02 updated: 2026-07-02 tags:
- ddd
- entities
- domain-model
Entities¶
Objetivo¶
Definir o padrão oficial para modelagem de Entidades na CoreFlow Platform.
Entidades representam objetos de domínio que possuem identidade própria e ciclo de vida independente.
Conceito¶
Uma Entidade é identificada pelo seu identificador, e não pelos seus atributos.
Mesmo que seus dados mudem ao longo do tempo, sua identidade permanece a mesma.
Características¶
Toda entidade deverá possuir:
- Identificador único
- Ciclo de vida
- Estado mutável
- Regras de negócio
- Auditoria
- Controle de empresa (quando aplicável)
Identificação¶
Toda entidade utilizará UUID como chave primária.
Exemplo:
É proibido utilizar atributos de negócio como identificador.
Entidades do Core¶
User¶
Responsabilidades:
- Identidade do usuário
- Dados cadastrais
- Situação
- Preferências
- Empresas vinculadas
Company¶
Responsabilidades:
- Representar empresa (Tenant)
- Configurações
- Licenciamento
- Filiais
Role¶
Responsabilidades:
- Representar papel
- Agrupar permissões
Permission¶
Responsabilidades:
- Representar uma autorização do sistema
AuditEvent¶
Responsabilidades:
- Registrar eventos corporativos
Notification¶
Responsabilidades:
- Representar uma notificação
File¶
Responsabilidades:
- Representar um arquivo armazenado
Entidades do CRM¶
Lead¶
Representa um potencial cliente.
Contact¶
Pessoa relacionada a uma empresa.
Account¶
Empresa ou cliente.
Opportunity¶
Negociação comercial.
Activity¶
Ligação, reunião, tarefa ou interação.
Proposal¶
Proposta comercial.
Entidades do ERP¶
- Product
- Supplier
- PurchaseOrder
- SalesOrder
- InventoryMovement
- Warehouse
- Invoice
Entidades Financeiras¶
- Payable
- Receivable
- Payment
- Receipt
- BankAccount
- CashFlow
Entidades de RH¶
- Employee
- EmploymentContract
- Payroll
- Attendance
- Vacation
Ciclo de Vida¶
stateDiagram-v2
[*] --> Created
Created --> Active
Active --> Updated
Updated --> Active
Active --> Inactive
Inactive --> Active
Active --> Deleted
Regras¶
Toda entidade deverá:
- possuir identidade própria;
- proteger suas invariantes;
- pertencer a um Aggregate;
- possuir auditoria;
- respeitar o contexto onde está inserida.
Persistência¶
Entidades são persistidas exclusivamente por seus respectivos Repositories.
Nunca diretamente por serviços externos.
Igualdade¶
A igualdade entre entidades será determinada exclusivamente pelo identificador.
Exemplo:
Segurança¶
Quando aplicável, toda entidade deverá conter:
- company_id
- created_at
- updated_at
- created_by
- updated_by
Utilizar Soft Delete sempre que apropriado.
Anti-patterns¶
É proibido:
- Entidades anêmicas
- Entidades compartilhadas entre contextos
- Regras de negócio em Controllers
- Regras de negócio em Serializers
- Chaves naturais como identidade
Objetivo Final¶
Estabelecer um modelo consistente de Entidades para toda a CoreFlow Platform, garantindo identidade, encapsulamento, rastreabilidade e alinhamento com os princípios de Domain-Driven Design.