Update app.py
Browse files
app.py
CHANGED
|
@@ -6,6 +6,7 @@ import PyPDF2
|
|
| 6 |
import docx
|
| 7 |
import io
|
| 8 |
import time
|
|
|
|
| 9 |
from dotenv import load_dotenv
|
| 10 |
from pdfplumber import open as pdfplumber_open
|
| 11 |
from PIL import Image
|
|
@@ -546,25 +547,33 @@ def salvar_progresso(caso, peticao):
|
|
| 546 |
# Verifica se os inputs estão vazios ou None
|
| 547 |
if not caso or not peticao:
|
| 548 |
logger.warning("Inputs vazios detectados: caso ou peticao estão vazios.")
|
| 549 |
-
return "", "⚠️ Caso ou petição estão vazios. Preencha ambos para salvar."
|
| 550 |
|
| 551 |
# Cria o conteúdo JSON como string
|
| 552 |
logger.debug("Gerando JSON content...")
|
| 553 |
json_content = json.dumps({"caso": caso, "peticao": peticao}, ensure_ascii=False, indent=4)
|
| 554 |
logger.debug(f"JSON content gerado: {json_content[:100]}...")
|
| 555 |
|
| 556 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 557 |
success_message = (
|
| 558 |
-
"✅ Progresso salvo!
|
| 559 |
-
"
|
| 560 |
-
"
|
|
|
|
| 561 |
)
|
| 562 |
|
| 563 |
-
logger.info("Progresso salvo com sucesso
|
| 564 |
-
return json_content, success_message
|
| 565 |
except Exception as e:
|
| 566 |
logger.error(f"Erro ao salvar progresso: {str(e)}", exc_info=True)
|
| 567 |
-
return "", f"❌ Erro ao salvar o progresso: {str(e)}"
|
| 568 |
|
| 569 |
def carregar_progresso(arquivo_entrada):
|
| 570 |
logger.info("Iniciando carregamento de progresso...")
|
|
@@ -645,8 +654,9 @@ def interface_gradio():
|
|
| 645 |
|
| 646 |
resultado_output = gr.Markdown(label="📊 Correção Oficial e Nota", show_copy_button=True)
|
| 647 |
|
| 648 |
-
#
|
| 649 |
progresso_json_output = gr.Textbox(label="Progresso Salvo (JSON)", lines=5, interactive=False, visible=False)
|
|
|
|
| 650 |
|
| 651 |
with gr.Row():
|
| 652 |
peticao_aluno_output = gr.Textbox(label="Petição do Aluno", lines=15, interactive=False)
|
|
@@ -695,11 +705,11 @@ def interface_gradio():
|
|
| 695 |
outputs=[processing_message]
|
| 696 |
)
|
| 697 |
clear_btn.click(
|
| 698 |
-
fn=lambda: [None, None, None, None, "", "", "", "", "", gr.update(visible=False)],
|
| 699 |
inputs=None,
|
| 700 |
outputs=[caso_input, peticao_texto, peticao_arquivo, arquivo_preview, resultado_output, dica_contextual,
|
| 701 |
peticao_aluno_output, peticao_corrigida_output, resumo_alteracoes_output, criticas_output,
|
| 702 |
-
visualizacao_detalhada_output, progresso_json_output, processing_message]
|
| 703 |
)
|
| 704 |
comparar_btn.click(
|
| 705 |
fn=comparar_peticao_melhorada,
|
|
@@ -714,7 +724,7 @@ def interface_gradio():
|
|
| 714 |
).then(
|
| 715 |
fn=lambda caso, peticao: salvar_progresso(caso, peticao),
|
| 716 |
inputs=[caso_input, peticao_texto],
|
| 717 |
-
outputs=[progresso_json_output, resultado_output]
|
| 718 |
).then(
|
| 719 |
fn=lambda: gr.update(value="", visible=False),
|
| 720 |
inputs=None,
|
|
@@ -722,7 +732,7 @@ def interface_gradio():
|
|
| 722 |
).then(
|
| 723 |
fn=lambda: gr.update(visible=True),
|
| 724 |
inputs=None,
|
| 725 |
-
outputs=[progresso_json_output]
|
| 726 |
)
|
| 727 |
carregar_btn.click(
|
| 728 |
fn=lambda arquivo: carregar_progresso(arquivo.name),
|
|
|
|
| 6 |
import docx
|
| 7 |
import io
|
| 8 |
import time
|
| 9 |
+
import tempfile
|
| 10 |
from dotenv import load_dotenv
|
| 11 |
from pdfplumber import open as pdfplumber_open
|
| 12 |
from PIL import Image
|
|
|
|
| 547 |
# Verifica se os inputs estão vazios ou None
|
| 548 |
if not caso or not peticao:
|
| 549 |
logger.warning("Inputs vazios detectados: caso ou peticao estão vazios.")
|
| 550 |
+
return "", "⚠️ Caso ou petição estão vazios. Preencha ambos para salvar.", None
|
| 551 |
|
| 552 |
# Cria o conteúdo JSON como string
|
| 553 |
logger.debug("Gerando JSON content...")
|
| 554 |
json_content = json.dumps({"caso": caso, "peticao": peticao}, ensure_ascii=False, indent=4)
|
| 555 |
logger.debug(f"JSON content gerado: {json_content[:100]}...")
|
| 556 |
|
| 557 |
+
# Cria um arquivo temporário para salvar o JSON
|
| 558 |
+
logger.debug("Criando arquivo temporário...")
|
| 559 |
+
with tempfile.NamedTemporaryFile(mode='w', delete=False, suffix='.json', prefix='progresso_', encoding='utf-8') as temp_file:
|
| 560 |
+
temp_file.write(json_content)
|
| 561 |
+
temp_file_path = temp_file.name
|
| 562 |
+
logger.debug(f"Arquivo temporário criado: {temp_file_path}")
|
| 563 |
+
|
| 564 |
+
# Mensagem de sucesso com instruções para download ou fallback
|
| 565 |
success_message = (
|
| 566 |
+
"✅ Progresso salvo! O download do arquivo `progresso.json` deve iniciar automaticamente. "
|
| 567 |
+
"Se o download não iniciar, copie o conteúdo abaixo e cole em um arquivo com extensão `.json` "
|
| 568 |
+
"(ex.: `progresso.json`). No celular, você pode copiar o texto, abrir um app de notas, colar o conteúdo, "
|
| 569 |
+
"e salvar como `progresso.json`. Use a opção 'Carregar Progresso' para restaurar."
|
| 570 |
)
|
| 571 |
|
| 572 |
+
logger.info("Progresso salvo com sucesso.")
|
| 573 |
+
return json_content, success_message, temp_file_path
|
| 574 |
except Exception as e:
|
| 575 |
logger.error(f"Erro ao salvar progresso: {str(e)}", exc_info=True)
|
| 576 |
+
return "", f"❌ Erro ao salvar o progresso: {str(e)}", None
|
| 577 |
|
| 578 |
def carregar_progresso(arquivo_entrada):
|
| 579 |
logger.info("Iniciando carregamento de progresso...")
|
|
|
|
| 654 |
|
| 655 |
resultado_output = gr.Markdown(label="📊 Correção Oficial e Nota", show_copy_button=True)
|
| 656 |
|
| 657 |
+
# Componentes para exibir o progresso salvo
|
| 658 |
progresso_json_output = gr.Textbox(label="Progresso Salvo (JSON)", lines=5, interactive=False, visible=False)
|
| 659 |
+
progresso_download_file = gr.File(label="Download do Progresso", visible=False)
|
| 660 |
|
| 661 |
with gr.Row():
|
| 662 |
peticao_aluno_output = gr.Textbox(label="Petição do Aluno", lines=15, interactive=False)
|
|
|
|
| 705 |
outputs=[processing_message]
|
| 706 |
)
|
| 707 |
clear_btn.click(
|
| 708 |
+
fn=lambda: [None, None, None, None, "", "", "", "", "", gr.update(visible=False), gr.update(visible=False)],
|
| 709 |
inputs=None,
|
| 710 |
outputs=[caso_input, peticao_texto, peticao_arquivo, arquivo_preview, resultado_output, dica_contextual,
|
| 711 |
peticao_aluno_output, peticao_corrigida_output, resumo_alteracoes_output, criticas_output,
|
| 712 |
+
visualizacao_detalhada_output, progresso_json_output, progresso_download_file, processing_message]
|
| 713 |
)
|
| 714 |
comparar_btn.click(
|
| 715 |
fn=comparar_peticao_melhorada,
|
|
|
|
| 724 |
).then(
|
| 725 |
fn=lambda caso, peticao: salvar_progresso(caso, peticao),
|
| 726 |
inputs=[caso_input, peticao_texto],
|
| 727 |
+
outputs=[progresso_json_output, resultado_output, progresso_download_file]
|
| 728 |
).then(
|
| 729 |
fn=lambda: gr.update(value="", visible=False),
|
| 730 |
inputs=None,
|
|
|
|
| 732 |
).then(
|
| 733 |
fn=lambda: gr.update(visible=True),
|
| 734 |
inputs=None,
|
| 735 |
+
outputs=[progresso_json_output, progresso_download_file]
|
| 736 |
)
|
| 737 |
carregar_btn.click(
|
| 738 |
fn=lambda arquivo: carregar_progresso(arquivo.name),
|