Domain Service
Overview
Aplicar o padrão de serviço de domínio para encapsular regras que não pertencem naturalmente a uma única entidade/VO, mantendo lógica pura e independente de infraestrutura.
Guidelines
- Considerar domínio apenas dentro de
*core/*. - Não tratar
*.service.tsdeweb,frontend,apiou infraestrutura como domínio. - Manter o serviço sem dependência de framework, HTTP, banco, Prisma, Nest, React ou estado global.
- Preferir funções/métodos puros e determinísticos.
- Receber dados de domínio (entities, DTOs de domínio, VOs) e retornar tipos simples/valores de domínio.
- Nomear por intenção de regra (
Policy,Calculator,Resolver,Specification).
Workflow
- Confirmar que o arquivo alvo está em
packages/*/core/*. - Identificar a regra transversal que não cabe em uma única entidade.
- Definir API mínima do serviço (classe com método estático ou instância simples).
- Implementar regra sem side effects e sem I/O.
- Garantir consumo simples por use cases/contexts.
- Criar testes unitários cobrindo cenários principais e bordas.
References
Consultar references/domain-service-pattern.md para critérios de fronteira, exemplos reais e checklist de implementação/testes.
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.