Initial commit: DocuAgro - Plataforma EUDR
This commit is contained in:
217
README.md
Normal file
217
README.md
Normal 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.
|
||||
Reference in New Issue
Block a user