Roadmap de Aprimoramento — Filament Core Contracts
Inventário Atual
- Interfaces Financeiras:
ProcessPaymentInterface,PaymentGatewayInterface,TaxCalculatorInterface,PdfGeneratorInterface. - Comunicações:
NotificationChannelInterface. - Eventos Globais:
PersonCreated,PersonUpdated,InvoiceCreated,PaymentCompleted,CommunicationSent. - DTOs Existentes: Focado em faturas (valores monetários, identificadores, timestamps).
Lacunas Identificadas
- Ausência de contratos formais para:
- Validação de Documentos (
DocumentValidatorContract) e lookup de endereços (AddressLookupContract), hoje presentes apenas no plano do módulo People. - Normalização de Contatos (telefone/e-mail) e atributos customizados.
- Eventos de auditoria (ex.:
DocumentValidated,ContactNormalized,TemplateRendered).
- Validação de Documentos (
- DTOs carecem de padronização de namespaces (ex.:
Payments\DTO,People\DTO). - Falta um manifesto público com compatibilidade por versão.
Estratégia de Versionamento
- Adotar versão semântica (
v1.x,v2.0para breaking changes). - Manter changelog e tabela de compatibilidade com módulos (
invoices,people,communications,starter-kit). - Usar
@deprecatedcom datas de remoção e links para substitutos. - Criar branch
nextpara protótipos antes de promover paramain.
Testes de Contrato
- Publicar suíte mínima (
tests/Contracts) que valide:- Implementações de
PaymentGatewayInterface(autorização, captura, idempotência). - Validadores de documentos e normalizadores de contato (casos válidos/ inválidos, máscaras).
- Serialização de DTOs (formato, timezone, precision).
- Eventos: schema estável, chaves obrigatórias.
- Implementações de
- Fornecer arquivos de fixture em JSON para garantir compatibilidade entre linguagens.
Plano de Evolução
- Registrar contratos transversais: mover para
filament-core-contractsas interfaces documentadas nos módulos (DocumentValidator, AddressLookup, ContactNormalizer, PersonAttribute). - Organizar namespaces: separar em domínios (
Payments,People,Communications,Shared). - Definir DTOs base para pessoas, endereços e contatos que possam ser reutilizados por todos os pacotes.
- Criar manifesto
docs/contracts/compatibility.mdcom matriz de versões. - Automatizar validação: workflow que execute testes de contrato sempre que um pacote dependente abrir PR.
Próximos Passos Imediatos
- Levantar inventário real do repositório
filament-core-contracts. - Priorizar contratos necessários para o
filament-core-starter-kit. - Abrir RFCs internas para contratos que afetam vários times (ex.: auditoria e templates).