Update app.py
Browse files
app.py
CHANGED
|
@@ -17,7 +17,7 @@ from ratelimiter import RateLimiter
|
|
| 17 |
import difflib
|
| 18 |
from html import escape
|
| 19 |
import random
|
| 20 |
-
import
|
| 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
|
| 548 |
-
|
| 549 |
-
|
| 550 |
-
|
| 551 |
-
|
| 552 |
-
|
| 553 |
-
|
| 554 |
-
|
| 555 |
-
|
| 556 |
-
|
| 557 |
-
|
| 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 |
-
|
| 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=[
|
| 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),
|