luanpoppe commited on
Commit
a1c6081
·
1 Parent(s): 903083d

fix: converter texto final markdown para HTML

Browse files
_utils/resumo_completo_cursor.py CHANGED
@@ -18,6 +18,8 @@ from _utils.models.gerar_relatorio import (
18
  )
19
  import markdown
20
 
 
 
21
  def reciprocal_rank_fusion(result_lists, weights=None):
22
  """Combine multiple ranked lists using reciprocal rank fusion"""
23
  fused_scores = {}
@@ -122,22 +124,25 @@ async def get_llm_summary_answer_by_cursor_complete(
122
  x["source"]["text"] = x["source"]["text"][0:200]
123
  x["source"]["context"] = x["source"]["context"][0:200]
124
 
 
 
 
125
  if isBubble:
126
  print("COMEÇANDO A REQUISIÇÃO FINAL PARA O BUBBLE")
127
  enviar_resposta_final(
128
  serializer["doc_id"],
129
  serializer["form_response_id"],
130
  serializer["version"],
131
- texto_completo,
132
  False,
133
  )
134
  print("TERMINOU A REQUISIÇÃO FINAL PARA O BUBBLE")
135
 
136
  return {
137
- "texto_completo": markdown.markdown(texto_completo),
138
  "resultado": structured_summaries,
139
  "parametros-utilizados": gerar_resposta_compilada(serializer),
140
  }
141
  except Exception as e:
142
  custom_exception_handler_wihout_api_handler(e, serializer)
143
- raise
 
18
  )
19
  import markdown
20
 
21
+ from _utils.utils import convert_markdown_to_HTML
22
+
23
  def reciprocal_rank_fusion(result_lists, weights=None):
24
  """Combine multiple ranked lists using reciprocal rank fusion"""
25
  fused_scores = {}
 
124
  x["source"]["text"] = x["source"]["text"][0:200]
125
  x["source"]["context"] = x["source"]["context"][0:200]
126
 
127
+ texto_completo_como_html = convert_markdown_to_HTML(texto_completo)
128
+ print("\ntexto_completo_como_html", texto_completo_como_html)
129
+
130
  if isBubble:
131
  print("COMEÇANDO A REQUISIÇÃO FINAL PARA O BUBBLE")
132
  enviar_resposta_final(
133
  serializer["doc_id"],
134
  serializer["form_response_id"],
135
  serializer["version"],
136
+ texto_completo_como_html,
137
  False,
138
  )
139
  print("TERMINOU A REQUISIÇÃO FINAL PARA O BUBBLE")
140
 
141
  return {
142
+ "texto_completo": texto_completo_como_html,
143
  "resultado": structured_summaries,
144
  "parametros-utilizados": gerar_resposta_compilada(serializer),
145
  }
146
  except Exception as e:
147
  custom_exception_handler_wihout_api_handler(e, serializer)
148
+ raise
_utils/utils.py CHANGED
@@ -14,6 +14,7 @@ from typing import List
14
  import numpy as np
15
  import openai
16
  import pandas as pd
 
17
 
18
  os.environ["LANGCHAIN_TRACING_V2"]="true"
19
  os.environ["LANGCHAIN_ENDPOINT"]="https://api.smith.langchain.com"
@@ -192,3 +193,14 @@ Do not pass in the response part of the instructions that you received
192
  Generate the response with at least 10000 characteres
193
  The content to be summarized is as follows:
194
  """
 
 
 
 
 
 
 
 
 
 
 
 
14
  import numpy as np
15
  import openai
16
  import pandas as pd
17
+ import markdown
18
 
19
  os.environ["LANGCHAIN_TRACING_V2"]="true"
20
  os.environ["LANGCHAIN_ENDPOINT"]="https://api.smith.langchain.com"
 
193
  Generate the response with at least 10000 characteres
194
  The content to be summarized is as follows:
195
  """
