Plano do Módulo packages/people
Objetivo
Fornecer uma base independente para gestão de pessoas (físicas e jurídicas), papéis e sincronização de dados entre os demais módulos do ecossistema Filament Core dentro do monorepo.
Estrutura Inicial
text
packages/people/
├─ src/
│ ├─ Models/Person.php
│ ├─ Enums/PersonRole.php
│ ├─ DTOs/
│ ├─ Events/
│ └─ Actions/
│ ├─ Documents/
│ │ ├─ Contracts/
│ │ ├─ Validators/
│ │ └─ ValueObjects/
│ ├─ Addresses/
│ │ ├─ Contracts/
│ │ └─ Providers/
│ └─ Contacts/
│ ├─ Normalizers/
│ └─ Validators/
├─ database/
│ ├─ migrations/
│ └─ seeders/
├─ tests/
│ ├─ Feature/
│ └─ Unit/
└─ composer.jsonPontos-Chave
- Models e Enums:
Personcentraliza atributos;PersonRoledefine papéis múltiplos. - DTOs: expõem dados normalizados (contato, endereço, documentos) para
packages/invoicesepackages/communications, incluindo metadados customizados. - Eventos: publicar
PersonCreatedePersonUpdatedusando payloads definidos empackages/contracts. - Ações: encapsular fluxos críticos (criação, atualização, sincronização externa) com
Laravel Actions. - Documentos: Value Objects por tipo (
NationalId,TaxId,Passport) configuráveis via banco, com suporte a registradores de regex e algoritmos de verificação. - Endereços: adaptadores para múltiplas APIs de CEP, normalização de países/estados e fallback manual.
- Contatos: pipelines para validar telefones (E.164, mascaramento) e e-mails (MX check, deduplicação).
Integrações
- Consumir contratos de endereço/documento de
packages/contracts. - Disponibilizar listeners de eventos externos (ex.: atualizar permissões quando pagamento for concluído).
- Permitir extensões via container para registrar validadores ou provedores customizados para cenários regionais.
Roadmap Técnico
- Implementar migrations e seeds mínimos (papéis padrão, templates de documentos, campos customizados).
- Criar factories e testes de contrato cobrindo eventos, DTOs, validadores e provedores de CEP.
- Disponibilizar painéis Filament para gerenciar configurações (regex, campos extras, provedores).
- Documentar APIs públicas dentro de
docs/people/e manter exemplos de extensões.