# 🌱 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.
