Entity
Overview
Aplicar o padrão de Entidades do projeto com foco em identidade (id), invariantes, imutabilidade prática (sem setters), validação no tryCreate e operações seguras com cloneWith.
Guidelines
- Ler
references/entity-pattern.mdantes de criar/alterar entidades. - Estender
Entity<Type, Props>de@namespace/sharede manter construtorprivateouprotected. - Expor API consistente:
create(throw) etryCreate(Result). - Validar invariantes com VOs (
Id,Name,Text,Number,Sku, etc.) eResult.combine. - Persistir no
propsapenas valores normalizados (instance.value,instance.propsquando aplicável). - Implementar getters para propriedades de domínio; evitar acesso externo direto a
propsfora da entidade. - Preferir métodos de domínio explícitos (ex.:
deactivate,createMovementIn) para comportamento relevante.
Workflow
- Identificar invariantes e tipo de identidade da entidade (
Id.tryCreate/Id.required). - Mapear dependências de VOs e entidades aninhadas para validação.
- Implementar
Props, classe, getters ecreate/tryCreateno padrão do projeto. - Adicionar métodos de domínio quando houver transição de estado/comportamento.
- Criar ou atualizar testes em
packages/*/core/test/**cobrindo criação válida, inválida,cloneWithe igualdade porid. Usar skilltest-unitpara padrão e gate ≥95%. - Revisar consistência de mapeamento com repositórios/DTOs para novos campos.
References
Consultar references/entity-pattern.md para paths, checklist, exemplos e armadilhas comuns observadas no código atual.
Consultar ../skills-standards.md para convenção global de nomenclatura.
Global Standards
- Consultar
../skills-standards.mdpara padroes globais de nomenclatura e convencoes gerais entre skills.