Arquitetura do Software
Este documento detalha a estrutura técnica do projeto ContraDito, descrevendo os padrões de projeto, tecnologias e o fluxo de dados entre os componentes do sistema.
1. Visão Geral e Padrão Arquitetural
O projeto utiliza o padrão Pipe and Filter (Cano e Filtro) para o seu pipeline de processamento de dados. Nesse modelo, os dados passam por uma série de componentes independentes (filtros) que transformam ou enriquecem a informação antes de passá-la para o próximo estágio.
1.1. O Pipeline de Dados do ContraDito:
- Extração (Source): Scripts de raspagem coletam dados brutos da Câmara dos Deputados.
- Persistência Inicial: Dados brutos são inseridos no Supabase.
- Processamento de IA (Filtro): O Ollama processa os discursos, calcula o score de coerência e gera as justificativas.
- Enriquecimento (Filtro): O banco de dados é atualizado com as análises da IA.
- Exibição (Sink): A API FastAPI serve os dados processados para o Frontend em Next.js.
2. Tecnologias Utilizadas (Tech Stack)
| Camada | Tecnologia | Responsabilidade |
|---|---|---|
| Frontend | React / Next.js | Interface do usuário e visualização de dados. |
| Backend | FastAPI (Python) | Fornecimento da API REST e integração com o banco. |
| Banco de Dados | Supabase (PostgreSQL) | Armazenamento persistente e Seeding de dados. |
| Inteligência Artificial | Ollama / Llama 3 | Processamento de linguagem natural e cálculo de score. |
| Infraestrutura | Docker / Docker Compose | Containerização e ambiente de desenvolvimento. |
| CI/CD | GitHub Actions | Automação de Linter (Flake8/Black) e Deploy. |
3. Componentes do Sistema
3.1. Backend (API)
Desenvolvido em FastAPI, utiliza Pydantic para validação de contratos de dados.
* Rotas Principais:
* GET /politicos: Listagem com filtros e paginação.
* GET /politicos/{id}: Detalhes completos, score e provas de contradição.
* Documentação: Swagger integrado disponível em /docs.
3.2. Frontend (Interface)
Aplicação em Next.js focada em experiência do usuário (UX) e acessibilidade. * Busca: Filtros por partido, estado e cargo. * Raio-X do Parlamentar: Exibição visual do Score de Coerência e comparação lado a lado de discursos/votos.
3.3. Inteligência Artificial (Análise)
Utiliza o Ollama para processamento local de modelos de linguagem (LLM).
* Analisa discursos inseridos no banco.
* Gera tags e justifica as contradições detectadas.
* Atualiza o campo score_coerencia no banco de dados.
3.4. Banco de Dados
Instância no Supabase que atua como o ponto central de integração entre o script de extração, a IA e o Backend.
4. Integração e Deploy
O projeto é totalmente containerizado via Docker Compose, permitindo que o Backend e o Frontend subam simultaneamente com um único comando, garantindo a paridade entre os ambientes de desenvolvimento e produção.
- Linter: Garantia de qualidade de código via GitHub Actions.
- Pipeline: Verificação automática em cada Pull Request para a branch
develop.