anderson-ufrj
refactor: complete repository reorganization and documentation update
92d464e

πŸ—οΈ Arquitetura - CidadΓ£o.AI Backend

Autor: Anderson Henrique da Silva
Última Atualização: 2025-09-25 18:15:00 -03:00 (São Paulo, Brasil)

English version below

πŸ“Š VisΓ£o Geral

O CidadΓ£o.AI Γ© um sistema multi-agente de IA para anΓ‘lise de transparΓͺncia governamental brasileira, construΓ­do com arquitetura modular e escalΓ‘vel.

🧠 Sistema Multi-Agente

Hierarquia de Agentes

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     UsuΓ‘rio / Frontend                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β”‚
                                  β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    API Gateway (FastAPI)                     β”‚
β”‚                  Rate Limiting | Auth | CORS                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β”‚
                                  β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 🏎️ Ayrton Senna (Router)                    β”‚
β”‚              DetecΓ§Γ£o de IntenΓ§Γ£o | Roteamento              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β”‚
                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                β–Ό                                   β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    🎯 Abaporu (Master)        β”‚   β”‚   Agentes Diretos       β”‚
β”‚   OrquestraΓ§Γ£o Complexa       β”‚   β”‚  (Para tarefas simples) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                β”‚
                β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Pool de Agentes                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ πŸ” Zumbi      β”‚ πŸ“Š Anita     β”‚ πŸ“ Tiradentes β”‚ 🧠 NanΓ£     β”‚
β”‚ Anomalias     β”‚ PadrΓ΅es     β”‚ RelatΓ³rios   β”‚ MemΓ³ria     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ βš–οΈ BonifΓ‘cio  β”‚ πŸ“š Machado   β”‚ πŸ›‘οΈ Dandara   β”‚ 🌍 LampiΓ£o  β”‚
β”‚ PolΓ­ticas     β”‚ Textos      β”‚ JustiΓ§a      β”‚ Regional    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Classes Base

  1. BaseAgent

    • Retry logic com backoff exponencial
    • Monitoramento integrado (Prometheus)
    • Lifecycle management
    • Error handling
  2. ReflectiveAgent

    • Auto-reflexΓ£o com threshold de qualidade (0.8)
    • MΓ‘ximo 3 iteraΓ§Γ΅es de melhoria
    • Self-improvement loop

Estados dos Agentes

class AgentState(Enum):
    IDLE = "idle"
    THINKING = "thinking"
    ACTING = "acting"
    WAITING = "waiting"
    ERROR = "error"
    COMPLETED = "completed"

πŸ’Ύ EstratΓ©gia de Cache

Multi-Layer Cache

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Request       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ L1: Memory      β”‚ ← 5ms latency
β”‚ (LRU Cache)     β”‚   TTL: 5 min
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β–Ό miss
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ L2: Redis       β”‚ ← 20ms latency
β”‚ (Distributed)   β”‚   TTL: 1 hour
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β–Ό miss
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ L3: Database    β”‚ ← 100ms latency
β”‚ (PostgreSQL)    β”‚   TTL: 24 hours
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Cache Keys Strategy

chat:session:{session_id}:messages
investigation:{id}:results
agent:{agent_name}:state
portal:contracts:{org_code}:{page}

πŸš€ OtimizaΓ§Γ΅es de Performance

1. Agent Pool

  • PrΓ©-inicializaΓ§Γ£o de instΓ’ncias
  • Warm-up automΓ‘tico
  • Lifecycle management
  • Health checks

2. Parallel Processing

# EstratΓ©gias disponΓ­veis
- SEQUENTIAL: ExecuΓ§Γ£o em ordem
- PARALLEL: Todos ao mesmo tempo
- ADAPTIVE: Baseado em dependΓͺncias
- PRIORITY: Por prioridade

3. JSON Optimization

  • orjson para serializaΓ§Γ£o 3x mais rΓ‘pida
  • Streaming responses
  • Compression (Brotli/Gzip)

πŸ“Š AnΓ‘lise Espectral (FFT)

DetecΓ§Γ£o de PadrΓ΅es PeriΓ³dicos

# Pipeline de anΓ‘lise
1. Preprocessamento dos dados
2. AplicaΓ§Γ£o de FFT/RFFT
3. DetecΓ§Γ£o de picos no domΓ­nio da frequΓͺncia
4. ClassificaΓ§Γ£o de componentes sazonais
5. CΓ‘lculo de entropia espectral

