Initial commit: DocuAgro - Plataforma EUDR

This commit is contained in:
bigtux
2026-02-10 15:46:03 -03:00
commit a419ac97e7
33 changed files with 10548 additions and 0 deletions

217
README.md Normal file
View File

@@ -0,0 +1,217 @@
# 🌱 DocuAgro
**Compliance do produtor, na palma da mão.**
Bot Telegram + Painel Web para coleta, validação e organização de documentação de produtores rurais para compliance EUDR (Regulamento da União Europeia contra Desmatamento).
---
## 📋 O que é
O DocuAgro resolve o problema da "última milha" do compliance EUDR: coletar, organizar e validar a documentação de cada produtor individual e entregar um dossiê padronizado para cooperativas e tradings.
### Como funciona
1. **Produtor** interage via **Bot Telegram** — envia documentos, tira dúvidas
2. **IA (gpt-4o-mini)** guia a coleta, valida documentos, orienta correções
3. **OCR** extrai dados automaticamente de fotos e PDFs
4. **Dossiê PDF** é gerado automaticamente quando todos os documentos estão prontos
5. **Cooperativa** acompanha tudo pelo **Painel Web**
---
## 📄 Documentos Coletados
| # | Documento | Validação |
|---|-----------|-----------|
| 1 | **CAR** (Cadastro Ambiental Rural) | Número SICAR + OCR |
| 2 | **CCIR** (Certificado Cadastro Imóvel Rural) | OCR + código INCRA |
| 3 | **ITR** (Imposto Territorial Rural) | OCR + CPF/CNPJ |
| 4 | **Georreferenciamento** | Coordenadas GPS |
| 5 | **Licença Ambiental** | OCR + validade |
| 6 | **Contrato de Arrendamento** | OCR (se aplicável) |
| 7 | **Nota Fiscal de Venda** | OCR + dados |
| 8 | **Declaração de Não Desmatamento** | Gerada automaticamente |
---
## 🛠 Stack Técnica
- **Bot:** Node.js + [Telegraf](https://telegraf.js.org/)
- **IA:** OpenAI API (gpt-4o-mini)
- **OCR:** Tesseract.js
- **PDF:** PDFKit
- **Banco:** SQLite (via better-sqlite3)
- **API:** Express.js
- **Painel:** HTML/CSS/JS puro (sem framework)
---
## 🚀 Instalação
### Pré-requisitos
- Node.js 18+
- Token do Bot Telegram (via [@BotFather](https://t.me/BotFather))
- Chave API da OpenAI
### Setup
```bash
# Clonar repositório
git clone http://137.184.77.7:3000/bigtux/docuagro.git
cd docuagro
# Instalar dependências
npm install
# Configurar variáveis de ambiente
cp .env.example .env
# Editar .env com seus tokens
# Criar banco de dados
npm run setup
# Iniciar (bot + API + painel)
npm start
```
### Modo desenvolvimento
```bash
npm run dev # Usa nodemon para auto-reload
```
---
## ⚙️ Configuração (.env)
```env
# Bot Telegram
TELEGRAM_BOT_TOKEN=123456:ABC-DEF...
# OpenAI API
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o-mini
# Servidor
PORT=3100
# Banco de dados
DB_PATH=./data/docuagro.db
# Upload
UPLOAD_DIR=./uploads
```
---
## 📱 Comandos do Bot
| Comando | Descrição |
|---------|-----------|
| `/start` | Iniciar cadastro |
| `/status` | Ver status dos documentos |
| `/dossie` | Gerar dossiê PDF |
| `/pular` | Pular documento atual |
| `/ajuda` | Menu de ajuda |
---
## 🌐 Painel Web
Acesse `http://localhost:3100` para o painel da cooperativa:
- **Dashboard** com estatísticas em tempo real
- **Lista de produtores** com status de compliance
- **Busca** por nome, CPF, propriedade ou município
- **Detalhes** de cada produtor e seus documentos
- **Download** de dossiê PDF
- **Exportação** CSV para sistemas externos
---
## 📡 API REST
| Endpoint | Método | Descrição |
|----------|--------|-----------|
| `/api/health` | GET | Health check |
| `/api/dashboard` | GET | Estatísticas gerais |
| `/api/produtores` | GET | Listar produtores |
| `/api/produtores/:id` | GET | Detalhe do produtor |
| `/api/produtores/:id/dossie` | POST | Gerar dossiê PDF |
| `/api/dossie/download/:arquivo` | GET | Download do dossiê |
| `/api/exportar/csv` | GET | Exportar CSV |
---
## 📁 Estrutura do Projeto
```
docuagro/
├── src/
│ ├── index.js # Entry point
│ ├── setup-db.js # Criação do banco de dados
│ ├── bot/
│ │ └── telegram-bot.js # Bot Telegram (Telegraf)
│ ├── api/
│ │ └── routes.js # API REST (Express)
│ ├── services/
│ │ ├── database.js # Operações de banco (SQLite)
│ │ ├── ai-service.js # Integração OpenAI
│ │ ├── ocr-service.js # OCR (Tesseract.js)
│ │ ├── pdf-service.js # Geração de dossiê PDF
│ │ └── system-prompt.js # Prompt da IA especialista EUDR
│ └── utils/
├── public/
│ └── index.html # Painel web da cooperativa
├── data/ # Banco SQLite
├── uploads/ # Documentos dos produtores
├── docs/ # Documentação adicional
├── .env.example # Template de configuração
├── .gitignore
├── package.json
└── README.md
```
---
## 🔒 Segurança
- Documentos armazenados localmente (não em cloud pública)
- Cada produtor tem diretório isolado de uploads
- API sem autenticação no MVP (adicionar antes de produção!)
- CPF/CNPJ armazenados para identificação
### TODO para produção:
- [ ] Autenticação JWT no painel
- [ ] HTTPS obrigatório
- [ ] Rate limiting na API
- [ ] Criptografia de dados sensíveis
- [ ] Backup automático do banco
---
## 📊 Contexto EUDR
O **Regulamento (UE) 2023/1115** proíbe a importação na UE de commodities produzidas em áreas desmatadas após 31/12/2020. Afeta:
- 🫘 Soja
- ☕ Café
- 🍫 Cacau
- 🌴 Óleo de palma
- 🌳 Madeira
- 🐄 Gado
- 🔧 Borracha
Produtores brasileiros que exportam precisam comprovar geolocalização, ausência de desmatamento e conformidade ambiental.
---
## 📝 Licença
MIT
---
**DocuAgro** — Feito com 🌱 para o agro brasileiro.