agroplan-ai-cli 1.0.12 → 1.0.13

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.
@@ -8,6 +8,19 @@ from core.planner import gerar_cenarios, gerar_plano_genetico
8
8
  from core.bruteforce_validator import comparar_ag_com_forca_bruta, executar_multiplas_rodadas
9
9
 
10
10
 
11
+ def safe_print(message):
12
+ """
13
+ Print seguro que funciona no Windows mesmo com emojis
14
+
15
+ Tenta print normal, se falhar por encoding, remove caracteres não-ASCII
16
+ """
17
+ try:
18
+ print(message)
19
+ except UnicodeEncodeError:
20
+ # Fallback: remove caracteres não-ASCII
21
+ print(message.encode("ascii", errors="ignore").decode("ascii"))
22
+
23
+
11
24
  def format_currency_brl(value):
12
25
  """Formata valor monetário em padrão brasileiro"""
13
26
  return f"R$ {value:,.2f}".replace(",", "X").replace(".", ",").replace("X", ".")
@@ -101,10 +114,10 @@ def gerar_relatorio_completo(culturas, talhoes, regras, objetivo='equilibrado',
101
114
  Caminho do arquivo gerado
102
115
  """
103
116
  # Executa todas as análises
104
- print(" 📊 Gerando cenários...")
117
+ safe_print(" 📊 Gerando cenários...")
105
118
  cenarios = gerar_cenarios(culturas, talhoes, regras)
106
119
 
107
- print(" 🧬 Executando Algoritmo Genético...")
120
+ safe_print(" 🧬 Executando Algoritmo Genético...")
108
121
  # Aplicar contexto climático se disponível
109
122
  if contexto_climatico:
110
123
  from core.climate_adapter import aplicar_contexto_climatico_no_plano
@@ -113,10 +126,10 @@ def gerar_relatorio_completo(culturas, talhoes, regras, objetivo='equilibrado',
113
126
  else:
114
127
  resultado_ag = gerar_plano_genetico(culturas, talhoes, regras, objetivo, seed=42)
115
128
 
116
- print(" 🔬 Validando com força bruta...")
129
+ safe_print(" 🔬 Validando com força bruta...")
117
130
  validacao = comparar_ag_com_forca_bruta(culturas, talhoes, regras, objetivo, seed=42)
118
131
 
119
- print(" 🔄 Analisando estabilidade (5 rodadas)...")
132
+ safe_print(" 🔄 Analisando estabilidade (5 rodadas)...")
120
133
  estabilidade = executar_multiplas_rodadas(culturas, talhoes, regras, objetivo, rodadas=5)
121
134
 
122
135
  # Gera conteúdo do relatório
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agroplan-ai-cli",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "description": "CLI global para AgroPlan AI - modo local acelerado",
5
5
  "type": "module",
6
6
  "bin": {