GabrielGD commited on
Commit
35eaa11
·
verified ·
1 Parent(s): ee2f7b0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -14
app.py CHANGED
@@ -319,7 +319,7 @@ def estruturar_prompt_correcao(caso, peticao, modo_treinamento=False):
319
  def estruturar_prompt_geracao_caso():
320
  return """
321
  Crie um caso fictício detalhado para uma petição inicial cível, similar ao exemplo:
322
- "Ana, modelo profissional, residente em Manaus, viajou para São Paulo, para o casamento de sua filha. Para lavar, pintar seus cabelos e realizar um penteado para o casamento, Ana procurou os serviços de João Macedo, cabeleireiro e dono do salão de beleza 'Hair', sediado na cidade de São Paulo, que lhe cobrou R$500,00 (quinhentos reais) pela prestação do serviço. Após lavar os cabelos de Ana, João aplicou-lhe uma tintura da marca francesa ABC, importada pela empresa Brasil Connection Ltda, sediada na cidade de Curitiba (PR). Meia hora após a aplicação da tintura, Ana sofreu uma reação alérgica, que demandou atendimento médico-hospitalar, no valor de R$1.000,00 (um mil reais), bem como dois dias de absoluto repouso que impossibilitou sua presença no casamento de sua filha. Além disso, perdeu grande parte de seu cabelo, tendo permanecido com manchas em seu rosto por dois meses, perdendo um ensaio fotográfico, para o qual já havia sido contratada, pelo valor de R$50,000,00 (cinquenta mil reais). Posteriormente constatou-se que a tintura utilizada continha substâncias químicas extremamente perigosas à vida e à saúde das pessoas e a fabricante ABC já havia sido condenada pela justiça francesa a encerrar a fabricação e comercialização do produto. Indignada com os danos sofridos, Ana procura um advogado para pleitear o devido ressarcimento."
323
  O caso deve:
324
  1. Conter uma situação clara de violação de direitos que justifique uma ação cível
325
  2. Incluir valores específicos de danos materiais e/ou morais
@@ -418,23 +418,23 @@ def corrigir_peticao(caso, peticao_texto=None, peticao_arquivo=None, modo_treina
418
  time.sleep(CONFIG["retry_delay"] * (tentativa + 1))
419
  continue
420
  return aviso_validacao + "❌ A API retornou uma resposta vazia. Tente novamente."
421
- correção_completa = response_data["candidates"][0]["content"]["parts"][0]["text"]
422
- if "### Petição Corrigida" in correção_completa:
423
- analise_fim = correção_completa.index("### Petição Corrigida")
424
- analise = correção_completa[:analise_fim].strip()
425
  else:
426
- analise = correção_completa.strip()
427
- correção_formatada = formatar_correção(analise)
428
  HISTORICO.append({
429
  "data": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
430
  "caso": caso,
431
  "peticao": peticao_conteudo,
432
- "correcao_completa": correção_completa
433
  })
434
  if len(HISTORICO) > 10: # Limite de histórico
435
  HISTORICO.pop(0)
436
- CORRECAO_CACHE[cache_key] = correção_formatada
437
- return aviso_validacao + correção_formatada
438
  except requests.Timeout:
439
  if tentativa < CONFIG["max_retry_attempts"] - 1:
440
  time.sleep(CONFIG["retry_delay"] * (tentativa + 1))
@@ -448,7 +448,7 @@ def corrigir_peticao(caso, peticao_texto=None, peticao_arquivo=None, modo_treina
448
  except Exception as e:
449
  return aviso_validacao + f"❌ Erro inesperado: {str(e)}"
450
 
451
- def formatar_correção(texto):
452
  linhas = texto.split('\n')
453
  texto_formatado = ""
454
  for linha in linhas:
@@ -475,17 +475,23 @@ def formatar_correção(texto):
475
  if match:
476
  nota = match.group(1)
477
  texto_formatado = texto_formatado.replace(f"### ⭐ Nota Final\n\n{nota}", f"### ⭐ Nota Final: {nota}/10\n\n")
478
- return texto_formatado # Corrigido de 'texto_formatada' para 'texto_formatado'
479
 
480
  def extrair_peticao_corrigida(correcao_completa):
481
  try:
 
482
  if "### Petição Corrigida" in correcao_completa:
483
  inicio = correcao_completa.index("### Petição Corrigida") + len("### Petição Corrigida")
484
  peticao_texto = correcao_completa[inicio:].strip()
 
485
  fim = peticao_texto.find("###") if "###" in peticao_texto else len(peticao_texto)
486
  peticao_texto = peticao_texto[:fim].strip()
487
  return peticao_texto
488
- return "⚠️ Petição corrigida não encontrada na resposta da API."
 
 
 
 
489
  except Exception as e:
490
  return f"❌ Erro ao extrair petição corrigida: {str(e)}"
491
 
@@ -520,7 +526,11 @@ def comparar_peticao_melhorada(caso, peticao_texto, correcao):
520
  ultima_correcao = HISTORICO[-1]["correcao_completa"] if HISTORICO else ""
521
  if not ultima_correcao:
522
  return "⚠️ Nenhuma correção disponível no histórico.", "", "", "", ""
 
 
523
  peticao_corrigida = extrair_peticao_corrigida(ultima_correcao)
 
 
524
 
525
  orig_lines = peticao.split('\n')
526
  corr_lines = peticao_corrigida.split('\n')
@@ -603,7 +613,7 @@ def exportar_diferencas_html(caso, peticao_texto, correcao):
603
  HTML(string=html_content).write_pdf(temp_path)
604
  return temp_path
605
  except Exception as e:
606
- return f"❌ Erro ao gerar PDF: {str(e)}" # Retorna erro detalhado
607
  finally:
608
  if 'temp_path' in locals() and os.path.exists(temp_path):
609
  os.unlink(temp_path)
 
319
  def estruturar_prompt_geracao_caso():
320
  return """
