Modelagem de domínio: ObrigacaoRegulatoria com campo natureza
ADR 0005 — Modelagem de domínio: ObrigacaoRegulatoria com campo natureza
Decisão
No código: entidade única ObrigacaoRegulatoria com campo natureza enumerado:
licencaalvararegistrocadastroautorizacao
Na UI e na comunicação com cliente: usar "licença" (linguagem do Ale e do cliente).
Racional
Juridicamente licença, alvará, registro são instrumentos distintos. Operacionalmente o problema é o mesmo: prazo, documentos, renovação, risco de multa.
Modelar 3-5 entidades separadas = over-engineering sem ganho funcional. O campo natureza preserva a distinção para relatórios jurídicos quando precisar.
Consequências
Positivas:
- Modelo de dados simples: 1 tabela
obrigacao_regulatoria+ catálogo - Queries de dashboard (semáforo) não precisam unir várias tabelas
- Filtros por natureza são triviais
Negativas / a monitorar:
- Se em v3 aparecer regra jurídica que exija tratamento diferente por natureza (ex: alvará de funcionamento tem fluxo X, licença ambiental tem fluxo Y), modelar strategy por natureza — mas ainda assim 1 tabela.
- Glossário formal (definições de cada natureza) fica em
docs/glossario.mdquando o catálogo de posto SP estiver definido.
Renomeação do modelo em arquitetura.md
O docs/arquitetura.md §4 hoje chama a entidade de LicencaDaEmpresa. Em implementação, usar ObrigacaoRegulatoria (código) com alias Licenca (UI e docs de cliente).
Atualizar arquitetura.md quando for implementar Sprint 1. Até lá, este ADR é a fonte da verdade.
Ratificação pendente
Aguarda ratificação de Ale. Decisão técnica coerente com o escopo — baixo risco de reversão.
Ligação com as regras
- Regra 1 princípio 5 (simples até provar que precisa ser complexo)
- Regra 1 princípio 4 (substituível por design — strategy por natureza quando necessário)