GabrielGD commited on
Commit
d8b88b5
·
verified ·
1 Parent(s): 68eb0c3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -30
app.py CHANGED
@@ -17,7 +17,7 @@ from ratelimiter import RateLimiter
17
  import difflib
18
  from html import escape
19
  import random
20
- import tempfile
21
  import logging
22
 
23
  # Configura o logging para depuração
@@ -544,33 +544,20 @@ def salvar_progresso(caso, peticao):
544
  # Verifica se os inputs estão vazios ou None
545
  if not caso or not peticao:
546
  logger.warning("Inputs vazios detectados: caso ou peticao estão vazios.")
547
- return gr.File.update(visible=False), "⚠️ Caso ou petição estão vazios. Preencha ambos para salvar."
548
-
549
- logger.info("Criando arquivo temporário...")
550
- # Especifica um diretório personalizado para o arquivo temporário
551
- temp_dir = os.path.join(os.getcwd(), "temp_files")
552
- os.makedirs(temp_dir, exist_ok=True)
553
- with tempfile.NamedTemporaryFile(delete=False, suffix=".json", dir=temp_dir, mode='w', encoding='utf-8') as temp_file:
554
- json.dump({"caso": caso, "peticao": peticao}, temp_file, ensure_ascii=False, indent=4)
555
- arquivo_saida = temp_file.name
556
-
557
- # Verifica se o arquivo foi criado e é acessível
558
- if not os.path.exists(arquivo_saida):
559
- logger.error(f"Arquivo temporário não encontrado: {arquivo_saida}")
560
- return gr.File.update(visible=False), f"❌ Erro: Arquivo temporário não foi criado."
561
-
562
- logger.info(f"Arquivo temporário criado com sucesso: {arquivo_saida}")
563
- # Retorna o arquivo temporário para download e uma mensagem de sucesso
564
- return gr.File.update(value=arquivo_saida, visible=True), "✅ Progresso salvo com sucesso!"
565
  except Exception as e:
566
  logger.error(f"Erro ao salvar progresso: {str(e)}")
567
- # Fallback: Retorna o conteúdo como string se o arquivo não puder ser criado
568
- try:
569
- json_content = json.dumps({"caso": caso, "peticao": peticao}, ensure_ascii=False, indent=4)
570
- return gr.File.update(visible=False), f"✅ Progresso salvo! Copie o conteúdo abaixo:\n\n```json\n{json_content}\n```"
571
- except Exception as e2:
572
- logger.error(f"Erro ao gerar JSON como string: {str(e2)}")
573
- return gr.File.update(visible=False), f"❌ Erro ao salvar o progresso: {str(e)}"
574
 
575
  def carregar_progresso(arquivo_entrada):
576
  logger.info("Iniciando carregamento de progresso...")
@@ -648,10 +635,13 @@ def interface_gradio():
648
  salvar_btn = gr.Button("💾 Salvar Progresso")
649
  carregar_btn = gr.Button("📂 Carregar Progresso")
650
  arquivo_progresso = gr.File(label="Arquivo de Progresso", file_types=[".json"])
651
- download_file = gr.File(label="Download do Progresso", interactive=False)
652
 
653
  resultado_output = gr.Markdown(label="📊 Correção Oficial e Nota", show_copy_button=True)
654
 
 
 
 
 
655
  with gr.Row():
656
  peticao_aluno_output = gr.Textbox(label="Petição do Aluno", lines=15, interactive=False)
657
  peticao_corrigida_output = gr.Textbox(label="Petição Corrigida", lines=15, interactive=False)
@@ -699,11 +689,11 @@ def interface_gradio():
699
  outputs=[processing_message]
700
  )
701
  clear_btn.click(
702
- fn=lambda: [None, None, None, None, "", "", "", "", "", gr.update(visible=False)],
703
  inputs=None,
704
  outputs=[caso_input, peticao_texto, peticao_arquivo, arquivo_preview, resultado_output, dica_contextual,
705
  peticao_aluno_output, peticao_corrigida_output, resumo_alteracoes_output, criticas_output,
706
- visualizacao_detalhada_output, processing_message]
707
  )
