GabrielGD commited on
Commit
10bcdc4
·
verified ·
1 Parent(s): da894c0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -8
app.py CHANGED
@@ -18,7 +18,7 @@ import difflib
18
  from html import escape
19
  import random
20
  import logging
21
- import re # Importado para uso em funções como calcular_progresso e gerar_caso_ficticio
22
 
23
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
24
  logger = logging.getLogger(__name__)
@@ -101,7 +101,6 @@ def extract_text_from_pdf(file_path_or_obj):
101
  else:
102
  logger.warning(f"Página {i+1} sem texto extraível, tentando OCR.")
103
  try:
104
- # Supondo que Tesseract esteja instalado via packages.txt no HF
105
  img = page.to_image(resolution=300)
106
  preprocessed_img = preprocess_image_for_ocr(img.original)
107
  page_ocr_text = pytesseract.image_to_string(preprocessed_img, lang='por')
@@ -725,7 +724,7 @@ def chamar_api(prompt):
725
  return "❌ Falha ao chamar a API após todas as tentativas."
726
 
727
  def corrigir_peticao(caso, tipo_peticao, peticao_texto=None, peticao_arquivo=None, modo_treinamento=False):
728
- logger.info(f"Iniciando correção para tipo: {tipo_peticao}")
729
  start_time = time.time()
730
 
731
  if not caso or not caso.strip():
