Update app.py
Browse files
app.py
CHANGED
|
@@ -494,7 +494,7 @@ Diferença Líquida: {total_adicionadas - total_removidas} linhas
|
|
| 494 |
return peticao, peticao_corrigida, resumo_estatistico, criticas_texto, visualizacao_detalhada
|
| 495 |
|
| 496 |
def salvar_progresso(caso, peticao_texto):
|
| 497 |
-
"""
|
| 498 |
try:
|
| 499 |
dados = {
|
| 500 |
"caso": caso or "",
|
|
@@ -502,13 +502,11 @@ def salvar_progresso(caso, peticao_texto):
|
|
| 502 |
"data": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
| 503 |
"historico": HISTORICO
|
| 504 |
}
|
| 505 |
-
|
| 506 |
-
|
| 507 |
-
json.dump(dados, f, ensure_ascii=False)
|
| 508 |
-
return caminho_temp
|
| 509 |
except Exception as e:
|
| 510 |
print(f"Erro ao salvar progresso: {str(e)}")
|
| 511 |
-
return
|
| 512 |
|
| 513 |
def carregar_progresso(arquivo):
|
| 514 |
"""Carrega o progresso a partir de um arquivo JSON."""
|
|
@@ -532,6 +530,9 @@ def interface_gradio():
|
|
| 532 |
gr.Markdown("# 📝 Corretor Avançado de Petições Iniciais (Critérios OAB)")
|
| 533 |
gr.Markdown("⚠️ Nota: Devido a limites da API, pode haver atrasos ou erros em muitas requisições rápidas.")
|
| 534 |
|
|
|
|
|
|
|
|
|
|
| 535 |
with gr.Row():
|
| 536 |
with gr.Column(scale=1):
|
| 537 |
gr.Markdown("""
|
|
@@ -618,11 +619,36 @@ def interface_gradio():
|
|
| 618 |
outputs=historico_output
|
| 619 |
)
|
| 620 |
|
|
|
|
| 621 |
download_btn.click(
|
| 622 |
fn=salvar_progresso,
|
| 623 |
inputs=[caso_input, peticao_texto],
|
| 624 |
-
outputs=
|
| 625 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 626 |
upload_progresso.change(
|
| 627 |
fn=carregar_progresso,
|
| 628 |
inputs=[upload_progresso],
|
|
@@ -711,7 +737,7 @@ def gerar_caso_ficticio():
|
|
| 711 |
def estruturar_prompt_geracao_caso():
|
| 712 |
return """
|
| 713 |
Crie um caso fictício detalhado para uma petição inicial cível, similar ao exemplo:
|
| 714 |
-
"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
|
| 715 |
O caso deve:
|
| 716 |
1. Conter uma violação clara de direitos que justifique uma ação cível
|
| 717 |
2. Incluir valores específicos de danos materiais e/ou morais
|
|
|
|
| 494 |
return peticao, peticao_corrigida, resumo_estatistico, criticas_texto, visualizacao_detalhada
|
| 495 |
|
| 496 |
def salvar_progresso(caso, peticao_texto):
|
| 497 |
+
"""Gera o conteúdo JSON e retorna como string para download via JavaScript."""
|
| 498 |
try:
|
| 499 |
dados = {
|
| 500 |
"caso": caso or "",
|
|
|
|
| 502 |
"data": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
| 503 |
"historico": HISTORICO
|
| 504 |
}
|
| 505 |
+
json_content = json.dumps(dados, ensure_ascii=False)
|
| 506 |
+
return json_content
|
|
|
|
|
|
|
| 507 |
except Exception as e:
|
| 508 |
print(f"Erro ao salvar progresso: {str(e)}")
|
| 509 |
+
return f"Erro: {str(e)}"
|
| 510 |
|
| 511 |
def carregar_progresso(arquivo):
|
| 512 |
"""Carrega o progresso a partir de um arquivo JSON."""
|
|
|
|
| 530 |
gr.Markdown("# 📝 Corretor Avançado de Petições Iniciais (Critérios OAB)")
|
| 531 |
gr.Markdown("⚠️ Nota: Devido a limites da API, pode haver atrasos ou erros em muitas requisições rápidas.")
|
| 532 |
|
| 533 |
+
# Componente oculto para armazenar o JSON e disparar o download
|
| 534 |
+
download_trigger = gr.Textbox(visible=False)
|
| 535 |
+
|
| 536 |
with gr.Row():
|
| 537 |
with gr.Column(scale=1):
|
| 538 |
gr.Markdown("""
|
|
|
|
| 619 |
outputs=historico_output
|
| 620 |
)
|
| 621 |
|
| 622 |
+
# Evento para salvar progresso
|
| 623 |
download_btn.click(
|
| 624 |
fn=salvar_progresso,
|
| 625 |
inputs=[caso_input, peticao_texto],
|
| 626 |
+
outputs=download_trigger
|
| 627 |
)
|
| 628 |
+
|
| 629 |
+
# JavaScript para disparar o download no navegador
|
| 630 |
+
demo.load(_js="""
|
| 631 |
+
function() {
|
| 632 |
+
const trigger = document.querySelector('input[style*="display: none"]'); // Seleciona o Textbox oculto
|
| 633 |
+
if (trigger) {
|
| 634 |
+
trigger.addEventListener('change', function() {
|
| 635 |
+
const content = this.value;
|
| 636 |
+
if (content && !content.startsWith("Erro:")) {
|
| 637 |
+
const blob = new Blob([content], { type: "application/json" });
|
| 638 |
+
const url = URL.createObjectURL(blob);
|
| 639 |
+
const a = document.createElement("a");
|
| 640 |
+
a.href = url;
|
| 641 |
+
a.download = "progresso_salvo.json";
|
| 642 |
+
document.body.appendChild(a);
|
| 643 |
+
a.click();
|
| 644 |
+
document.body.removeChild(a);
|
| 645 |
+
URL.revokeObjectURL(url);
|
| 646 |
+
}
|
| 647 |
+
});
|
| 648 |
+
}
|
| 649 |
+
}
|
| 650 |
+
""")
|
| 651 |
+
|
| 652 |
upload_progresso.change(
|
| 653 |
fn=carregar_progresso,
|
| 654 |
inputs=[upload_progresso],
|
|
|
|
| 737 |
def estruturar_prompt_geracao_caso():
|
| 738 |
return """
|
| 739 |
Crie um caso fictício detalhado para uma petição inicial cível, similar ao exemplo:
|
| 740 |
+
"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 resortsarcimento."
|
| 741 |
O caso deve:
|
| 742 |
1. Conter uma violação clara de direitos que justifique uma ação cível
|
| 743 |
2. Incluir valores específicos de danos materiais e/ou morais
|