agroplan-ai-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,95 @@
1
+ # 🌱 AgroPlan AI - CLI
2
+
3
+ **CLI global para modo local acelerado do AgroPlan AI**
4
+
5
+ O AgroPlan AI é um sistema inteligente de planejamento agrícola que usa algoritmos genéticos para otimizar o plantio. Esta CLI permite executar o backend localmente para melhor performance.
6
+
7
+ ## 🚀 Instalação
8
+
9
+ **Requer [Bun ≥ 1.0](https://bun.sh/) instalado**
10
+
11
+ ```bash
12
+ # Instalar CLI globalmente
13
+ bun add -g agroplan-ai-cli
14
+
15
+ # Configurar API local
16
+ agroplan setup
17
+
18
+ # Iniciar servidor local
19
+ agroplan serve on
20
+
21
+ # Abrir no navegador
22
+ agroplan open
23
+ ```
24
+
25
+ ## 📋 Comandos
26
+
27
+ ### Configuração
28
+ ```bash
29
+ agroplan setup # Configura API local em ~/.agroplan
30
+ agroplan doctor # Verifica configuração do sistema
31
+ ```
32
+
33
+ ### Servidor Local
34
+ ```bash
35
+ agroplan serve on # Inicia API em http://localhost:8000
36
+ agroplan serve off # Para o servidor local
37
+ agroplan serve status # Mostra status Local + Render
38
+ agroplan serve logs # Exibe logs do servidor
39
+ ```
40
+
41
+ ### Utilitários
42
+ ```bash
43
+ agroplan open # Abre AgroPlan AI no navegador
44
+ ```
45
+
46
+ ## 🎯 Vantagens do Modo Local
47
+
48
+ - **⚡ Performance**: ~0.1s vs ~0.3s+ do Render
49
+ - **🔄 Disponibilidade**: Não depende do Render acordar
50
+ - **🛠️ Desenvolvimento**: Ideal para uso diário
51
+ - **🌐 Híbrido**: Frontend detecta automaticamente Local vs Render
52
+
53
+ ## 🏗️ Como Funciona
54
+
55
+ 1. **Setup**: Copia backend para `~/.agroplan/backend`
56
+ 2. **Ambiente**: Cria `.venv` e instala dependências Python
57
+ 3. **Servidor**: Executa FastAPI em `localhost:8000`
58
+ 4. **Frontend**: Detecta API local automaticamente
59
+
60
+ ## 🔧 Estrutura Criada
61
+
62
+ ```
63
+ ~/.agroplan/
64
+ ├── backend/ # Backend FastAPI local
65
+ │ ├── api.py # API principal
66
+ │ ├── core/ # Algoritmos (genético, força bruta)
67
+ │ ├── data/ # Dados simulados (CSV)
68
+ │ ├── requirements.txt # Dependências Python
69
+ │ └── .venv/ # Ambiente virtual
70
+ ├── agroplan-api.pid # PID do processo
71
+ └── logs/
72
+ └── api.log # Logs do servidor
73
+ ```
74
+
75
+ ## 🌐 Arquitetura Híbrida
76
+
77
+ - **Online**: Frontend (Vercel) + Backend (Render) - universal
78
+ - **Local**: Frontend (Vercel) + Backend (localhost) - acelerado
79
+ - **Auto**: Tenta local primeiro, fallback para Render
80
+
81
+ ## 🛠️ Requisitos
82
+
83
+ - **Bun**: ≥ 1.0 ([instalar](https://bun.sh/))
84
+ - **Python**: ≥ 3.8 (para ambiente virtual)
85
+ - **Sistema**: Windows, macOS, Linux
86
+
87
+ ## 🔗 Links
88
+
89
+ - **Aplicação**: https://agroplan-ai.vercel.app
90
+ - **Repositório**: https://github.com/Kuuhaku-Allan/agroplan-ai
91
+ - **Documentação**: [docs/LOCAL_MODE.md](https://github.com/Kuuhaku-Allan/agroplan-ai/blob/main/docs/LOCAL_MODE.md)
92
+
93
+ ## 📄 Licença
94
+
95
+ MIT © Kuuhaku Allan
@@ -0,0 +1,21 @@
1
+ # Backend Configuration
2
+
3
+ # Server
4
+ HOST=0.0.0.0
5
+ PORT=8000
6
+
7
+ # CORS - Allowed origins (comma-separated)
8
+ # Local development
9
+ CORS_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
10
+ # Production (update with your Vercel URL)
11
+ # CORS_ORIGINS=https://your-frontend.vercel.app,http://localhost:3000
12
+
13
+ # Data Mode
14
+ # simulated: Uses CSV files with simulated data
15
+ # real: Uses real APIs (future implementation)
16
+ DATA_MODE=simulated
17
+
18
+ # Cache Administration (optional)
19
+ # If set, /cache/limpar endpoint requires X-Cache-Token header
20
+ # Leave empty to disable protection (not recommended for production)
21
+ CACHE_ADMIN_TOKEN=your-secret-token-here
@@ -0,0 +1,21 @@
1
+ # Use Python 3.11 slim image
2
+ FROM python:3.11-slim
3
+
4
+ # Set working directory
5
+ WORKDIR /app
6
+
7
+ # Copy requirements first for better caching
8
+ COPY requirements.txt .
9
+
10
+ # Install dependencies
11
+ RUN pip install --no-cache-dir -r requirements.txt
12
+
13
+ # Copy application code
14
+ COPY . .
15
+
16
+ # Expose port (Render will override with PORT env var)
17
+ EXPOSE 8000
18
+
19
+ # Run the application
20
+ # Use shell form to allow environment variable substitution
21
+ CMD sh -c "uvicorn api:app --host 0.0.0.0 --port ${PORT:-8000}"
@@ -0,0 +1,274 @@
1
+ # AgroPlan AI - Backend
2
+
3
+ Backend FastAPI para o Sistema Inteligente de Planejamento de Plantio.
4
+
5
+ ## 🚀 Tecnologias
6
+
7
+ - **FastAPI** - Framework web moderno e rápido
8
+ - **Python 3.11+** - Linguagem de programação
9
+ - **Pandas** - Manipulação de dados
10
+ - **NumPy** - Computação numérica
11
+ - **Uvicorn** - Servidor ASGI
12
+
13
+ ## 📋 Pré-requisitos
14
+
15
+ - Python 3.11 ou superior
16
+ - pip (gerenciador de pacotes Python)
17
+
18
+ ## 🔧 Instalação Local
19
+
20
+ 1. **Clone o repositório** (se ainda não fez):
21
+ ```bash
22
+ git clone <seu-repositorio>
23
+ cd agroplan/backend
24
+ ```
25
+
26
+ 2. **Crie um ambiente virtual**:
27
+ ```bash
28
+ python -m venv venv
29
+
30
+ # Windows
31
+ venv\Scripts\activate
32
+
33
+ # Linux/Mac
34
+ source venv/bin/activate
35
+ ```
36
+
37
+ 3. **Instale as dependências**:
38
+ ```bash
39
+ pip install -r requirements.txt
40
+ ```
41
+
42
+ 4. **Configure as variáveis de ambiente**:
43
+ ```bash
44
+ # Copie o arquivo de exemplo
45
+ cp .env.example .env
46
+
47
+ # Edite .env conforme necessário
48
+ ```
49
+
50
+ 5. **Execute o servidor**:
51
+ ```bash
52
+ python api.py
53
+ ```
54
+
55
+ O servidor estará disponível em `http://localhost:8000`
56
+
57
+ ## 📚 Documentação da API
58
+
59
+ Após iniciar o servidor, acesse:
60
+
61
+ - **Swagger UI**: http://localhost:8000/docs
62
+ - **ReDoc**: http://localhost:8000/redoc
63
+
64
+ ## 🔌 Endpoints Principais
65
+
66
+ ### Health Check
67
+ ```http
68
+ GET /health
69
+ ```
70
+ Verifica o status da API e retorna informações sobre os dados carregados.
71
+
72
+ ### Dashboard
73
+ ```http
74
+ GET /dashboard
75
+ ```
76
+ Retorna resumo completo do dashboard com plano recomendado.
77
+
78
+ ### Talhões
79
+ ```http
80
+ GET /talhoes
81
+ ```
82
+ Lista todos os talhões disponíveis.
83
+
84
+ ### Culturas
85
+ ```http
86
+ GET /culturas
87
+ ```
88
+ Lista todas as culturas disponíveis com suas regras.
89
+
90
+ ### Cenários
91
+ ```http
92
+ GET /cenarios
93
+ ```
94
+ Retorna comparação entre diferentes cenários de plantio.
95
+
96
+ ### Otimizar
97
+ ```http
98
+ POST /otimizar
99
+ Content-Type: application/json
100
+
101
+ {
102
+ "objetivo": "equilibrado",
103
+ "seed": 42,
104
+ "geracoes": 100,
105
+ "populacao": 50
106
+ }
107
+ ```
108
+ Executa o Algoritmo Genético para otimização.
109
+
110
+ **Objetivos disponíveis**: `equilibrado`, `lucro`, `risco`, `sustentavel`
111
+
112
+ ### Validar
113
+ ```http
114
+ POST /validar
115
+ Content-Type: application/json
116
+
117
+ {
118
+ "objetivo": "equilibrado",
119
+ "seed": 42
120
+ }
121
+ ```
122
+ Valida o resultado do AG comparando com força bruta (quando viável).
123
+
124
+ ### Rodadas
125
+ ```http
126
+ POST /rodadas
127
+ Content-Type: application/json
128
+
129
+ {
130
+ "objetivo": "equilibrado",
131
+ "rodadas": 5
132
+ }
133
+ ```
134
+ Executa múltiplas rodadas do AG para análise de estabilidade.
135
+
136
+ ### Relatório
137
+ ```http
138
+ POST /relatorio
139
+ Content-Type: application/json
140
+
141
+ {
142
+ "objetivo": "equilibrado",
143
+ "formato": "md"
144
+ }
145
+ ```
146
+ Gera relatório completo em Markdown ou TXT.
147
+
148
+ **Formatos disponíveis**: `md`, `txt`
149
+
150
+ ## 🐳 Docker
151
+
152
+ ### Build da imagem:
153
+ ```bash
154
+ docker build -t agroplan-backend .
155
+ ```
156
+
157
+ ### Executar container:
158
+ ```bash
159
+ docker run -p 8000:8000 \
160
+ -e CORS_ORIGINS="http://localhost:3000" \
161
+ agroplan-backend
162
+ ```
163
+
164
+ ## 🌍 Variáveis de Ambiente
165
+
166
+ | Variável | Descrição | Padrão |
167
+ |----------|-----------|--------|
168
+ | `HOST` | Host do servidor | `0.0.0.0` |
169
+ | `PORT` | Porta do servidor | `8000` |
170
+ | `CORS_ORIGINS` | Origens permitidas (separadas por vírgula) | `http://localhost:3000` |
171
+ | `DATA_MODE` | Modo de dados (`simulated` ou `real`) | `simulated` |
172
+
173
+ ### Exemplo de configuração para produção:
174
+ ```bash
175
+ HOST=0.0.0.0
176
+ PORT=8000
177
+ CORS_ORIGINS=https://seu-frontend.vercel.app,http://localhost:3000
178
+ DATA_MODE=simulated
179
+ ```
180
+
181
+ ## 📁 Estrutura de Dados
182
+
183
+ O backend utiliza arquivos CSV localizados em `data/`:
184
+
185
+ - **culturas.csv** - Informações sobre culturas (10 culturas)
186
+ - **talhoes.csv** - Informações sobre talhões (10 talhões)
187
+ - **regras_culturas.csv** - Regras de compatibilidade
188
+
189
+ ## 🧬 Algoritmo Genético
190
+
191
+ O sistema utiliza um Algoritmo Genético para otimização do planejamento:
192
+
193
+ - **População**: 50 indivíduos (configurável)
194
+ - **Gerações**: 100 (configurável)
195
+ - **Seleção**: Torneio
196
+ - **Crossover**: Ponto único
197
+ - **Mutação**: Aleatória com taxa adaptativa
198
+
199
+ ### Objetivos de Otimização:
200
+
201
+ 1. **Equilibrado**: Balanceia lucro, risco e sustentabilidade
202
+ 2. **Lucro**: Prioriza retorno financeiro
203
+ 3. **Risco**: Minimiza exposição ao risco
204
+ 4. **Sustentável**: Prioriza compatibilidade e diversidade
205
+
206
+ ## 🔍 Validação
207
+
208
+ O sistema oferece dois métodos de validação:
209
+
210
+ 1. **Força Bruta**: Para espaços de busca pequenos (≤10.000 combinações)
211
+ 2. **Múltiplas Rodadas**: Para espaços grandes, executa várias rodadas e analisa estabilidade
212
+
213
+ ## 📊 Relatórios
214
+
215
+ Relatórios são gerados em `reports/` com:
216
+
217
+ - Resumo executivo
218
+ - Características do plano
219
+ - Comparação com cenários
220
+ - Detalhes do Algoritmo Genético
221
+ - Validação e estabilidade
222
+ - Justificativa técnica
223
+
224
+ ## 🚀 Deploy
225
+
226
+ ### Render (Recomendado)
227
+
228
+ 1. Conecte seu repositório GitHub ao Render
229
+ 2. Crie um novo Web Service
230
+ 3. Configure:
231
+ - **Root Directory**: `backend`
232
+ - **Build Command**: (deixe vazio, usa Dockerfile)
233
+ - **Start Command**: (deixe vazio, usa CMD do Dockerfile)
234
+ 4. Adicione variáveis de ambiente:
235
+ - `CORS_ORIGINS`: URL do seu frontend
236
+ 5. Deploy!
237
+
238
+ ### Outras plataformas
239
+
240
+ O backend é compatível com qualquer plataforma que suporte:
241
+ - Docker
242
+ - Python 3.11+
243
+ - Variável de ambiente `PORT`
244
+
245
+ ## 🐛 Troubleshooting
246
+
247
+ ### Erro de CORS
248
+ Verifique se `CORS_ORIGINS` inclui a URL do seu frontend.
249
+
250
+ ### Porta já em uso
251
+ Altere a variável `PORT` ou encerre o processo usando a porta 8000.
252
+
253
+ ### Módulos não encontrados
254
+ Execute `pip install -r requirements.txt` novamente.
255
+
256
+ ## 📝 Limitações Atuais
257
+
258
+ - Dados simulados (CSV estáticos)
259
+ - Sem banco de dados
260
+ - Sem autenticação
261
+ - Sem APIs externas reais
262
+
263
+ ## 🔮 Próximas Funcionalidades
264
+
265
+ - Integração com APIs reais (clima, preços, etc.)
266
+ - Banco de dados PostgreSQL
267
+ - Autenticação e autorização
268
+ - Cache Redis
269
+ - Webhooks para notificações
270
+ - Suporte a múltiplas propriedades
271
+
272
+ ## 📄 Licença
273
+
274
+ Este projeto é parte do AgroPlan AI.