Sistema inteligente para consulta de autos de infração de trânsito brasileiro com correção ortográfica automática, sugestões "você quis dizer" e proteção avançada contra bots.
- Pesquisa exata por código de infração (ex: 60501, 51691)
- TF-IDF in-memory index com ranking estilo Google
- Smart overlay em tempo real com sugestões + preview de resultados
- Autocomplete por prefixo/substring (0.19ms latência)
- Correção ortográfica automática - 96 correções (ex: "velosidade" → "velocidade")
- 149 sinônimos inteligentes (ex: "bafômetro" encontra infrações de álcool)
- Busca insensível a acentos (funciona com "alcool" ou "álcool")
- 297 testes automatizados com 100% de aprovação
- Design responsivo com tema de semáforo (verde, amarelo, vermelho)
- Cards interativos com detalhes expansíveis
- Destaque visual dos termos pesquisados
- Validação em tempo real do campo de busca
- Proteção contra múltiplas palavras com popup educativo
- Cache inteligente com limite de memória configurável
- Warm-up automático para primeira consulta 80% mais rápida
- Pool de conexões HTTP reutilizáveis
- Monitor de performance com alertas automáticos
- Garbage collection inteligente para evitar memory leaks
- Proteção anti-bot com detecção de User-Agents maliciosos
- Bloqueio de IPs chineses (70+ ranges mapeados)
- CAPTCHA matemático para requests suspeitos
- Rate limiting de 100 requests/min por IP
- Validação rigorosa contra SQL injection e XSS
O arquivo BANCODADOS_LIMPO.csv (~5MB) com as infrações do CTB não está versionado neste repo — é a fonte primária do autor e está coberto pelo .gitignore.
Para rodar localmente você precisa fornecer um CSV com as colunas esperadas pelo modelo (app/models/infracao_model.py). Sugestões de fontes públicas:
- Portal CTB — Anexo II do Código de Trânsito Brasileiro
- Dados abertos do DENATRAN/SENATRAN
- Datasets de transparência estadual (DETRANs)
Coloque o arquivo final em BANCODADOS_LIMPO.csv na raiz do projeto antes de rodar python start.py.
# Clique duas vezes no arquivo ou execute:
python start.pyO sistema irá:
- ✅ Configurar banco de dados automaticamente
- ✅ Instalar dependências se necessário
- ✅ Inicializar cache e warm-up
- ✅ Abrir o navegador automaticamente em http://localhost:8080
python start.py # Desenvolvimento
python start.py --prod # Produção
python start.py --setup-only # Apenas configurar- FastAPI - Framework web moderno e async
- SQLite/PostgreSQL - Suporte a ambos os bancos
- SQLAlchemy - ORM com consultas SQL otimizadas
- Pydantic - Validação de dados e schemas
- app/search/ - Modulo de busca completo (TF-IDF, spell, autocomplete, analytics)
- CorretorOrtografico - 5 camadas de correção, 96 correções diretas, 100% Python nativo
- InMemorySearchIndex - Indice TF-IDF com two-pass retrieval
- SmartCache - Cache inteligente com TTL e limite de memória
- PerformanceMonitor - Monitoramento em tempo real
- GeoSecurityMiddleware - Proteção geográfica avançada
- HTML5/CSS3 moderno com design responsivo
- JavaScript ES6+ com fetch API
- Font Awesome para ícones
- Design system baseado em cores de semáforo
- Busca Exata - Verificação direta no banco
- Dicionário de Correções - 96 correções específicas de trânsito
- Normalização - Remove acentos e case insensitive
- Similaridade difflib - Python nativo com algoritmo otimizado
- Levenshtein - Último recurso para casos extremos
- 96 CORRECOES - ex: "velosidade"→"velocidade", "celuar"→"celular", "sirculacao"→"circulacao"
- 149 SINONIMOS - ex: "bafometro"→etilometro, "buzina"→buzina, "guincho"→reboque
- 50 TERMOS_PRIORITARIOS - termos com boost no ranking
- 70+ ranges de IPs chineses mapeados e bloqueados
- Detecção de User-Agents maliciosos: python-requests, scrapy, sqlmap, etc.
- CAPTCHA matemático para requests suspeitos
- Análise de risco baseada em múltiplos fatores
- 🟢 SAFE (0-19): Acesso normal
- 🟡 LOW (20-39): Monitoramento
- 🟠 MEDIUM (40-59): Rate limiting
- 🔴 HIGH (60-79): CAPTCHA obrigatório
- ⚫ CRITICAL (80+): Bloqueio imediato
URLs suspeitas: /admin, /wp-admin, /phpmyadmin, /.env
Parâmetros maliciosos: union, select, drop, script, eval
Headers ausentes: Accept, Accept-Language# === PERFORMANCE ===
MAX_CACHE_MEMORY_MB=100 # Limite cache (ajustar conforme RAM)
CACHE_CLEANUP_INTERVAL=1800 # Limpeza a cada 30min
HTTP_POOL_CONNECTIONS=10 # Conexões simultâneas
HTTP_TIMEOUT=30 # Timeout requests
# === WARM-UP ===
ENABLE_WARMUP=True # Ativar warm-up
WARMUP_QUERIES=velocidade,alcool,celular,farol,estacionar
# === SEGURANÇA ===
RATE_LIMIT_REQUESTS=100 # 100 requests/min por IP
BLOCK_DURATION=300 # Bloqueio por 5min
ENABLE_BOT_PROTECTION=True # Proteção anti-bot
# === DATABASE ===
DB_POOL_SIZE=5 # Pool de conexões DB
DB_MAX_OVERFLOW=10 # Conexões extras
DB_POOL_RECYCLE=3600 # Reciclar conexões (1h)
# === PORTA ===
PORT=8080 # Porta produção = desenvolvimento{
"performance": {
"memory": {"system_percent": 45.2, "process_mb": 180.5},
"optimization": {"gc_runs": 15, "cache_cleanups": 8}
},
"cache": {
"search": {"memory_usage_mb": 25.8, "hit_rate_percent": 89.5}
},
"geo_security": {
"chinese_ips_detected": 23,
"blocked_ips": 5
}
}{
"active_clients": 15,
"blocked_clients": 3,
"suspicious_ips": 8,
"total_blocks": 12
}# Verificar uso de memória
curl http://localhost:8080/debug/metrics | jq '.performance.memory'
# Verificar cache
curl http://localhost:8080/debug/metrics | jq '.cache'
# Verificar segurança
curl http://localhost:8080/debug/security-statsMultasGO/
├── app/
│ ├── api/endpoints/infracoes.py # 12 endpoints (pesquisa, smart, autocomplete, analytics)
│ ├── search/ # Modulo de busca (single source of truth)
│ │ ├── engine.py # pesquisar() - orquestrador principal
│ │ ├── in_memory.py # InMemorySearchIndex - TF-IDF ranking
│ │ ├── spell.py # CorretorOrtografico - 5 camadas
│ │ ├── autocomplete.py # Prefixo/substring matching
│ │ ├── analytics.py # Tracking de queries
│ │ ├── validators.py # Whitelist input validation
│ │ └── dictionaries/terms.py # 96 correcoes, 149 sinonimos, 50 prioritarios
│ ├── core/ # Cache, config, performance monitor
│ ├── db/ # SQLite/PostgreSQL adaptativo
│ ├── middleware/ # Security, geo-blocking, monitoring
│ ├── services/search_service.py # Thin wrapper → app/search/
│ ├── static/css/styles.css # Design responsivo + overlay fix
│ ├── static/js/script.js # Smart overlay + autocomplete
│ └── templates/ # HTML (index, explorador)
├── teste/ # 297 test cases (100% pass)
├── multasgo.db # Banco SQLite (439 registros)
├── start.py # Inicializador inteligente
└── requirements.txt # Dependencias (sem RapidFuzz)
GET /api/v1/infracoes/pesquisa?q={termo}&limit=10&skip=0GET /api/v1/infracoes/smart?q={termo}&limite_sugestoes=8&limite_preview=5GET /api/v1/infracoes/autocomplete?q={prefixo}GET /api/v1/infracoes/explorador?skip=0&limit=10GET /api/v1/infracoes/termos-populares
GET /api/v1/infracoes/analytics/estatisticas
GET /api/v1/infracoes/analytics/queries-populares
GET /api/v1/infracoes/analytics/queries-sem-resultado- ✅ Taxa de sucesso: 100% (297 testes automatizados)
- ✅ Tempo médio: < 5ms por correção
- ✅ 96 correções + 149 sinônimos + 50 termos prioritários
- ✅ Autocomplete: 0.19ms latência média
- ✅ Primeira consulta 80% mais rápida com warm-up
- ✅ Cache hit rate > 80% após inicialização
- ✅ Controle de memória < 100MB de cache
- ✅ Zero memory leaks detectados
- ✅ 95% dos ataques automatizados bloqueados
- ✅ IPs chineses detectados e tratados
- ✅ Rate limiting funcionando corretamente
- ✅ CAPTCHA matemático operacional
- Modulo
app/search/- Refatoração completa, single source of truth - TF-IDF In-Memory Index - Ranking inteligente estilo Google
- Smart Overlay - Sugestões + preview em tempo real no dropdown
- Autocomplete - Prefixo/substring, 0.19ms latência
- Dicionário expandido - 96 correções, 149 sinônimos, 50 prioritários
- 297 testes automatizados - 2 suites, 100% aprovação
- CSS fix overlay - Corrigido clipping por overflow-x:hidden
- Responsivo completo - Overlay adaptado para 768px, 480px, 360px
- SQL injection fixes - ORDER BY, LIMIT, OFFSET parametrizados
- SSH hardening - Porta custom, chave SSH obrigatória, Fail2Ban, UFW
- Monitoramento - Script automático (RAM + uptime) a cada 5min com alertas por email
- Backup automático - DB + .env diário com retenção de 7 dias
- Deploy produção - https://multasgo.com.br
- Sistema "Você Quis Dizer" com destaque visual
- Correção ortográfica nativa (substituiu RapidFuzz)
- Cache inteligente com limite de memória
- Segurança anti-bot avançada
- Cards expansíveis, monitoramento completo
- Produção: https://multasgo.com.br
Este projeto está licenciado sob a licença MIT - Sistema otimizado para consulta de infrações de trânsito brasileiro.
Produção: https://multasgo.com.br