@@ -739,6 +738,7 @@ def corrigir_peticao(caso, tipo_peticao, peticao_texto=None, peticao_arquivo=Non
739
  peticao_conteudo = ""
740
  if peticao_arquivo is not None:
741
  logger.info("Processando arquivo de petição...")
 
742
  peticao_conteudo = process_file(peticao_arquivo)
743
  if peticao_conteudo.startswith("❌") or peticao_conteudo.startswith("⚠️"):
744
  logger.error(f"Erro ao processar arquivo: {peticao_conteudo}")
@@ -778,7 +778,6 @@ def corrigir_peticao(caso, tipo_peticao, peticao_texto=None, peticao_arquivo=Non
778
  if cache_key in CORRECAO_CACHE:
779
  logger.info("Correção encontrada no cache.")
780
  cached_data = CORRECAO_CACHE[cache_key]
781
- # Recalcular diff_html se não foi cacheado
782
  diff_html_cache, _, _ = calcular_diff_interno(cached_data["peticao_original"], cached_data["peticao_corrigida"])
783
  return cached_data["analise_formatada"], cached_data["peticao_original"], cached_data["peticao_corrigida"], cached_data["resumo_diff"], cached_data["criticas_diff"], diff_html_cache
784
 
@@ -1212,6 +1211,7 @@ def interface_gradio():
1212
  choices=TIPOS_DE_PETICAO,
1213
  value="Petição Inicial"
1214
  )
 
1215
  modo_treinamento = gr.Checkbox(label="🎓 Modo Treinamento (Feedback Detalhado)", value=False)
1216
 
1217
  with gr.Accordion("⚙️ Configurações Avançadas", open=False):
@@ -1281,6 +1281,23 @@ def interface_gradio():
1281
 
1282
  clear_btn = gr.Button("🗑️ Limpar Tudo")
1283
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1284
  caso_btn.click(
1285
  fn=gerar_caso_ficticio,
1286
  inputs=[tipo_peticao_input],
@@ -1304,13 +1321,16 @@ def interface_gradio():
1304
  outputs=[arquivo_preview_output]
1305
  )
1306
 
 
1307
  btn_corrigir.click(
1308
  fn=lambda: gr.update(value="⏳ Processando... Gerando análise e correção. Isso pode levar um minuto...", visible=True),
1309
  inputs=None,
1310
  outputs=[processing_message]
1311
  ).then(
1312
- fn=corrigir_peticao,
1313
- inputs=[caso_input, tipo_peticao_input, peticao_texto_input, gr.State(None), modo_treinamento],
 
 
1314
  outputs=[resultado_analise_output, gr.Textbox(visible=False), resultado_peticao_corrigida_output,
1315
  resumo_alteracoes_output, criticas_output, visualizacao_detalhada_output]
1316
  ).then(
@@ -1319,13 +1339,16 @@ def interface_gradio():
1319
  outputs=[processing_message]
1320
  )
1321
 
 
1322
  btn_corrigir_arquivo.click(
1323
  fn=lambda: gr.update(value="⏳ Processando arquivo... Gerando análise e correção. Isso pode levar um minuto...", visible=True),
1324
  inputs=None,
1325
  outputs=[processing_message]
1326
  ).then(
1327
- fn=corrigir_peticao,
1328
- inputs=[caso_input, tipo_peticao_input, gr.State(None), peticao_arquivo_input, modo_treinamento],
 
 
1329
  outputs=[resultado_analise_output, gr.Textbox(visible=False), resultado_peticao_corrigida_output,
1330
  resumo_alteracoes_output, criticas_output, visualizacao_detalhada_output]
1331
  ).then(
 
18
  from html import escape
19
  import random
20
  import logging
21
+ import re
22
 
23
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
24
  logger = logging.getLogger(__name__)
 
101
  else:
102
  logger.warning(f"Página {i+1} sem texto extraível, tentando OCR.")
103
  try:
 
104
  img = page.to_image(resolution=300)
105
  preprocessed_img = preprocess_image_for_ocr(img.original)
106
  page_ocr_text = pytesseract.image_to_string(preprocessed_img, lang='por')
 
724
  return "❌ Falha ao chamar a API após todas as tentativas."
725
 
726
  def corrigir_peticao(caso, tipo_peticao, peticao_texto=None, peticao_arquivo=None, modo_treinamento=False):
727
+ logger.info(f"Iniciando correção para tipo: {tipo_peticao}, Modo Treinamento: {modo_treinamento}")
728
  start_time = time.time()
729
 
730
  if not caso or not caso.strip():
 
738
  peticao_conteudo = ""
739
  if peticao_arquivo is not None:
740
  logger.info("Processando arquivo de petição...")
741
+ # O objeto peticao_arquivo aqui é o próprio arquivo temporário do Gradio
742
  peticao_conteudo = process_file(peticao_arquivo)
743
  if peticao_conteudo.startswith("❌") or peticao_conteudo.startswith("⚠️"):
744
  logger.error(f"Erro ao processar arquivo: {peticao_conteudo}")
 
778
  if cache_key in CORRECAO_CACHE:
779
  logger.info("Correção encontrada no cache.")
780
  cached_data = CORRECAO_CACHE[cache_key]
 
781
  diff_html_cache, _, _ = calcular_diff_interno(cached_data["peticao_original"], cached_data["peticao_corrigida"])
782
  return cached_data["analise_formatada"], cached_data["peticao_original"], cached_data["peticao_corrigida"], cached_data["resumo_diff"], cached_data["criticas_diff"], diff_html_cache
783
 
 
1211
  choices=TIPOS_DE_PETICAO,
1212
  value="Petição Inicial"
1213
  )
1214
+ # Definindo o componente checkbox
1215
  modo_treinamento = gr.Checkbox(label="🎓 Modo Treinamento (Feedback Detalhado)", value=False)
1216
 
1217
  with gr.Accordion("⚙️ Configurações Avançadas", open=False):
 
1281
 
1282
  clear_btn = gr.Button("🗑️ Limpar Tudo")
1283
 
1284
+ # --- FUNÇÕES WRAPPER ---
1285
+ def corrigir_peticao_wrapper_texto(caso, tipo_peticao, peticao_texto, peticao_arquivo_state):
1286
+ # Acessa o valor atual do componente checkbox
1287
+ is_treinamento = modo_treinamento.value
1288
+ # Chama a função original passando o valor booleano
1289
+ return corrigir_peticao(caso, tipo_peticao, peticao_texto, peticao_arquivo_state, is_treinamento)
1290
+
1291
+ def corrigir_peticao_wrapper_arquivo(caso, tipo_peticao, peticao_texto_state, peticao_arquivo):
1292
+ # Acessa o valor atual do componente checkbox
1293
+ is_treinamento = modo_treinamento.value
1294
+ # Chama a função original passando o valor booleano
1295
+ return corrigir_peticao(caso, tipo_peticao, peticao_texto_state, peticao_arquivo, is_treinamento)
1296
+ # --- FIM DAS FUNÇÕES WRAPPER ---
1297
+
1298
+
1299
+ # --- LÓGICA DOS BOTÕES E EVENTOS (COM CORREÇÃO) ---
1300
+
1301
  caso_btn.click(
1302
  fn=gerar_caso_ficticio,
1303
  inputs=[tipo_peticao_input],
 
1321
  outputs=[arquivo_preview_output]
1322
  )
1323
 
1324
+ # Botão Corrigir (Texto) - MODIFICADO PARA USAR WRAPPER
1325
  btn_corrigir.click(
1326
  fn=lambda: gr.update(value="⏳ Processando... Gerando análise e correção. Isso pode levar um minuto...", visible=True),
1327
  inputs=None,
1328
  outputs=[processing_message]
1329
  ).then(
1330
+ fn=corrigir_peticao_wrapper_texto, # Chama a função wrapper
1331
+ # Inputs SEM o componente modo_treinamento
1332
+ inputs=[caso_input, tipo_peticao_input, peticao_texto_input, gr.State(None)],
1333
+ # Outputs permanecem os mesmos
1334
  outputs=[resultado_analise_output, gr.Textbox(visible=False), resultado_peticao_corrigida_output,
1335
  resumo_alteracoes_output, criticas_output, visualizacao_detalhada_output]
1336
  ).then(
 
1339
  outputs=[processing_message]
1340
  )
1341
 
1342
+ # Botão Corrigir (Arquivo) - MODIFICADO PARA USAR WRAPPER
1343
  btn_corrigir_arquivo.click(
1344
  fn=lambda: gr.update(value="⏳ Processando arquivo... Gerando análise e correção. Isso pode levar um minuto...", visible=True),
1345
  inputs=None,
1346
  outputs=[processing_message]
1347
  ).then(
1348
+ fn=corrigir_peticao_wrapper_arquivo, # Chama a função wrapper
1349
+ # Inputs SEM o componente modo_treinamento
1350
+ inputs=[caso_input, tipo_peticao_input, gr.State(None), peticao_arquivo_input],
1351
+ # Outputs permanecem os mesmos
1352
  outputs=[resultado_analise_output, gr.Textbox(visible=False), resultado_peticao_corrigida_output,
1353
  resumo_alteracoes_output, criticas_output, visualizacao_detalhada_output]
1354
  ).then(