Arquitetura GestorEasy v3

Objetivos
- ERP SaaS modular com isolamento forte por cliente (tenant).
- Base escalável e extensível por addons/plugins.

Multi-Tenancy
- Resolução do `tenantId` via header `X-Tenant-Id` (preferencial) ou subdomínio.
- Isolamento por banco: um schema/Banco por tenant (ex.: `gestoreasy_tenant_default`).
- Vantagens: isolamento de performance, segurança, backup/restore granulares, conformidade fiscal.

Camadas do Core
- `Kernel`: ponto central que registra rotas base e carrega módulos.
- `Router`: despacha requisições para handlers; minimalista para iniciar.
- `TenantContext`: mantém o contexto do tenant por request.
- `ConnectionManager`: provê `PDO` por tenant, com pool básico.
- `ModuleManager`: carrega módulos dinamicamente a partir de `modules/*`.

Autenticação e Autorização
- Implementado: JWT HS256 com escopo por tenant; rotas de login/refresh e RBAC básico (roles/permissions).
- Padrões: RBAC com papéis e permissões; logs de acesso.
- Integração: middleware de auth aplicável por rota/módulo.

Plugins/Addons
- Contrato: `ModuleInterface` com `register(Router)`, `name`, `version`, `dependencies`.
- Descoberta: por convenção de `modules/<Nome>/Module.php`.
- Dependências: validação futura de grafo; hoje apenas metadados.

Padrões de Integração
- Rotas API prefixadas por módulo (`/api/<modulo>/...`).
- Eventos internos (futuro): bus simples para acoplamento leve.
- DTOs e validação: camadas previstas para consolidar contratos.

Banco de Dados
- Campos brasileiros suportados nos módulos (CPF/CNPJ, EAN, NCM, CEST, CFOP, PIS/COFINS).
- Migrações por módulo (`migrations/*.sql`) — execução por tenant.

Metodologia e Qualidade
- Incremental com versões semânticas.
- Testes por módulo e smoke tests por tenant.
- Observabilidade: logs por tenant; métricas básicas (futuro).