Thresholds de Anomalia

  • PreΓ§o: 2.5 desvios padrΓ£o
  • ConcentraΓ§Γ£o de fornecedor: > 70%
  • Contratos duplicados: > 85% similaridade
  • FrequΓͺncia anΓ΄mala: > 3 desvios no espectro

πŸ”’ SeguranΓ§a

AutenticaΓ§Γ£o e AutorizaΓ§Γ£o

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Client    │────▢│  JWT Auth   │────▢│   API       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
                           β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚ Rate Limit  β”‚
                    β”‚  by Tier    β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Rate Limiting Tiers

RATE_LIMIT_TIERS = {
    "anonymous": "10/minute",
    "authenticated": "60/minute",
    "premium": "300/minute",
    "admin": "unlimited"
}

πŸ“ˆ Monitoramento

MΓ©tricas Prometheus

# MΓ©tricas de agentes
agent_task_duration_seconds
agent_task_total
agent_errors_total
agent_reflection_iterations

# MΓ©tricas de API
http_request_duration_seconds
http_requests_total
active_websocket_connections

# MΓ©tricas de cache
cache_hits_total
cache_misses_total
cache_hit_rate

Dashboards Grafana

  1. System Overview: VisΓ£o geral do sistema
  2. Agent Performance: Performance por agente
  3. API Metrics: LatΓͺncia e throughput
  4. Cache Analytics: Hit rate e eficiΓͺncia

🌐 IntegraΓ§Γ£o Portal da TransparΓͺncia

Endpoints Funcionais (22%)

/contracts  β†’ GET com codigoOrgao obrigatΓ³rio
/servants   β†’ GET por CPF apenas
/agencies   β†’ GET informaΓ§Γ΅es de Γ³rgΓ£os

LimitaΓ§Γ΅es Descobertas

  • 78% dos endpoints retornam 403 Forbidden
  • Sem documentaΓ§Γ£o oficial sobre nΓ­veis de acesso
  • Dados de salΓ‘rio nΓ£o disponΓ­veis

πŸ”„ Fluxo de Dados

1. Request β†’ API Gateway
2. Auth/Rate Limit Check
3. Intent Detection (Senna)
4. Cache Check (L1 β†’ L2 β†’ L3)
5. Agent Selection/Orchestration
6. External API Calls (if needed)
7. Result Processing
8. Cache Update
9. Response β†’ Client

πŸ—οΈ Architecture - CidadΓ£o.AI Backend (English)

Author: Anderson Henrique da Silva
Last Updated: 2025-09-25 18:15:00 -03:00 (SΓ£o Paulo, Brazil)

πŸ“Š Overview

CidadΓ£o.AI is a multi-agent AI system for Brazilian government transparency analysis, built with modular and scalable architecture.

🧠 Multi-Agent System

Agent Hierarchy

[Same diagram as above]

Base Classes

  1. BaseAgent

    • Retry logic with exponential backoff
    • Integrated monitoring (Prometheus)
    • Lifecycle management
    • Error handling
  2. ReflectiveAgent

    • Self-reflection with quality threshold (0.8)
    • Maximum 3 improvement iterations
    • Self-improvement loop

Agent States

[Same states as above]

πŸ’Ύ Cache Strategy

Multi-Layer Cache

[Same diagram as above]

Cache Keys Strategy

[Same keys as above]

πŸš€ Performance Optimizations

1. Agent Pool

  • Pre-initialized instances
  • Automatic warm-up
  • Lifecycle management
  • Health checks

2. Parallel Processing

[Same strategies as above]

3. JSON Optimization

  • orjson for 3x faster serialization
  • Streaming responses
  • Compression (Brotli/Gzip)

πŸ“Š Spectral Analysis (FFT)

Periodic Pattern Detection

[Same pipeline as above]

Anomaly Thresholds

  • Price: 2.5 standard deviations
  • Supplier concentration: > 70%
  • Duplicate contracts: > 85% similarity
  • Anomalous frequency: > 3 deviations in spectrum

πŸ”’ Security

Authentication and Authorization

[Same diagram as above]

Rate Limiting Tiers

[Same tiers as above]

πŸ“ˆ Monitoring

Prometheus Metrics

[Same metrics as above]

Grafana Dashboards

  1. System Overview: System overview
  2. Agent Performance: Performance by agent
  3. API Metrics: Latency and throughput
  4. Cache Analytics: Hit rate and efficiency

🌐 Portal da TransparΓͺncia Integration

Functional Endpoints (22%)

[Same endpoints as above]

Discovered Limitations

  • 78% of endpoints return 403 Forbidden
  • No official documentation about access levels
  • Salary data not available

πŸ”„ Data Flow

[Same flow as above]