Especificação Técnica — MAIORE Simulador Tributário
MAIORE Simulador Tributário · Levantamento 2026-09-29
Especificação Técnica — MAIORE Simulador Tributário
| Campo |
Valor |
| Sistema |
MAIORE Simulador Tributário |
| Stack |
Laravel 13.18.1 / PHP 8.3 / MySQL / Livewire 3 / Spatie Permission |
| Versão do documento |
1.1 (levantamento) |
| Data |
2026-09-29 |
| Ambiente de referência |
http://simulador-tributario.local + repositório local |
Objetivo: descrever onde e como o sistema está implementado — arquitetura, camadas, dados, APIs, jobs, segurança e pontos críticos.
Complementa a Documentação Funcional.
O uso passo a passo está no Manual do Sistema.
1. Visão da arquitetura
Diagrama (Mermaid)flowchart TB
subgraph presentation [Apresentação]
Blade[Blade Views]
LW[Livewire SpedRelatorio]
Assets[JS/CSS Mix + Material Dashboard]
end
subgraph application [Aplicação Laravel]
Routes[routes/web.php + api.php]
MW[Middleware Stack]
Ctrl[Http Controllers Admin/Api]
Svc[Services ~53]
Jobs[Jobs + Schedule]
end
subgraph domain [Domínio / Persistência]
Models[Eloquent Models]
Scope[TenantScope]
DB[(MySQL simulador_tributa)]
end
subgraph external [Externos]
Brasil[BrasilAPI CNPJ/CEP]
SVRS[Portal SVRS ClassTrib]
Brevo[Brevo SMTP API]
end
Blade --> Routes
LW --> Routes
Routes --> MW --> Ctrl --> Svc --> Models --> Scope --> DB
Svc --> Brasil
Svc --> SVRS
Ctrl --> Brevo
Jobs --> Svc
Características arquiteturais (CONFIRMADO)
| Padrão |
Uso no projeto |
| MVC Laravel |
Controllers + Blade |
| Service Layer |
Núcleo fiscal em app/Services/* |
| Multi-tenant por coluna |
idtenant + TenantScope |
| ACL |
Spatie Permission (parcial) + role:ADMIN + admin.tenant |
| Sem Repository |
Pasta Repositories inexistente |
| Sem Form Requests |
Validação inline nos controllers |
| Queue |
QUEUE_CONNECTION=sync no ambiente analisado |
2. Stack e dependências
Backend (composer.json)
| Pacote |
Uso |
laravel/framework ^13 |
Framework |
php ^8.3 |
Runtime |
livewire/livewire ^3 |
Componentes (itens SPED) |
spatie/laravel-permission ^6 |
Roles/permissions |
laravel/sanctum ^4 |
API token (/api/user) |
laravel/ui ^4 |
Auth scaffolding |
phpoffice/phpspreadsheet ^5 |
Exports Excel |
guzzlehttp/guzzle ^7 |
HTTP externo |
anhskohbo/no-captcha |
Captcha |
mobiledetect/mobiledetectlib |
Detecção mobile |
Frontend (package.json)
laravel-mix, axios, bootstrap-select, cep-promise, flatpickr, jquery-mask-plugin.
Infra identificável
| Item |
Evidência |
| URL local |
http://simulador-tributario.local |
| Deploy FTP |
.ftp-deploy-sync-state.json, pasta deploy/ |
| CI |
.github/ |
| Banco |
MySQL simulador_tributa |
3. Estrutura de diretórios relevantes
app/
Console/Commands/SyncClassTribCommand.php
Dto/PendenciaDto.php
Exceptions/SimulacaoBloqueadaException.php
Http/Controllers/Admin/ # núcleo + cadastros
Http/Controllers/Api/ # BrasilApi, GovBr
Http/Livewire/SpedRelatorioItensComponent.php
Http/Middleware/ # SingleSession, AdminTenant, …
Jobs/ # ConsultaSimplesJob, SyncClassTribJob
Models/
Services/ # ~53 services
Scopes/TenantScope.php
Support/ Traits/ Mail/
routes/web.php | api.php | console.php
resources/views/admin/
database/migrations/
4. Camada HTTP — rotas e middleware
Grupos principais
| Grupo |
Middleware |
Prefixo |
| Guest |
guest |
login, register, password |
| Auth app |
auth, single.session |
dashboard, admin/*, profile |
| Tenants |
admin.tenant + role:ADMIN |
admin/tenants |
| API proxies |
nenhum |
/api/brasil/*, /api/gov/* |
| API user |
auth:sanctum |
/api/user |
Middleware custom (CONFIRMADO)
| Alias |
Classe |
Comportamento |
single.session |
SingleSession |
Logout se user.idsession !== Session::getId() |
admin.tenant |
AdminTenantMiddleware |
Exige tenant.is_admin_tenant = 1 |
role / permission |
Spatie |
RBAC (uso pontual de role:ADMIN) |
Total de rotas: 201 (php artisan route:list, pós-limpeza de legado).
5. Controllers (mapa técnico)
Controllers do núcleo
| Controller |
Responsabilidade |
SessionsController |
Login/logout + idsession |
ForgotPasswordController |
Reset senha (Brevo) |
DashboardController |
Redirect para simulações |
Admin\SimulacaoTributariaController |
CRUD simulação + reforma + exports |
Admin\SimulacaoConfrontoController |
Confronto NCM/ClassTrib/cadastro |
Admin\SimulacaoDeparaController |
De-para por simulação |
Admin\SimulacaoVersaoController |
Versionamento |
Admin\SpedImportController |
Upload/process/itens SPED |
Admin\PendenciaController |
Pendências + exports |
Admin\MapaDeparaController |
Biblioteca De-para |
Admin\ReformaCenarioController |
Cenários CBS/IBS |
Admin\ClienteController |
Clientes + job Simples |
Admin\AuditoriaController |
Log de eventos |
Admin\CardHelpController |
Card-help / feedback |
Admin\UserController |
Usuários + roles |
Api\BrasilApiController |
Proxy CNPJ/CEP |
Api\GovBrController |
Proxy Simples |
6. Services (camada de domínio)
| Área |
Classes principais |
| SPED |
SpedImportProcessor, parsers, SpedToSimulacaoService, SimulacaoFromSpedService, SpedRelatorioService |
| Regime atual |
SimulacaoCalculoService, SimulacaoGrupoService, SimulacaoConsolidacaoService |
| Reforma |
ReformaCalculoService, ReformaAnaliseService, ReformaTransicaoService, ProdutoOrigemClassifier, ClassTribResolverService, ClassTribSyncService |
| Qualidade |
ConfrontoService, ConfrontoRegrasCatalog, ProntidaoService, ConfiabilidadeService, DiagnosticoMvpService |
| De-para |
MapaDeparaResolver, MapaDeparaPreviewService |
| Governança |
AuditoriaService, VersionamentoService, SimulacaoVersaoService |
| Exports |
RelatorioExecutivoService, RelatorioPendenciasService, SimulacaoConsolidadoExportService |
| Integrações |
BrasilApiService, GovBrService |
Exceção de negócio: SimulacaoBloqueadaException em ReformaCalculoService::verificarBloqueio.
7. Modelo de dados
Entidades centrais
tenant ──< users
tenant ──< empresa ──< pessoa
pessoa ──< simulacao_tributaria ──< itens/resultados/logs/versões
simulacao_tributaria ──|| reforma_simulacao ──< produtos/resultados
pessoa ──< sped_import ──< sped_doc_item / sped_reg_0200
pessoa ──< simulacao_pendencia / simulacao_prontidao
Status relevantes
| Entidade |
Campo |
Valores |
| Simulação |
status |
rascunho, concluida, validada_sped |
| Simulação |
regime |
lucro_real, lucro_presumido, simples |
| Pendência |
status |
aberta, em_revisao, resolvida, ignorada |
| Pendência |
impacto |
bloqueia, ressalva, informativo |
| Prontidão |
classificacao |
simulavel, simulavel_ressalva, nao_simulavel |
Detalhamento: documentacao-sistema/08-modelo-dados.md.
8. APIs HTTP
| Método |
URI |
Auth |
Controller |
| GET |
/api/brasil/cnpj/{cnpj} |
Pública |
BrasilApiController@cnpj |
| GET |
/api/brasil/cep/{cep} |
Pública |
BrasilApiController@cep |
| GET |
/api/gov/simples/{cnpj} |
Pública |
GovBrController@simples |
| GET |
/api/user |
Sanctum |
Closure |
Listagens admin/*/fetch são rotas web autenticadas (JSON AJAX).
9. Processos automáticos
| Processo |
Trigger |
Resultado |
SyncClassTribJob |
Schedule diário 06:00 |
Upsert classtrib_referencia |
classtrib:sync |
Command manual |
Idem (--fonte=portal\|api\|local) |
ConsultaSimplesJob |
Create/update cliente |
Atualiza pessoa + diagnóstico |
DiagnosticoMvpService |
Pós-parse SPED OK |
Pendências + prontidão + log |
10. Integrações externas
| Sistema |
Auth |
Código |
| BrasilAPI |
Nenhuma |
BrasilApiService |
| Gov/Simples (proxy) |
Nenhuma |
GovBrService |
| SVRS ClassTrib |
Portal / cert opcional |
ClassTribSyncService |
| Brevo |
API Key |
ForgotPasswordController |
11. Frontend técnico
| Item |
Detalhe |
| Layout |
components/layout.blade.php + sidebar |
| Views |
resources/views/admin/** |
| Livewire |
SpedRelatorioItensComponent |
| Stepper |
?etapa=1..5 · SimulacaoMvpProgressService |
| Confronto |
confronto=resumo\|ncm\|classtrib\|cadastro |
12. Segurança e riscos técnicos
| ID |
Item |
Severidade |
| S1 |
APIs /api/brasil/* e /api/gov/* públicas |
Alta |
| S2 |
Permissions Spatie sem enforcement no simulador |
Média |
| S3 |
forcar_simulacao bypassa bloqueio de prontidão |
Média |
| S4 |
Queue sync — requests longos |
Média |
| S5 |
Validação espalhada (sem FormRequest) |
Baixa/Média |
13. Testes e implantação
| Item |
Situação |
| PHPUnit ^12 |
Presente; cobertura parcial |
| Exemplo |
tests/Unit/ConfrontoRegrasTest.php |
| Deploy |
FTP + pasta deploy/ |
| Local |
simulador-tributario.local |
14. Matriz de rastreabilidade (amostra)
| Função |
Rota |
Controller |
Service |
Tabela |
| Listar simulações |
admin.simulacoes.index |
SimulacaoTributariaController |
— |
simulacao_tributaria |
| Import SPED |
from-sped* / sped.process |
Simulacao* / SpedImport |
SpedImportProcessor |
sped_* |
| Confronto |
…confronto.recalcular |
SimulacaoConfrontoController |
ConfrontoService |
simulacao_pendencia |
| Calcular reforma |
…reforma.recalcular |
SimulacaoTributariaController |
ReformaCalculoService |
reforma_* |
| Sync ClassTrib |
schedule |
SyncClassTribJob |
ClassTribSyncService |
classtrib_referencia |
15. Glossário técnico
| Termo |
Significado |
| TenantScope |
Global scope filtrando por idtenant |
| Prontidão |
Score/classificação em simulacao_prontidao |
| Confronto |
ConfrontoRegrasCatalog + ConfrontoService |
| Grupo |
escopo=grupo com filhas mensais |
| cClassTrib |
Código em classtrib_referencia |
16. Documentos relacionados
| Documento |
Arquivo |
| Documentação Funcional |
DOCUMENTACAO_FUNCIONAL_SISTEMA.md / .pdf |
| Manual do Sistema |
MANUAL_DO_SISTEMA.md / .pdf |
| Acervo detalhado |
documentacao-sistema/ |