File size: 11,076 Bytes
34c8d46 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 |
# 🤖 Sistema de Investigação Autônoma 24/7
**Autor**: Anderson Henrique da Silva
**Data**: 2025-10-07 18:11:37
**Status**: ✅ Implementado e Pronto para Produção
## 📋 Visão Geral
Sistema completamente autônomo que monitora contratos governamentais 24 horas por dia, 7 dias por semana, detectando automaticamente padrões suspeitos e criando investigações forenses detalhadas SEM intervenção humana.
## 🎯 O Que o Sistema Faz
### 1. Monitoramento Contínuo de Contratos Novos
- **Frequência**: A cada 6 horas
- **Lookback**: Últimas 6 horas de contratos
- **Fonte**: Portal da Transparência API
- **Ação**: Cria investigações automáticas para contratos suspeitos
### 2. Monitoramento Prioritário de Órgãos Críticos
- **Frequência**: A cada 4 horas
- **Fila**: High Priority
- **Órgãos**: Lista configurável de órgãos com histórico de irregularidades
- **Ação**: Análise mais frequente e detalhada
### 3. Reanálise de Contratos Históricos
- **Frequência**: Semanal (domingos 3h)
- **Lookback**: 6 meses
- **Propósito**: Encontrar anomalias previamente perdidas com modelos atualizados
- **Processamento**: Lotes de 100 contratos por vez
### 4. Health Check do Sistema
- **Frequência**: A cada hora
- **Verifica**: API Transparência, Investigation Service, Agent Pool
- **Alertas**: Logs de componentes com problemas
## 🔍 Critérios de Pré-Triagem (Suspicion Score)
O sistema calcula automaticamente um "suspicion score" baseado em:
| Critério | Pontos | Descrição |
|----------|--------|-----------|
| **Valor Alto** | +2 | Contratos acima de R$ 100.000 |
| **Processo Emergencial** | +3 | Dispensa ou inexigibilidade de licitação |
| **Licitante Único** | +2 | Apenas 1 proponente no processo |
| **Fornecedor em Watchlist** | +3 | Fornecedor com histórico de problemas |
| **Prazo Curto de Licitação** | +1 | Tempo insuficiente para competição |
**Threshold para Investigação**: Score ≥ 3 pontos
## 🏗️ Arquitetura
```
┌─────────────────────────────────────────────────────────────┐
│ Celery Beat Scheduler │
│ (Agenda e dispara tarefas periodicamente) │
└───────────────┬─────────────────────────────────────────────┘
│
┌───────────┼───────────┬────────────┬───────────────┐
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
[6h Task] [4h Task] [Weekly] [Hourly] [On-Demand]
New Contracts Priority Historical Health User-Triggered
Monitor Orgs Reanalysis Check Investigations
│ │ │ │ │
└───────────┴───────────┴────────────┴───────────────┘
│
▼
┌───────────────────────────────┐
│ Auto Investigation Service │
│ - Fetch contracts from API │
│ - Pre-screen for suspicion │
│ - Trigger full investigation │
└───────────────┬───────────────┘
│
▼
┌───────────────────────────────┐
│ Zumbi (InvestigatorAgent) │
│ - Full anomaly detection │
│ - Forensic enrichment │
│ - Evidence collection │
└───────────────┬───────────────┘
│
▼
┌───────────────────────────────┐
│ Supabase (Database) │
│ - Investigation records │
│ - Forensic results │
│ - ML feedback data │
└───────────────────────────────┘
```
## 🚀 Como Ativar
### Pré-requisitos
1. **Redis** instalado e rodando:
```bash
# Ubuntu/Debian
sudo apt-get install redis-server
sudo systemctl start redis
# macOS
brew install redis
brew services start redis
# Docker
docker run -d -p 6379:6379 redis:7-alpine
```
2. **Variáveis de ambiente configuradas**:
```bash
# .env
REDIS_URL=redis://localhost:6379/0
TRANSPARENCY_API_KEY=sua-chave-aqui # Opcional mas recomendado
SUPABASE_URL=sua-url-supabase
SUPABASE_SERVICE_ROLE_KEY=sua-chave-supabase
GROQ_API_KEY=sua-chave-groq # Para LLM dos agentes
```
### Iniciar o Sistema
#### Opção 1: Desenvolvimento Local
```bash
# Terminal 1: Celery Worker
celery -A src.infrastructure.queue.celery_app worker \
--loglevel=info \
--queues=critical,high,default,low,background \
--concurrency=4
# Terminal 2: Celery Beat (Scheduler)
celery -A src.infrastructure.queue.celery_app beat \
--loglevel=info
```
#### Opção 2: Produção (Supervisor)
Criar `/etc/supervisor/conf.d/cidadao-ai-celery.conf`:
```ini
[program:cidadao-ai-worker]
command=/path/to/venv/bin/celery -A src.infrastructure.queue.celery_app worker --loglevel=info --queues=critical,high,default,low,background --concurrency=8
directory=/path/to/cidadao.ai-backend
user=www-data
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
redirect_stderr=true
stdout_logfile=/var/log/celery/worker.log
[program:cidadao-ai-beat]
command=/path/to/venv/bin/celery -A src.infrastructure.queue.celery_app beat --loglevel=info
directory=/path/to/cidadao.ai-backend
user=www-data
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/celery/beat.log
```
Aplicar configuração:
```bash
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start cidadao-ai-worker
sudo supervisorctl start cidadao-ai-beat
```
#### Opção 3: Docker Compose
Adicionar ao `docker-compose.yml`:
```yaml
services:
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
celery-worker:
build: .
command: celery -A src.infrastructure.queue.celery_app worker --loglevel=info --queues=critical,high,default,low,background
depends_on:
- redis
env_file:
- .env
volumes:
- .:/app
celery-beat:
build: .
command: celery -A src.infrastructure.queue.celery_app beat --loglevel=info
depends_on:
- redis
- celery-worker
env_file:
- .env
volumes:
- .:/app
volumes:
redis_data:
```
Iniciar:
```bash
docker-compose up -d redis celery-worker celery-beat
```
## 📊 Monitoramento
### Ver Tarefas Agendadas
```bash
celery -A src.infrastructure.queue.celery_app inspect scheduled
```
### Ver Tarefas Ativas
```bash
celery -A src.infrastructure.queue.celery_app inspect active
```
### Ver Estatísticas
```bash
celery -A src.infrastructure.queue.celery_app inspect stats
```
### Flower (Web UI)
```bash
pip install flower
celery -A src.infrastructure.queue.celery_app flower
# Acesse: http://localhost:5555
```
## 🎛️ Configuração Avançada
### Ajustar Frequência de Monitoramento
Edite `src/infrastructure/queue/celery_app.py`:
```python
celery_app.conf.beat_schedule = {
"auto-monitor-new-contracts-6h": {
"schedule": timedelta(hours=3), # Mude de 6h para 3h
"args": (3,), # Lookback de 3h
},
}
```
### Adicionar Órgãos Prioritários
Edite `src/infrastructure/queue/tasks/auto_investigation_tasks.py`:
```python
priority_orgs = [
"26101", # Ministério da Saúde
"20101", # Ministério da Educação
"53000", # Prefeitura de São Paulo
# Adicione mais códigos aqui
]
```
### Ajustar Thresholds de Detecção
Edite `src/services/auto_investigation_service.py`:
```python
self.value_threshold = 50000.0 # Reduzir para R$ 50k
self.daily_contract_limit = 1000 # Aumentar limite diário
```
## 📈 Métricas e KPIs
O sistema automaticamente coleta:
- **Contratos Analisados**: Total de contratos processados
- **Taxa de Suspeição**: % de contratos que passam pré-triagem
- **Investigações Criadas**: Quantidade de investigações automáticas
- **Anomalias Detectadas**: Total de irregularidades encontradas
- **Tempo de Processamento**: Duração média das investigações
- **Taxa de Sucesso**: % de investigações completadas com sucesso
Acesse via Flower ou logs estruturados.
## 🛠️ Troubleshooting
### Problema: Tasks não executam
**Causa**: Redis não está rodando ou configuração incorreta
**Solução**:
```bash
# Verificar Redis
redis-cli ping
# Deve retornar: PONG
# Verificar configuração
echo $REDIS_URL
# Deve retornar: redis://localhost:6379/0
```
### Problema: Muitos erros de API
**Causa**: Rate limit do Portal da Transparência
**Solução**: Ajustar delays no código ou adicionar `TRANSPARENCY_API_KEY`
### Problema: Investigações não aparecem no frontend
**Causa**: Supabase não configurado ou credenciais inválidas
**Solução**:
```bash
# Verificar variáveis
echo $SUPABASE_URL
echo $SUPABASE_SERVICE_ROLE_KEY
# Testar conexão
python -c "from src.services.supabase_service_rest import get_supabase_service_rest; import asyncio; print(asyncio.run(get_supabase_service_rest()))"
```
## 🔐 Segurança
- ✅ Tasks rodando com user `system_auto_monitor`
- ✅ Rate limiting configurado para APIs externas
- ✅ Logs estruturados com rastreabilidade completa
- ✅ Retry automático com backoff exponencial
- ✅ Timeout configurado para evitar tasks travadas
## 📝 Próximos Passos
1. **Aprendizado Automático**: Treinar modelos ML com dados coletados
2. **Notificações**: Alertas quando anomalias críticas são encontradas
3. **Dashboard Analytics**: Visualização de descobertas em tempo real
4. **Watchlist Dinâmica**: Atualização automática de fornecedores suspeitos
5. **Cross-referência**: Integração com outros sistemas de fiscalização
## 📚 Referências
- [Documentação Celery](https://docs.celeryq.dev/)
- [Portal da Transparência API](https://api.portaldatransparencia.gov.br/swagger-ui.html)
- [Supabase Python Client](https://supabase.com/docs/reference/python)
---
**Status**: ✅ Sistema operacional e pronto para produção
**Última atualização**: 2025-10-07 18:11:37 (America/Sao_Paulo)
**Autor**: Anderson Henrique da Silva
|