File size: 4,366 Bytes
3c919fd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# 🔍 Radar Automático de PLs LGBTQIA+

Sistema de busca automática de Projetos de Lei relacionados a direitos LGBTQIA+ nas casas legislativas do Brasil.

## 📋 Funcionalidades

### ✅ Implementado
- **Câmara dos Deputados**: Busca automática via API de Dados Abertos
  - Filtra PLs do ano atual e anterior
  - Busca termos específicos LGBTQIA+ na ementa
  - Análise automática com Ensemble Híbrido

### 🚧 Em Desenvolvimento
- **Senado Federal**: API disponível, implementação em andamento
- **Câmara Municipal de São Paulo**: Verificando disponibilidade de API
- **ALESP (Assembleia Legislativa de SP)**: Verificando disponibilidade de API

## 🎯 Como Usar

### Via Interface Gradio

1. Inicie o app:
   ```bash
   python app.py
   ```

2. Acesse: http://127.0.0.1:7860

3. Vá para a aba **"🔍 Radar Automático"**

4. Configure:
   - **Últimos N dias**: Quantos dias atrás buscar (padrão: 90)
   - **Limite por fonte**: Máximo de PLs por fonte (padrão: 20)

5. Clique em **"🔍 Buscar PLs nas APIs"**

6. O sistema vai:
   - Buscar PLs recentes na Câmara dos Deputados
   - Filtrar por termos LGBTQIA+
   - Analisar cada PL encontrado
   - Mostrar resultados com classificação

### Via Python Direto

```python
from api_radar import buscar_todas_fontes, filtrar_pls_relevantes

# Buscar PLs dos últimos 90 dias
pls = buscar_todas_fontes(dias_atras=90, limite_por_fonte=20)

# Filtrar por relevância
pls_relevantes = filtrar_pls_relevantes(pls, termos_minimos=1)

print(f"Encontradas {len(pls_relevantes)} PLs relevantes")
```

## 🔍 Termos de Busca

### Termos Específicos (Alta Relevância)
- `lgbt`, `lgbtqia`, `trans`, `transgênero`, `transexual`, `travesti`
- `homofobia`, `transfobia`, `homossexual`
- `identidade de gênero`, `orientação sexual`, `diversidade sexual`
- `nome social`, `terapia de conversão`, `cura gay`

### Termos Contextuais (Relevância Média)
- `ideologia de gênero`, `banheiro`, `vestiário`
- `atleta trans`, `esporte feminino`, `competição feminina`
- `linguagem neutra`, `símbolos religiosos.*parada`

**Nota:** Termos contextuais só são aceitos quando combinados com palavras legislativas como "proíbe", "veda", "garante", "reconhece", etc.

## 📊 API da Câmara dos Deputados

**URL Base:** `https://dadosabertos.camara.leg.br/api/v2`

**Endpoint:** `/proposicoes`

**Parâmetros:**
- `siglaTipo`: Tipo de proposição (PL, PLS, PEC, etc)
- `ano`: Ano da proposição
- `itens`: Número de itens por página (máximo recomendado: 100)

**Limitações:**
- Não suporta busca textual direta na API
- Estratégia: buscar PLs recentes e filtrar localmente por termos
- Pode retornar muitos resultados sem filtro

## 🧪 Testando

```bash
# Teste básico de busca
python -c "from api_radar import buscar_camara_deputados; pls = buscar_camara_deputados(limite=5); print(f'Encontradas: {len(pls)} PLs')"

# Teste completo
python -c "from api_radar import buscar_todas_fontes; pls = buscar_todas_fontes(limite_por_fonte=10); print(f'Total: {len(pls)} PLs')"
```

## ⚠️ Limitações Atuais

1. **API da Câmara**: Funciona, mas requer filtragem manual (API não faz busca textual)
2. **Senado**: API disponível, mas estrutura diferente - precisa implementar parser
3. **Câmara SP / ALESP**: Pode não ter API pública - pode precisar de scraping web
4. **Rate Limiting**: Evitar muitas requisições simultâneas (código já tem delay)
5. **Falsos Positivos**: Filtro evita termos ambíguos (ex: "transporte" não é capturado)

## 🚀 Próximos Passos

1. **Implementar Senado Federal**
   - Pesquisar estrutura da API
   - Adaptar parser para formato XML/JSON do Senado

2. **Câmara Municipal de SP**
   - Verificar se há API pública
   - Se não houver, implementar scraping (respeitando ToS)

3. **ALESP**
   - Verificar se há API pública
   - Se não houver, implementar scraping

4. **Melhorias no Filtro**
   - Adicionar mais termos específicos
   - Melhorar detecção de contexto LGBTQIA+
   - Reduzir falsos positivos

5. **Cache de Resultados**
   - Salvar resultados para não buscar repetidamente
   - Atualizar apenas PLs novas

## 📚 Referências

- [API Dados Abertos Câmara](https://dadosabertos.camara.leg.br/swagger/api.html)
- [Dados Abertos Senado](https://www12.senado.leg.br/dados-abertos/conjuntos)
- [Portal LexML](https://www.lexml.gov.br/)