Update app.py
Browse files
app.py
CHANGED
|
@@ -359,13 +359,13 @@ def corrigir_peticao(caso, peticao_texto=None, peticao_arquivo=None, modo_treina
|
|
| 359 |
if not peticao_conteudo.strip():
|
| 360 |
return "⚠️ Forneça uma petição."
|
| 361 |
|
|
|
|
| 362 |
problemas = validar_peticao_basica(peticao_conteudo)
|
| 363 |
-
if problemas
|
| 364 |
-
return f"### Validação Inicial\n\n" + "\n".join(problemas) + "\n\nCorrija os itens acima antes de prosseguir."
|
| 365 |
|
| 366 |
cache_key = f"{caso[:50]}|{peticao_conteudo[:50]}|{modo_treinamento}"
|
| 367 |
if cache_key in CORRECAO_CACHE:
|
| 368 |
-
return CORRECAO_CACHE[cache_key]
|
| 369 |
|
| 370 |
prompt = estruturar_prompt_correcao(caso, peticao_conteudo, modo_treinamento)
|
| 371 |
payload = {
|
|
@@ -383,13 +383,13 @@ def corrigir_peticao(caso, peticao_texto=None, peticao_arquivo=None, modo_treina
|
|
| 383 |
if tentativa < CONFIG["max_retry_attempts"] - 1:
|
| 384 |
time.sleep(CONFIG["retry_delay"] * (tentativa + 1))
|
| 385 |
continue
|
| 386 |
-
return f"❌ Erro da API (Tentativa {tentativa+1}/{CONFIG['max_retry_attempts']}): {error_msg}"
|
| 387 |
response_data = response.json()
|
| 388 |
if "candidates" not in response_data or not response_data["candidates"]:
|
| 389 |
if tentativa < CONFIG["max_retry_attempts"] - 1:
|
| 390 |
time.sleep(CONFIG["retry_delay"] * (tentativa + 1))
|
| 391 |
continue
|
| 392 |
-
return "❌ A API retornou uma resposta vazia. Tente novamente."
|
| 393 |
correção_completa = response_data["candidates"][0]["content"]["parts"][0]["text"]
|
| 394 |
if "### Petição Corrigida" in correção_completa:
|
| 395 |
analise_fim = correção_completa.index("### Petição Corrigida")
|
|
@@ -404,19 +404,19 @@ def corrigir_peticao(caso, peticao_texto=None, peticao_arquivo=None, modo_treina
|
|
| 404 |
"correcao_completa": correção_completa
|
| 405 |
})
|
| 406 |
CORRECAO_CACHE[cache_key] = correção_formatada
|
| 407 |
-
return correção_formatada
|
| 408 |
except requests.Timeout:
|
| 409 |
if tentativa < CONFIG["max_retry_attempts"] - 1:
|
| 410 |
time.sleep(CONFIG["retry_delay"] * (tentativa + 1))
|
| 411 |
continue
|
| 412 |
-
return "⏱️ A resposta demorou muito. Tente novamente mais tarde."
|
| 413 |
except requests.RequestException as e:
|
| 414 |
if tentativa < CONFIG["max_retry_attempts"] - 1:
|
| 415 |
time.sleep(CONFIG["retry_delay"] * (tentativa + 1))
|
| 416 |
continue
|
| 417 |
-
return f"❌ Erro ao chamar a API: {e}"
|
| 418 |
except Exception as e:
|
| 419 |
-
return f"❌ Erro inesperado: {str(e)}"
|
| 420 |
|
| 421 |
def formatar_correção(texto):
|
| 422 |
linhas = texto.split('\n')
|
|
|
|
| 359 |
if not peticao_conteudo.strip():
|
| 360 |
return "⚠️ Forneça uma petição."
|
| 361 |
|
| 362 |
+
# Validação preliminar como aviso, não como bloqueio
|
| 363 |
problemas = validar_peticao_basica(peticao_conteudo)
|
| 364 |
+
aviso_validacao = f"### Validação Inicial\n\n" + "\n".join(problemas) + "\n\n" if problemas else ""
|
|
|
|
| 365 |
|
| 366 |
cache_key = f"{caso[:50]}|{peticao_conteudo[:50]}|{modo_treinamento}"
|
| 367 |
if cache_key in CORRECAO_CACHE:
|
| 368 |
+
return aviso_validacao + CORRECAO_CACHE[cache_key]
|
| 369 |
|
| 370 |
prompt = estruturar_prompt_correcao(caso, peticao_conteudo, modo_treinamento)
|
| 371 |
payload = {
|
|
|
|
| 383 |
if tentativa < CONFIG["max_retry_attempts"] - 1:
|
| 384 |
time.sleep(CONFIG["retry_delay"] * (tentativa + 1))
|
| 385 |
continue
|
| 386 |
+
return aviso_validacao + f"❌ Erro da API (Tentativa {tentativa+1}/{CONFIG['max_retry_attempts']}): {error_msg}"
|
| 387 |
response_data = response.json()
|
| 388 |
if "candidates" not in response_data or not response_data["candidates"]:
|
| 389 |
if tentativa < CONFIG["max_retry_attempts"] - 1:
|
| 390 |
time.sleep(CONFIG["retry_delay"] * (tentativa + 1))
|
| 391 |
continue
|
| 392 |
+
return aviso_validacao + "❌ A API retornou uma resposta vazia. Tente novamente."
|
| 393 |
correção_completa = response_data["candidates"][0]["content"]["parts"][0]["text"]
|
| 394 |
if "### Petição Corrigida" in correção_completa:
|
| 395 |
analise_fim = correção_completa.index("### Petição Corrigida")
|
|
|
|
| 404 |
"correcao_completa": correção_completa
|
| 405 |
})
|
| 406 |
CORRECAO_CACHE[cache_key] = correção_formatada
|
| 407 |
+
return aviso_validacao + correção_formatada
|
| 408 |
except requests.Timeout:
|
| 409 |
if tentativa < CONFIG["max_retry_attempts"] - 1:
|
| 410 |
time.sleep(CONFIG["retry_delay"] * (tentativa + 1))
|
| 411 |
continue
|
| 412 |
+
return aviso_validacao + "⏱️ A resposta demorou muito. Tente novamente mais tarde."
|
| 413 |
except requests.RequestException as e:
|
| 414 |
if tentativa < CONFIG["max_retry_attempts"] - 1:
|
| 415 |
time.sleep(CONFIG["retry_delay"] * (tentativa + 1))
|
| 416 |
continue
|
| 417 |
+
return aviso_validacao + f"❌ Erro ao chamar a API: {e}"
|
| 418 |
except Exception as e:
|
| 419 |
+
return aviso_validacao + f"❌ Erro inesperado: {str(e)}"
|
| 420 |
|
| 421 |
def formatar_correção(texto):
|
| 422 |
linhas = texto.split('\n')
|