708
  comparar_btn.click(
709
  fn=comparar_peticao_melhorada,
@@ -718,11 +708,15 @@ def interface_gradio():
718
  ).then(
719
  fn=lambda caso, peticao: salvar_progresso(caso, peticao),
720
  inputs=[caso_input, peticao_texto],
721
- outputs=[download_file, resultado_output]
722
  ).then(
723
  fn=lambda: gr.update(value="", visible=False),
724
  inputs=None,
725
  outputs=[processing_message]
 
 
 
 
726
  )
727
  carregar_btn.click(
728
  fn=lambda arquivo: carregar_progresso(arquivo.name),
 
17
  import difflib
18
  from html import escape
19
  import random
20
+ import base64
21
  import logging
22
 
23
  # Configura o logging para depuração
 
544
  # Verifica se os inputs estão vazios ou None
545
  if not caso or not peticao:
546
  logger.warning("Inputs vazios detectados: caso ou peticao estão vazios.")
547
+ return "", "⚠️ Caso ou petição estão vazios. Preencha ambos para salvar.", ""
548
+
549
+ # Cria o conteúdo JSON como string
550
+ json_content = json.dumps({"caso": caso, "peticao": peticao}, ensure_ascii=False, indent=4)
551
+
552
+ # Codifica o conteúdo em base64 para criar um link de download
553
+ encoded_content = base64.b64encode(json_content.encode('utf-8')).decode('utf-8')
554
+ download_link = f"[Clique aqui para baixar o progresso (progresso.json)](data:application/json;base64,{encoded_content})"
555
+
556
+ logger.info("Progresso salvo com sucesso como string e link de download.")
557
+ return json_content, "✅ Progresso salvo! Copie o conteúdo abaixo ou use o link para baixar:", download_link
 
 
 
 
 
 
 
558
  except Exception as e:
559
  logger.error(f"Erro ao salvar progresso: {str(e)}")
560
+ return "", f"❌ Erro ao salvar o progresso: {str(e)}", ""
 
 
 
 
 
 
561
 
562
  def carregar_progresso(arquivo_entrada):
563
  logger.info("Iniciando carregamento de progresso...")
 
635
  salvar_btn = gr.Button("💾 Salvar Progresso")
636
  carregar_btn = gr.Button("📂 Carregar Progresso")
637
  arquivo_progresso = gr.File(label="Arquivo de Progresso", file_types=[".json"])
 
638
 
639
  resultado_output = gr.Markdown(label="📊 Correção Oficial e Nota", show_copy_button=True)
640
 
641
+ # Componentes para exibir o progresso salvo
642
+ progresso_json_output = gr.Textbox(label="Progresso Salvo (JSON)", lines=5, interactive=False, visible=False)
643
+ progresso_download_link = gr.Markdown(label="Link para Download", visible=False)
644
+
645
  with gr.Row():
646
  peticao_aluno_output = gr.Textbox(label="Petição do Aluno", lines=15, interactive=False)
647
  peticao_corrigida_output = gr.Textbox(label="Petição Corrigida", lines=15, interactive=False)
 
689
  outputs=[processing_message]
690
  )
691
  clear_btn.click(
692
+ fn=lambda: [None, None, None, None, "", "", "", "", "", gr.update(visible=False), gr.update(visible=False), gr.update(visible=False)],
693
  inputs=None,
694
  outputs=[caso_input, peticao_texto, peticao_arquivo, arquivo_preview, resultado_output, dica_contextual,
695
  peticao_aluno_output, peticao_corrigida_output, resumo_alteracoes_output, criticas_output,
696
+ visualizacao_detalhada_output, progresso_json_output, progresso_download_link, processing_message]
697
  )
698
  comparar_btn.click(
699
  fn=comparar_peticao_melhorada,
 
708
  ).then(
709
  fn=lambda caso, peticao: salvar_progresso(caso, peticao),
710
  inputs=[caso_input, peticao_texto],
711
+ outputs=[progresso_json_output, resultado_output, progresso_download_link]
712
  ).then(
713
  fn=lambda: gr.update(value="", visible=False),
714
  inputs=None,
715
  outputs=[processing_message]
716
+ ).then(
717
+ fn=lambda: gr.update(visible=True),
718
+ inputs=None,
719
+ outputs=[progresso_json_output, progresso_download_link]
720
  )
721
  carregar_btn.click(
722
  fn=lambda arquivo: carregar_progresso(arquivo.name),