321
  Crie um caso fictício detalhado para uma petição inicial cível, similar ao exemplo:
322
+ "Ana, modelo profissional, residente em Manaus, viajou para São Paulo, para o casamento de sua filha. Para lavar, pintar seus cabelos e realizar um penteado para o casamento, Ana procurou os serviços de João Macedo, cabeleireiro e dono do salão de beleza 'Hair', sediado na cidade de São Paulo, que lhe cobrou R$500,00 (quinhentos reais) pela prestação do serviço. Após lavar os cabelos de Ana, João aplicou-lhe uma tintura da marca francesa ABC, importada pela empresa Brasil Connection Ltda, sediada na cidade de Curitiba (PR). Meia hora após a aplicação da tintura, Ana sofreu uma reação alérgica, que demandou atendimento médico-hospitalar, no valor de R$1.000,00 (um mil reais), bem como dois dias de absoluto repouso que impossibilitou sua presença no casamento de sua filha. Além disso, perdeu grande parte de seu cabelo, tendo permanecido com manchas em seu rosto por dois meses, perdendo um ensaio fotográfico, para o qual já havia sido contratada, pelo valor de R$50.000,00 (cinquenta mil reais). Posteriormente constatou-se que a tintura utilizada continha substâncias químicas extremamente perigosas à vida e à saúde das pessoas e a fabricante ABC já havia sido condenada pela justiça francesa a encerrar a fabricação e comercialização do produto. Indignada com os danos sofridos, Ana procura um advogado para pleitear o devido ressarcimento."
323
  O caso deve:
324
  1. Conter uma situação clara de violação de direitos que justifique uma ação cível
325
  2. Incluir valores específicos de danos materiais e/ou morais
 
418
  time.sleep(CONFIG["retry_delay"] * (tentativa + 1))
419
  continue
420
  return aviso_validacao + "❌ A API retornou uma resposta vazia. Tente novamente."
421
+ correcao_completa = response_data["candidates"][0]["content"]["parts"][0]["text"]
422
+ if "### Petição Corrigida" in correcao_completa:
423
+ analise_fim = correcao_completa.index("### Petição Corrigida")
424
+ analise = correcao_completa[:analise_fim].strip()
425
  else:
426
+ analise = correcao_completa.strip()
427
+ correcao_formatada = formatar_correcao(analise)
428
  HISTORICO.append({
429
  "data": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
430
  "caso": caso,
431
  "peticao": peticao_conteudo,
432
+ "correcao_completa": correcao_completa
433
  })
434
  if len(HISTORICO) > 10: # Limite de histórico
435
  HISTORICO.pop(0)
436
+ CORRECAO_CACHE[cache_key] = correcao_formatada
437
+ return aviso_validacao + correcao_formatada
438
  except requests.Timeout:
439
  if tentativa < CONFIG["max_retry_attempts"] - 1:
440
  time.sleep(CONFIG["retry_delay"] * (tentativa + 1))
 
448
  except Exception as e:
449
  return aviso_validacao + f"❌ Erro inesperado: {str(e)}"
450
 
451
+ def formatar_correcao(texto):
452
  linhas = texto.split('\n')
453
  texto_formatado = ""
454
  for linha in linhas:
 
475
  if match:
476
  nota = match.group(1)
477
  texto_formatado = texto_formatado.replace(f"### ⭐ Nota Final\n\n{nota}", f"### ⭐ Nota Final: {nota}/10\n\n")
478
+ return texto_formatado
479
 
480
  def extrair_peticao_corrigida(correcao_completa):
481
  try:
482
+ # Verifica se a seção "### Petição Corrigida" está presente na resposta
483
  if "### Petição Corrigida" in correcao_completa:
484
  inicio = correcao_completa.index("### Petição Corrigida") + len("### Petição Corrigida")
485
  peticao_texto = correcao_completa[inicio:].strip()
486
+ # Encontra o final da petição corrigida, caso haja outra seção marcada com "###"
487
  fim = peticao_texto.find("###") if "###" in peticao_texto else len(peticao_texto)
488
  peticao_texto = peticao_texto[:fim].strip()
489
  return peticao_texto
490
+ else:
491
+ # Se a seção não for encontrada, tenta extrair a petição corrigida de outra forma
492
+ # Aqui, você pode adicionar lógica adicional para tentar localizar a petição corrigida
493
+ # de outras maneiras, se necessário.
494
+ return "⚠️ A seção '### Petição Corrigida' não foi encontrada na resposta da API. Verifique a resposta e tente novamente."
495
  except Exception as e:
496
  return f"❌ Erro ao extrair petição corrigida: {str(e)}"
497
 
 
526
  ultima_correcao = HISTORICO[-1]["correcao_completa"] if HISTORICO else ""
527
  if not ultima_correcao:
528
  return "⚠️ Nenhuma correção disponível no histórico.", "", "", "", ""
529
+
530
+ # Tenta extrair a petição corrigida da última correção
531
  peticao_corrigida = extrair_peticao_corrigida(ultima_correcao)
532
+ if "⚠️" in peticao_corrigida or "❌" in peticao_corrigida:
533
+ return peticao_corrigida, "", "", "", ""
534
 
535
  orig_lines = peticao.split('\n')
536
  corr_lines = peticao_corrigida.split('\n')
 
613
  HTML(string=html_content).write_pdf(temp_path)
614
  return temp_path
615
  except Exception as e:
616
+ return f"❌ Erro ao gerar PDF: {str(e)}"
617
  finally:
618
  if 'temp_path' in locals() and os.path.exists(temp_path):
619
  os.unlink(temp_path)