GabrielGD commited on
Commit
8d53f75
·
verified ·
1 Parent(s): 0a3bfe2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +4 -11
app.py CHANGED
@@ -50,7 +50,6 @@ DICAS_OAB = {
50
  HISTORICO = []
51
  CORRECAO_CACHE = {}
52
 
53
- # Funções de pré-processamento e extração de texto permanecem inalteradas
54
  def preprocess_image_for_ocr(img):
55
  try:
56
  gray = img.convert('L')
@@ -169,7 +168,6 @@ def process_file(file_obj):
169
  except Exception as e:
170
  return f"❌ Erro ao processar o arquivo: {str(e)}"
171
 
172
- # Função de cálculo de pontuação aprimorada com explicações
173
  def calcular_pontuacao(enderecamento, fundamentos, pedidos, fechamento):
174
  tabela = [
175
  ("**Endereçamento**", ""),
@@ -207,7 +205,6 @@ def validar_peticao_basica(peticao):
207
  problemas.append("⚠️ Fechamento formal ausente.")
208
  return problemas
209
 
210
- # Prompt estruturado aprimorado com feedback pedagógico
211
  def estruturar_prompt_correcao(caso, peticao, modo_treinamento=False):
212
  base_prompt = f"""
213
  ## Correção Rigorosa de Petição Inicial Cível (Critérios Realistas da OAB)
@@ -288,14 +285,13 @@ def estruturar_prompt_correcao(caso, peticao, modo_treinamento=False):
288
  a) Uma explicação detalhada (mínimo 2 frases) descrevendo o erro e sua base legal (ex.: Art. 319, CPC).
289
  b) Uma sugestão de redação corrigida baseada no caso.
290
  c) Um exemplo prático de redação correta em outro contexto (ex.: "Em uma ação de dano moral, poderia ser: 'Requer a condenação ao pagamento de R$ 10.000,00 por danos morais, conforme Súmula 387 do STJ.'").
291
- d) Uma dica prática do banco ({json.dumps(DICAS_OAB)}) ou personalizada.
292
  - Verifique a coerência entre os fatos do caso e a petição, destacando inconsistências.
293
  - Sugira estratégias jurídicas adicionais baseadas no caso (ex.: citar Art. 186, CC ou Súmula 387, STJ para danos morais).
294
  - Não resuma; detalhe cada erro de forma pedagógica e clara.
295
  """
296
  return base_prompt
297
 
298
- # Funções de geração de caso e correção permanecem similares
299
  def estruturar_prompt_geracao_caso():
300
  return """
301
  Crie um caso fictício detalhado para uma petição inicial cível, similar ao exemplo:
@@ -428,7 +424,6 @@ def corrigir_peticao(caso, peticao_texto=None, peticao_arquivo=None, modo_treina
428
  except Exception as e:
429
  return aviso_validacao + f"❌ Erro inesperado: {str(e)}"
430
 
431
- # Função de formatação com mais detalhes pedagógicos
432
  def formatar_correção(texto):
433
  linhas = texto.split('\n')
434
  texto_formatado = ""
@@ -456,7 +451,7 @@ def formatar_correção(texto):
456
  if match:
457
  nota = match.group(1)
458
  texto_formatado = texto_formatado.replace(f"### ⭐ Nota Final\n\n{nota}", f"### ⭐ Nota Final: {nota}/10\n\n")
459
- return texto_formatado
460
 
461
  def extrair_peticao_corrigida(correcao_completa):
462
  try:
@@ -490,7 +485,6 @@ def calcular_progresso():
490
  tendencia = "⬆️ Melhorando" if len(notas) > 1 and notas[-1] > notas[-2] else "⬇️ Estável ou piorando"
491
  return f"📊 Progresso: Média {media:.1f}/10 | Tentativas: {len(notas)} | Tendência: {tendencia}"
492
 
493
- # Função de comparação aprimorada com feedback visual
494
  def comparar_peticao_melhorada(caso, peticao_texto, correcao):
495
  if not caso:
496
  return "⚠️ Forneça um caso antes de comparar.", "", "", "", ""
@@ -554,7 +548,6 @@ Diferença Líquida: {total_adicionadas - total_removidas} linhas
554
  """
555
  return peticao, peticao_corrigida, resumo_estatistico, criticas_texto, visualizacao_detalhada
556
 
557
- # Função de exportação corrigida para o problema do download
558
  def exportar_diferencas_html(caso, peticao_texto, correcao):
559
  _, _, resumo_estatistico, criticas_texto, visualizacao_detalhada = comparar_peticao_melhorada(caso, peticao_texto, correcao)
560
  html_content = f"""
@@ -586,7 +579,7 @@ def exportar_diferencas_html(caso, peticao_texto, correcao):
586
  HTML(string=html_content).write_pdf(temp_path)
587
  return temp_path
588
  except Exception as e:
589
- return None
590
  finally:
591
  if 'temp_path' in locals() and os.path.exists(temp_path):
592
  os.unlink(temp_path)
@@ -710,7 +703,7 @@ def interface_gradio():
710
  inputs=[caso_input, peticao_texto, resultado_output],
711
  outputs=[download_file]
712
  ).then(
713
- fn=lambda x: [gr.update(visible=True, value=x) if x else gr.update(visible=True, value=None, label="Erro ao gerar PDF"), gr.update(visible=True)],
714
  outputs=[download_file, download_btn]
715
  )
716
 
 
50
  HISTORICO = []
51
  CORRECAO_CACHE = {}
52
 
 
53
  def preprocess_image_for_ocr(img):
54
  try:
55
  gray = img.convert('L')
 
168
  except Exception as e:
169
  return f"❌ Erro ao processar o arquivo: {str(e)}"
170
 
 
171
  def calcular_pontuacao(enderecamento, fundamentos, pedidos, fechamento):
172
  tabela = [
173
  ("**Endereçamento**", ""),
 
205
  problemas.append("⚠️ Fechamento formal ausente.")
206
  return problemas
207
 
 
208
  def estruturar_prompt_correcao(caso, peticao, modo_treinamento=False):
209
  base_prompt = f"""
210
  ## Correção Rigorosa de Petição Inicial Cível (Critérios Realistas da OAB)
 
285
  a) Uma explicação detalhada (mínimo 2 frases) descrevendo o erro e sua base legal (ex.: Art. 319, CPC).
286
  b) Uma sugestão de redação corrigida baseada no caso.
