Relatório Tecnológico: Monitor SEFAZ
1. Introdução
Este relatório tem como objetivo detalhar a arquitetura e o stack tecnológico das aplicações monitor-sefaz-api (Backend) e monitor-sefaz-front (Frontend), que compõem o sistema Monitor SEFAZ. A análise foi realizada com base na inspeção do código-fonte e na observação da funcionalidade do site monitorsefaz.com.br.
2. Stack Tecnológico
O sistema adota uma arquitetura moderna de Single Page Application (SPA) com um backend robusto, utilizando tecnologias de ponta para garantir desempenho, escalabilidade e manutenibilidade.
| Componente | Tecnologia Principal | Frameworks/Bibliotecas Chave | Propósito |
|---|---|---|---|
| Frontend | React (com TypeScript) | Vite, TailwindCSS, shadcn/ui, recharts, wouter, i18next | Interface do usuário, visualização de dados em tempo real. |
| Backend | .NET 9.0 (C#) | ASP.NET Core, Minimal APIs, JWT Bearer, StackExchange.Redis, AWS SDKs, Serilog | Lógica de negócios, comunicação com SEFAZ, autenticação, caching. |
| Monitoramento SEFAZ | C# (.NET 9.0) | HttpClient, SOAP XML | Integração e consulta aos serviços de Nota Fiscal Eletrônica (NFe), Conhecimento de Transporte Eletrônico (CTe) e Documento de Conhecimento Eletrônico (DCe). |
3. Arquitetura do Sistema
A arquitetura segue os princípios da Clean Architecture (Arquitetura Limpa), com o backend estruturado em camadas para isolar a lógica de domínio e facilitar testes e manutenção.
3.1. Diagrama de Arquitetura (Mermaid)
O fluxo de dados e a interação entre os principais componentes do sistema podem ser visualizados no diagrama abaixo:
graph TD
A[Usuário Browser] -->|HTTPS| B[Frontend React]
B -->|REST API| C[Backend .NET 9.0]
C -->|Consulta Status| D[SefazMonitor.Sefaz]
D -->|HttpClient SOAP| E[Serviços SEFAZ]
C -->|Cache| F[Redis]
C -->|Auth| G[AWS Cognito]
C -->|Logs| H[CloudWatch] 3.2. Fluxo de Consulta de Status SEFAZ (Mermaid)
O serviço de monitoramento no backend (SefazStatusService) implementa uma lógica sofisticada para garantir a performance e a resiliência das consultas, incluindo mecanismos de caching e contingência.
flowchart TD
A[Requisição de Status] --> B{UF e Serviço Válidos?}
B -->|Não| C[Erro Inválido]
B -->|Sim| D[Verificar Cache Redis]
D -->|Cache Válido| E[Retornar do Cache]
D -->|Cache Inválido| F[Chamar SOAP SEFAZ]
F --> G{Status Retornado?}
G -->|Sim| H[Salvar no Cache]
H --> I[Retornar Status SEFAZ]
G -->|Não| J{Tentar Contingência?}
J -->|Sim| K[Serviço Contingência]
K --> I
J -->|Não| L[Status Indisponível] 4. Componentes Chave do Backend
O projeto monitor-sefaz-api é o coração da aplicação, responsável por toda a lógica de monitoramento e integração.
4.1. Estrutura em Camadas
O backend é organizado em camadas seguindo Clean Architecture:
- SefazMonitor.Api (Presentation): Minimal APIs, Middlewares, Extensions
- SefazMonitor.Application (Use Cases): Casos de uso e orquestração de negócio
- SefazMonitor.Domain (Core): Entidades, Value Objects, Interfaces
- SefazMonitor.Infrastructure (External): Repositórios Redis, Serviços externos, Background Services
- SefazMonitor.Sefaz (Domain Specific): Serviços SOAP específicos para SEFAZ
4.2. Módulo de Monitoramento (SefazMonitor.Sefaz)
Este módulo é o responsável direto pela comunicação com os serviços da SEFAZ.
- Serviços SOAP:
NfeStatusServicoSoapService: Consulta status de NFeNfceStatusServicoSoapService: Consulta status de NFCeCteStatusServicoSoapService: Consulta status de CTe-
DceStatusServicoSoapService: Consulta status de DCe -
Serviço Principal:
-
SefazStatusService: Orquestra as consultas aos serviços SOAP -
Integração: Utiliza
HttpClientdiretamente para comunicação SOAP com os servidores da SEFAZ, construindo requisições XML manualmente conforme os protocolos específicos de cada serviço. -
Configuração: Possui opções de configuração (
SefazOptions) para definir o ambiente (Homologação/Produção), timeout, e regras de caching e contingência. -
Certificados:
CertificateServicegerencia certificados digitais A1/A3 para autenticação nas requisições SOAP.
4.3. Persistência e Caching
-
Redis (
StackExchange.Redis): Utilizado para caching e persistência de resultados de consultas à SEFAZ. Isso é crucial para reduzir a latência e a carga sobre os serviços externos, além de otimizar a performance da aplicação. -
Estruturas de Dados Redis:
- Strings: Status mais recente
- Sorted Sets: Histórico ordenado por timestamp
- TTL: Expiração automática de dados (2h para latest, 24h para histórico)
4.4. Segurança e Autenticação
-
Autenticação: O uso de
Microsoft.AspNetCore.Authentication.JwtBearerindica que a API utiliza JSON Web Tokens (JWT) para proteger seus endpoints. -
Usuários: A presença de
AWSSDK.CognitoIdentityProvidereOtp.NETindica que a autenticação de usuários é gerenciada via AWS Cognito, com suporte a autenticação de dois fatores (2FA/OTP). -
Data Protection:
Microsoft.AspNetCore.DataProtectioné utilizado para criptografia de dados sensíveis, com chaves persistidas em filesystem.
4.5. Background Services
- MonitorWorker: Serviço em background que executa monitoramento contínuo das SEFAZs a cada 30 segundos
- SefazErrorsSeeder: Semeia erros SEFAZ catalogados no Redis
- AdminUserSeeder: Semeia usuário administrador inicial
- FeaturesSeeder: Semeia features do roadmap
- RedisIndexSeeder: Cria índices necessários no Redis
4.6. Observabilidade
-
Logging: A integração com Serilog e AWSSDK.CloudWatchLogs demonstra um sistema de observabilidade maduro, onde os logs da aplicação são centralizados no AWS CloudWatch, facilitando o monitoramento e a depuração em ambiente de produção.
-
Health Checks: Endpoints de health check (
/health/live,/health/ready) para monitoramento de infraestrutura.
4.7. Bibliotecas e Dependências Principais
Backend (.NET 9.0): - Microsoft.AspNetCore.*: Framework web ASP.NET Core - StackExchange.Redis: Cliente Redis - AWSSDK.CognitoIdentityProvider: Integração AWS Cognito - AWSSDK.CloudWatchLogs: Logs no CloudWatch - Serilog.AspNetCore: Framework de logging estruturado - Serilog.Sinks.AwsCloudWatch: Sink para CloudWatch - Otp.NET: Autenticação de dois fatores - System.IdentityModel.Tokens.Jwt: Tokens JWT - Google.Apis.Auth: Autenticação Google OAuth - Swashbuckle.AspNetCore: Swagger/OpenAPI - Slack.Webhooks: Notificações via Slack (opcional) - Microsoft.Extensions.Http: HttpClient factory
5. Componentes Chave do Frontend
O projeto monitor-sefaz-front oferece uma experiência de usuário moderna e responsiva.
- Interface: Construída com React e TypeScript, garantindo tipagem forte e um desenvolvimento escalável.
- Estilização: Utiliza TailwindCSS para um desenvolvimento rápido e modular de estilos, complementado pela biblioteca de componentes shadcn/ui.
- Visualização de Dados: O uso de recharts é fundamental para a exibição dos gráficos de tempo de resposta e histórico de status, conforme observado no site.
- Roteamento: wouter é utilizado para roteamento no frontend.
- Internacionalização: A presença de i18next indica que a aplicação está preparada para suportar múltiplos idiomas.
- Build: Vite é utilizado como ferramenta de build, oferecendo desenvolvimento rápido e builds otimizados.
6. Tecnologias de Infraestrutura
6.1. Containerização
- Docker: Aplicação containerizada para facilitar deploy e consistência entre ambientes
- Docker Compose: Orquestração local para desenvolvimento
- Multi-stage builds: Otimização de imagens Docker
6.2. Cloud e Deploy
- AWS: Utilização de serviços AWS para produção
- AWS Cognito: Autenticação de usuários
- AWS CloudWatch: Logs e monitoramento
- AWS ECS/Fargate: Deploy containerizado (inferido)
- Redis: Cache e persistência (pode ser Redis Cloud ou self-hosted)
6.3. CI/CD
- GitHub Actions: Pipeline de CI/CD (conforme
.github/workflows/deploy.yml)
7. Decisões Técnicas Importantes
7.1. Comunicação SOAP com SEFAZ
O sistema utiliza HttpClient diretamente para comunicação SOAP, construindo requisições XML manualmente conforme os protocolos específicos de cada serviço SEFAZ. Esta abordagem oferece:
- Controle total: Implementação direta sem dependências de bibliotecas externas
- Manutenibilidade: Código específico para as necessidades do projeto
- Performance: Menor overhead comparado a bibliotecas genéricas
- Transparência: Visibilidade completa sobre as requisições e respostas
7.2. Clean Architecture
A escolha por Clean Architecture proporciona:
- Testabilidade: Fácil mockar dependências
- Manutenibilidade: Mudanças isoladas por camada
- Flexibilidade: Trocar implementações sem afetar domínio
- Onboarding: Estrutura clara para novos desenvolvedores
7.3. Minimal APIs
O uso de Minimal APIs ao invés de Controllers tradicionais oferece:
- Menos boilerplate: Código mais enxuto
- Performance: Menor overhead
- Modernidade: Padrão atual do .NET
- Type Safety: Melhor inferência de tipos
7.4. Redis como Persistência Principal
A escolha por Redis oferece:
- Performance: Latência sub-milissegundo
- Estruturas de Dados: Sorted Sets perfeitos para histórico temporal
- Simplicidade: Não requer schema migrations
- TTL Nativo: Expiração automática de dados
8. Conclusão
O Monitor SEFAZ é construído sobre uma base tecnológica sólida e moderna, combinando a robustez do stack .NET 9.0 no backend com a agilidade e reatividade do React no frontend. A arquitetura é bem definida, seguindo Clean Architecture, com foco em performance (caching com Redis), segurança (JWT, Cognito, OTP, Data Protection) e resiliência (lógica de contingência e observabilidade com CloudWatch).
A implementação direta de comunicação SOAP com SEFAZ usando HttpClient demonstra controle técnico e flexibilidade, permitindo adaptações específicas às necessidades do projeto sem depender de bibliotecas comerciais externas. O uso de tecnologias modernas como Minimal APIs, Background Services e structured logging garante uma base sólida para evolução contínua do sistema.
Última Atualização: 26 de Dezembro de 2025
Versão do Documento: 2.0
Mantido por: Equipe de Desenvolvimento Monitor SEFAZ