196
+
197
+
198
+ def convert_markdown_to_HTML(text: str):
199
+ texto_inicial = (
200
+ text.replace("```", "")
201
+ .replace("<diagnostico_processual>", "")
202
+ .replace("</diagnostico_processual>", "")
203
+ .replace("xml", "")
204
+ )
205
+ html = markdown.markdown(texto_inicial)
206
+ return html
tests/fixtures/resposta_final_como_markdown.py ADDED
@@ -0,0 +1 @@
 
 
1
+ resposta_final_como_markdown = '\n\n```\n<diagnostico_processual>\n**I. Introdução**\n*DIAGNÓSTICO PROCESSUAL*\nProcesso n.º 8139525-37.2023.8.05.0001\nJuizado Especial da Fazenda Pública - TJBA\nO presente caso trata de embargos de declaração opostos por ADEILTON RODRIGUES DALMEIDA contra a sentença proferida nos autos da ação que move em face do MUNICÍPIO DE SALVADOR, visando à restituição de valores pagos a título de Imposto sobre Transmissão de Bens Imóveis (ITIV), alegândo cobrança indevida.\nO Embargante alega omissão na sentença quanto ao pedido de devolução em dobro dos valores cobrados indevidamente e quanto ao pedido de indenização por danos morais.\nII. Análise dos Pressupostos Formais\nOs embargos de declaração foram interpostos tempestivamente, conforme se depreende da análise da data da publicação da sentença e da data da interposição dos embargos, respeitando o prazo de 5 (cinco) dias úteis previsto no artigo 1.023 do Código de Processo Civil.\nQuanto à adequação do objeto, verifica-se que o Embargante aponta omissão na sentença, o que se enquadra nas hipóteses de cabimento dos embargos de declaração, conforme o artigo 1.022, II, do CPC.\nIII. Exame de Mérito\nO Embargante sustenta que a sentença é omissa, pois não se manifestou sobre o pedido de devolução em dobro dos valores cobrados indevidamente e sobre o pedido de indenização por danos morais.\nAnalisando a sentença (IDs 451455254 e 451552279), constata-se que, de fato, o magistrado *a quo* julgou procedente o pedido de restituição do valor pago a maior a título de ITIV, mas silenciou quanto aos demais pedidos formulados na inicial, quais sejam, a devolução em dobro e a indenização por danos morais.\nA omissão configura um vício sanável por meio dos embargos de declaração, pois o juiz tem o dever de se manifestar sobre todos os pedidos formulados pelas partes, ainda que para indeferi-los. A ausência de manifestação impede a compreensão integral da decisão e dificulta o exercício do direito de recurso.\nNão se vislumbra, no caso, tentativa de rediscussão do mérito, mas sim a busca por um pronunciamento judicial sobre questões que não foram devidamente apreciadas na sentença.\nIV. Jurisprudência Aplicável\nA jurisprudência é pacífica no sentido de que a omissão é causa para o acolhimento dos embargos de declaração. O Superior Tribunal de Justiça (STJ) tem reiteradamente decidido que o juiz deve se manifestar sobre todos os pedidos formulados pelas partes, sob pena de omissão.\n"PROCESSUAL CIVIL. EMBARGOS DE DECLARAÇÃO. OMISSÃO. OCORRÊNCIA.\n1. Os embargos de declaração são cabíveis quando houver obscuridade, contradição, omissão ou erro material no julgado (art. 1.022 do CPC/2015).\n2. Verificada a omissão no acórdão embargado, impõe-se o acolhimento dos embargos para que seja suprido o vício." (EDcl no AgInt no AREsp 1688454/SP, Rel. Ministro OG FERNANDES, SEGUNDA TURMA, julgado em 24/08/2020, DJe 31/08/2020)\nV. **Conclusão e Sugestão de Decisão**\nDiante do exposto, sugere-se o acolhimento parcial dos embargos de declaração, para sanar a omissão apontada, complementando a sentença para que o magistrado se manifeste expressamente sobre os pedidos de devolução em dobro dos valores cobrados indevidamente e de indenização por danos morais.\nNo mérito, quanto ao pedido de devolução em dobro, considerando a ausência de comprovação de má-fé por parte do Município, o pedido pode ser indeferido, determinando-se a devolução simples do valor pago a maior, devidamente corrigido.\nQuanto ao pedido de indenização por danos morais, é necessário analisar se a cobrança indevida do ITIV gerou algum abalo moral ao Embargante, além do mero dissabor. A jurisprudência tem entendido que a simples cobrança indevida de tributo não gera, por si só, dano moral indenizável, sendo necessária a comprovação de um prejuízo extraordinário. Caso não haja comprovação de tal prejuízo, o pedido pode ser indeferido.\nVI. Observações Adicionais\nConsiderando que o acolhimento dos embargos de declaração implica a modificação da sentença, ainda que para indeferir os pedidos omissos, entende-se desnecessária a manifestação da parte contrária, uma vez que a decisão final não lhe será mais prejudicial do que a decisão original.\n</diagnostico_processual>\n```\n'
tests/test_utils.py ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pytest
2
+ import os
3
+ from _utils.splitters.Splitter_class import Splitter
4
+ from _utils.models.gerar_relatorio import (
5
+ DocumentChunk,
6
+ )
7
+ from _utils.utils import convert_markdown_to_HTML
8
+ from tests.fixtures.resposta_final_como_markdown import resposta_final_como_markdown
9
+
10
+
11
+ class TestUtils:
12
+ @pytest.mark.asyncio
13
+ async def test_convert_markdown_to_HTML(self, monkeypatch):
14
+ resultado = convert_markdown_to_HTML(resposta_final_como_markdown)
15
+ print("\n\nresultado", resultado)
16
+
17
+ # assert isinstance(result_chunks, list)
18
+ # assert isinstance(result_strings, list)
19
+ # assert len(result_chunks) > 0
20
+ # assert len(result_strings) > 0
21
+ # assert all(isinstance(item, str) for item in result_strings)
22
+ # assert all(isinstance(item, DocumentChunk) for item in result_chunks)
23
+ # assert all(
24
+ # (chunk_size - 100) < len(item.content) < (chunk_size + 100)
25
+ # for item in result_chunks
26
+ # )