287
  c) Um exemplo prático de redação correta em outro contexto (ex.: "Em uma ação de dano moral, poderia ser: 'Requer a condenação ao pagamento de R$ 10.000,00 por danos morais, conforme Súmula 387 do STJ.'").
288
+ d) Uma dica prática do banco ({json.dumps(DICAS_OAB, ensure_ascii=False)}) ou personalizada.
289
  - Verifique a coerência entre os fatos do caso e a petição, destacando inconsistências.
290
  - Sugira estratégias jurídicas adicionais baseadas no caso (ex.: citar Art. 186, CC ou Súmula 387, STJ para danos morais).
291
  - Não resuma; detalhe cada erro de forma pedagógica e clara.
292
  """
293
  return base_prompt
294
 
 
295
  def estruturar_prompt_geracao_caso():
296
  return """
297
  Crie um caso fictício detalhado para uma petição inicial cível, similar ao exemplo:
 
424
  except Exception as e:
425
  return aviso_validacao + f"❌ Erro inesperado: {str(e)}"
426
 
 
427
  def formatar_correção(texto):
428
  linhas = texto.split('\n')
429
  texto_formatado = ""
 
451
  if match:
452
  nota = match.group(1)
453
  texto_formatado = texto_formatado.replace(f"### ⭐ Nota Final\n\n{nota}", f"### ⭐ Nota Final: {nota}/10\n\n")
454
+ return texto_formatada
455
 
456
  def extrair_peticao_corrigida(correcao_completa):
457
  try:
 
485
  tendencia = "⬆️ Melhorando" if len(notas) > 1 and notas[-1] > notas[-2] else "⬇️ Estável ou piorando"
486
  return f"📊 Progresso: Média {media:.1f}/10 | Tentativas: {len(notas)} | Tendência: {tendencia}"
487
 
 
488
  def comparar_peticao_melhorada(caso, peticao_texto, correcao):
489
  if not caso:
490
  return "⚠️ Forneça um caso antes de comparar.", "", "", "", ""
 
548
  """
549
  return peticao, peticao_corrigida, resumo_estatistico, criticas_texto, visualizacao_detalhada
550
 
 
551
  def exportar_diferencas_html(caso, peticao_texto, correcao):
552
  _, _, resumo_estatistico, criticas_texto, visualizacao_detalhada = comparar_peticao_melhorada(caso, peticao_texto, correcao)
553
  html_content = f"""
 
579
  HTML(string=html_content).write_pdf(temp_path)
580
  return temp_path
581
  except Exception as e:
582
+ return f"❌ Erro ao gerar PDF: {str(e)}" # Retorna erro detalhado
583
  finally:
584
  if 'temp_path' in locals() and os.path.exists(temp_path):
585
  os.unlink(temp_path)
 
703
  inputs=[caso_input, peticao_texto, resultado_output],
704
  outputs=[download_file]
705
  ).then(
706
+ fn=lambda x: [gr.update(visible=True, value=x) if isinstance(x, str) and not x.startswith("❌") else gr.update(visible=True, value=None, label=f"Erro: {x}" if x else "Erro desconhecido"), gr.update(visible=True)],
707
  outputs=[download_file, download_btn]
708
  )
709