luanpoppe commited on
Commit
2213315
·
1 Parent(s): 85dd209

feat: adicionando teste unitário dos contextuals

Browse files
_utils/bubble_integrations/enviar_resposta_final.py CHANGED
@@ -11,4 +11,4 @@ def enviar_resposta_final(doc_id: str, form_response_id: str, version: str, text
11
  "texto_completo": texto_completo,
12
  "erro": error,
13
  }
14
- requests.post(url, body, headers=headers)
 
11
  "texto_completo": texto_completo,
12
  "erro": error,
13
  }
14
+ return requests.post(url, body, headers=headers)
_utils/custom_exception_handler.py CHANGED
@@ -17,18 +17,15 @@ def custom_exception_handler(exc, context):
17
  if response and str(response.status_code)[0] != "2":
18
  logger.error(f"Validation error: {response.data}")
19
 
20
- enviar_resposta_final(
 
21
  serializer.get("doc_id", ""),
22
  serializer.get("form_response_id", ""),
23
  serializer.get("version", ""),
24
  serializer.get("texto_completo", ""),
25
  True,
26
  )
 
 
27
 
28
  return response
29
-
30
-
31
- def your_additional_function(exc, context):
32
- # Implement your custom logic here
33
- # For example, send an email notification or perform other actions
34
- pass
 
17
  if response and str(response.status_code)[0] != "2":
18
  logger.error(f"Validation error: {response.data}")
19
 
20
+ print("INICIANDO RESPOSTA DE ERRO PARA O BUBBLE")
21
+ resposta_bubble = enviar_resposta_final(
22
  serializer.get("doc_id", ""),
23
  serializer.get("form_response_id", ""),
24
  serializer.get("version", ""),
25
  serializer.get("texto_completo", ""),
26
  True,
27
  )
28
+ print("\n\nresposta_bubble.status_code", resposta_bubble.status_code)
29
+ print("\n\nresposta_bubble.json()", resposta_bubble.json())
30
 
31
  return response
 
 
 
 
 
 
_utils/gerar_relatorio_modelo_usuario/contextual_retriever.py CHANGED
@@ -81,7 +81,7 @@ class ContextualRetriever:
81
  if attempt != 0:
82
  print("------------- FORMATAÇÃO DO CONTEXTUAL INCORRETA - TENTANDO NOVAMENTE -------------")
83
  print(
84
- f"\n\nTENTATIVA FORMATAÇÃO CHUNKS NÚMERO {attempt}: {all_chunks_contents[0:100]}"
85
  )
86
  print("\nCOMEÇANDO UMA REQUISIÇÃO DO CONTEXTUAL")
87
  raw_response = await agpt_answer(prompt)
@@ -113,19 +113,24 @@ class ContextualRetriever:
113
  )
114
 
115
  lista_chunks = []
116
- for index, chunk in enumerate(lista_com_20_chunks):
117
- lista_chunks.append(
118
- ContextualizedChunk(
119
- contextual_summary=result[index][2],
120
- content=chunk.content,
121
- page_number=chunk.page_number,
122
- id_do_processo=int(result[index][0]),
123
- chunk_id=chunk.chunk_id,
124
- start_char=chunk.start_char,
125
- end_char=chunk.end_char,
126
- context=result[index][1],
 
 
127
  )
128
- )
 
 
 
129
 
130
  return lista_chunks
131
 
 
81
  if attempt != 0:
82
  print("------------- FORMATAÇÃO DO CONTEXTUAL INCORRETA - TENTANDO NOVAMENTE -------------")
83
  print(
84
+ f"\n\nTENTATIVA FORMATAÇÃO CHUNKS NÚMERO {attempt + 1}"
85
  )
86
  print("\nCOMEÇANDO UMA REQUISIÇÃO DO CONTEXTUAL")
87
  raw_response = await agpt_answer(prompt)
 
113
  )
114
 
115
  lista_chunks = []
116
+ try:
117
+ for index, chunk in enumerate(lista_com_20_chunks):
118
+ lista_chunks.append(
119
+ ContextualizedChunk(
120
+ contextual_summary=result[index][2],
121
+ content=chunk.content,
122
+ page_number=chunk.page_number,
123
+ id_do_processo=int(result[index][0]),
124
+ chunk_id=chunk.chunk_id,
125
+ start_char=chunk.start_char,
126
+ end_char=chunk.end_char,
127
+ context=result[index][1],
128
+ )
129
  )
130
+ except BaseException as e :
131
+ print(e)
132
+ print("\nERRO DO CONTEXTUAL")
133
+ print('\n\nresult', result)
134
 
135
  return lista_chunks
136
 
tests/gerar_relatorio_modelo_usuario/fixture_lista_respostas_contextuals.py CHANGED
@@ -799,7 +799,118 @@ lista_respostas_contextuals = [
799
  </final_output>"""
800
  ]
801
 
802
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
803
 
804
 
805
  lista_respostas = ["<final_output>\n1. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Virtualização e Migração de Autos] --- [Este trecho informa sobre a digitalização e migração do processo para o sistema eletrônico do Poder Judiciário da Bahia, destacando a modernização do trâmite processual, o que é relevante para entender a evolução do caso ao longo do tempo.]\n</chunk_context>\n2. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Virtualização e Migração de Autos] --- [Este documento confirma a migração do processo para o sistema eletrônico, assegurando a autenticidade e a preservação dos dados processuais, o que é importante para a integridade do caso e sua tramitação.]\n</chunk_context>\n3. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ação Penal - Procedimento Ordinário] --- [Este trecho apresenta informações sobre a ação penal, incluindo a data de distribuição e os envolvidos, contextualizando o início do processo e a natureza da acusação contra Adriano de Jesus Sales.]\n</chunk_context>\n4. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Denúncia do Ministério Público] --- [Aqui é detalhada a tentativa de furto de um notebook na loja OI, incluindo a descrição do evento e a reação da vítima, Samiri Ferreira Carvalho Alves, que é fundamental para a compreensão do crime e da acusação.]\n</chunk_context>\n5. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Inquérito Policial] --- [Este documento registra a autuação do inquérito policial, detalhando a prisão em flagrante de Adriano e a infração penal, o que é crucial para entender a base legal da acusação e o contexto do crime.]\n</chunk_context>\n6. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Auto de Prisão em Flagrante] --- [Este trecho descreve a ratificação da prisão em flagrante e os direitos do preso, evidenciando o cumprimento das formalidades legais e a proteção dos direitos individuais, aspectos importantes do processo penal.]\n</chunk_context>\n7. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Depoimento do Condutor] --- [Aqui, o depoimento do policial que conduziu a prisão é registrado, fornecendo detalhes sobre a abordagem e a situação no local do crime, o que é essencial para a narrativa do caso.]\n</chunk_context>\n8. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Depoimento da Testemunha] --- [Este documento inclui o depoimento de uma testemunha, que confirma a tentativa de furto e a prisão de Adriano, reforçando a evidência contra o réu e a dinâmica do crime.]\n</chunk_context>\n9. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Exibição e Apreensão] --- [Este trecho documenta a apreensão do notebook, que é uma prova material do crime, e sua entrega à vítima, o que é crucial para a comprovação da tentativa de furto.]\n</chunk_context>\n10. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Declarações] --- [Aqui, a gerente da loja fornece sua versão dos fatos, detalhando como percebeu a tentativa de furto, o que é vital para a construção do caso e a acusação contra Adriano.]\n</chunk_context>\n11. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Auto de Entrega] --- [Este documento registra a entrega do notebook à vítima, evidenciando a recuperação do bem e a conclusão de uma etapa do processo, que é relevante para a resolução do caso.]\n</chunk_context>\n12. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Interrogatório do Conduzido] --- [Neste trecho, Adriano é interrogado e nega a acusação de furto, apresentando sua versão dos fatos, o que é importante para entender sua defesa e a dinâmica do processo.]\n</chunk_context>\n13. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Nota de Culpa] --- [Este documento informa a Adriano sobre a acusação formal e os direitos que lhe assistem, sendo um passo importante na formalização do processo penal e na defesa do réu.]\n</chunk_context>\n14. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ofício ao Juiz] --- [Este ofício comunica ao juiz sobre a prisão em flagrante e a situação de Adriano, destacando a formalidade do processo e a necessidade de acompanhamento judicial.]\n</chunk_context>\n15. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ofício ao Promotor] --- [Aqui, o delegado informa ao promotor sobre a prisão e a situação do réu, o que é essencial para a continuidade do processo e a atuação do Ministério Público.]\n</chunk_context>\n16. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ofício ao Defensor Público] --- [Este ofício é enviado ao defensor público, garantindo que Adriano tenha acesso à defesa legal, um direito fundamental no processo penal.]\n</chunk_context>\n17. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Guia para Identificação Criminal] --- [Este documento solicita a identificação criminal de Adriano, que é um procedimento padrão após a prisão, assegurando a formalização do processo e a verificação de antecedentes.]\n</chunk_context>\n18. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Boletim Individual] --- [Este boletim registra informações detalhadas sobre a prisão de Adriano, incluindo dados pessoais e circunstâncias do crime, sendo uma parte importante do registro processual.]\n</chunk_context>\n19. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Relatório do Inquérito Policial] --- [Este relatório resume os fatos do inquérito, detalhando a tentativa de furto e as evidências coletadas, o que é crucial para a compreensão do caso e a fundamentação da denúncia.]\n</chunk_context>\n20. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Conclusão do Inquérito] --- [Este documento finaliza o inquérito policial, apresentando as provas e a situação do réu, o que é essencial para a transição do caso para a fase judicial e a continuidade do processo.]\n</chunk_context>\n</final_output>",
 
799
  </final_output>"""
800
  ]
801
 
802
+ lista_respostas_contextuals_cenario_02 = [
803
+ """<final_output>
804
+ <chunk_context>
805
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk apresenta informações iniciais sobre o processo, incluindo a classe, o órgão julgador e a última distribuição. Ele estabelece o contexto do caso, que envolve a busca de Janilde Novaes Franco da Mota pelo pagamento de diferenças salariais referentes ao Piso Nacional do Magistério, conforme descrito no resumo do processo.]
806
+ </chunk_context>
807
+ <chunk_context>
808
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste chunk, são fornecidos detalhes sobre a impetração do mandado de segurança coletivo, destacando a legitimidade da autora e a necessidade de implementação do piso salarial. Ele se relaciona com a argumentação da autora sobre a desnecessidade de filiação à AFPEB para a execução do título coletivo, um ponto central no processo.]
809
+ </chunk_context>
810
+ <chunk_context>
811
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk discute a concessão da justiça gratuita e a liquidação coletiva do mandado de segurança, enfatizando a busca da autora por valores retroativos. Ele se conecta ao resumo ao abordar a questão da liquidação prévia e a argumentação sobre a necessidade de comprovação da condição de beneficiário do título.]
812
+ </chunk_context>
813
+ <chunk_context>
814
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste trecho, são apresentadas as premissas fixadas pela relatora sobre a desnecessidade de filiação à AFPEB e a implementação do piso nacional. Ele se alinha com a defesa da autora, que argumenta que todos os profissionais do magistério têm direito ao piso, independentemente da associação.]
815
+ </chunk_context>
816
+ <chunk_context>
817
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk aborda a questão da correção monetária e juros de mora, detalhando os índices aplicáveis. Ele é relevante para o resumo, pois estabelece os parâmetros financeiros que serão utilizados na execução da sentença, um aspecto crucial para a autora.]
818
+ </chunk_context>
819
+ <chunk_context>
820
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste trecho, discute-se a liquidez do título e a ausência de litispendência em relação à ação coletiva. Ele se relaciona com a argumentação da autora sobre a possibilidade de execução individual do título coletivo, um ponto importante no processo.]
821
+ </chunk_context>
822
+ <chunk_context>
823
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk detalha as diferenças salariais a serem pagas, incluindo a correção monetária e os juros. Ele é fundamental para o entendimento do cálculo das diferenças salariais que a autora busca, conforme mencionado no resumo do processo.]
824
+ </chunk_context>
825
+ <chunk_context>
826
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste trecho, a autora apresenta a comprovação de sua condição de beneficiária do título, reforçando seu direito ao piso nacional. Ele se conecta ao resumo ao evidenciar a argumentação da autora sobre a paridade vencimental e a necessidade de comprovação.]
827
+ </chunk_context>
828
+ <chunk_context>
829
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk discute as condições para a aposentadoria e a paridade vencimental, abordando a legislação pertinente. Ele é relevante para o caso, pois esclarece os direitos da autora em relação ao seu benefício e como isso se relaciona com o piso nacional.]
830
+ </chunk_context>
831
+ <chunk_context>
832
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste trecho, são apresentadas as condições para a aposentadoria e os direitos dos servidores, incluindo a paridade. Ele se relaciona com a argumentação da autora sobre a necessidade de garantir a paridade vencimental para os aposentados.]
833
+ </chunk_context>
834
+ <chunk_context>
835
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk aborda a concessão de aposentadorias e pensões, detalhando os direitos dos servidores. Ele é importante para o entendimento do contexto legal que envolve a demanda da autora por diferenças salariais.]
836
+ </chunk_context>
837
+ <chunk_context>
838
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste trecho, discute-se a revisão dos proventos de aposentadoria e a paridade. Ele se conecta ao resumo ao abordar a importância da paridade para os servidores aposentados e como isso impacta a demanda da autora.]
839
+ </chunk_context>
840
+ <chunk_context>
841
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk detalha as condições para a aposentadoria e os direitos dos servidores, incluindo a paridade. Ele é relevante para o caso, pois esclarece os direitos da autora em relação ao seu benefício e como isso se relaciona com o piso nacional.]
842
+ </chunk_context>
843
+ <chunk_context>
844
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste trecho, a autora reafirma seu pedido de gratuidade de justiça e a total procedência da demanda. Ele se relaciona com o resumo ao enfatizar a importância da assistência judiciária para a autora na busca por seus direitos.]
845
+ </chunk_context>
846
+ <chunk_context>
847
+ [427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk finaliza com o pedido da autora, incluindo a citação do réu e a atribuição do valor da causa. Ele é crucial para o entendimento do que a autora busca no processo e como isso se alinha com o resumo do caso.]
848
+ </chunk_context>
849
+ </final_output>""",
850
+ """
851
+ <final_output>
852
+ 1. <chunk_context>
853
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho aborda a decisão do Tribunal de Justiça da Bahia sobre a competência para julgar mandados de segurança contra atos de Secretários de Estado, destacando a importância da paridade vencimental para os professores aposentados, o que se relaciona diretamente ao pedido da autora por diferenças salariais referentes ao Piso Nacional do Magistério.]
854
+ </chunk_context>
855
+ 2. <chunk_context>
856
+ [22380004] --- [Mandado de Segurança Coletivo] --- [Neste trecho, é discutida a omissão do Estado em cumprir a legislação que estabelece o Piso Nacional do Magistério, evidenciando a situação de ilegalidade que a autora busca corrigir através do mandado de segurança, reforçando a temática central do processo sobre a implementação do piso salarial.]
857
+ </chunk_context>
858
+ 3. <chunk_context>
859
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Aqui, é detalhada a necessidade de assegurar que os vencimentos dos professores sejam pagos conforme o Piso Nacional do Magistério, conforme a Lei nº 11.738/2008, o que é um dos fundamentos do pedido da autora no processo, alinhando-se com a busca por justiça salarial.]
860
+ </chunk_context>
861
+ 4. <chunk_context>
862
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho menciona a atualização do piso salarial e a necessidade de que os vencimentos dos professores sejam ajustados anualmente, o que é crucial para entender a base legal que sustenta o pedido da autora por diferenças salariais retroativas.]
863
+ </chunk_context>
864
+ 5. <chunk_context>
865
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Neste segmento, é discutido que a remuneração dos professores deve ser composta pelo vencimento básico e não por outras vantagens, o que é um ponto central na argumentação da autora para garantir que seus proventos sejam ajustados ao piso nacional, conforme a legislação vigente.]
866
+ </chunk_context>
867
+ 6. <chunk_context>
868
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Aqui, é abordada a questão da proporcionalidade do pagamento do piso salarial em relação à carga horária dos professores, um aspecto que a autora utiliza para justificar a necessidade de revisão de seus vencimentos, reforçando a argumentação sobre a aplicação correta da lei.]
869
+ </chunk_context>
870
+ 7. <chunk_context>
871
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho detalha a situação de um servidor paradigma e a comparação entre seu vencimento atual e o piso nacional, evidenciando a diferença que a autora busca corrigir, o que é fundamental para a compreensão do impacto financeiro do pedido no processo.]
872
+ </chunk_context>
873
+ 8. <chunk_context>
874
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Neste segmento, é feita uma análise comparativa entre os vencimentos de diferentes servidores, destacando a necessidade de que todos os professores, independentemente do regime de pagamento, recebam pelo menos o valor do piso nacional, o que é um ponto central na demanda da autora.]
875
+ </chunk_context>
876
+ 9. <chunk_context>
877
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Aqui, é discutido o direito dos professores a receberem o piso nacional, enfatizando a ilegalidade de qualquer pagamento inferior, o que está diretamente relacionado ao pedido da autora por diferenças salariais e à proteção dos direitos dos servidores.]
878
+ </chunk_context>
879
+ 10. <chunk_context>
880
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho menciona a necessidade de que o Estado da Bahia cumpra a legislação federal sobre o piso salarial, reforçando a argumentação da autora sobre a obrigação do ente público em garantir os direitos dos professores, o que é um aspecto crucial do processo.]
881
+ </chunk_context>
882
+ 11. <chunk_context>
883
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Neste segmento, é abordada a questão da modulação de efeitos da lei que estabelece o piso salarial, o que é relevante para entender as implicações temporais do pedido da autora e a necessidade de pagamento retroativo das diferenças salariais.]
884
+ </chunk_context>
885
+ 12. <chunk_context>
886
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Aqui, a autora solicita a concessão da segurança para garantir que todos os substituídos recebam o piso nacional, o que é um pedido central do processo e reflete a busca por justiça e equidade salarial entre os professores.]
887
+ </chunk_context>
888
+ 13. <chunk_context>
889
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho detalha os pedidos da autora, incluindo a obrigação de reajustar os vencimentos e pagar as diferenças salariais, o que é fundamental para entender a extensão da demanda e a urgência da situação enfrentada pelos professores.]
890
+ </chunk_context>
891
+ 14. <chunk_context>
892
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Neste segmento, é discutida a gratuidade da justiça, um aspecto importante para a autora, que busca assegurar que a falta de recursos não impeça o acesso à justiça, refletindo a vulnerabilidade da classe de professores aposentados.]
893
+ </chunk_context>
894
+ 15. <chunk_context>
895
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Aqui, é mencionado o pedido para que o Estado apresente os assentamentos funcionais do impetrante, o que é uma solicitação relevante para a comprovação dos direitos da autora e a fundamentação do pedido de diferenças salariais.]
896
+ </chunk_context>
897
+ 16. <chunk_context>
898
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho aborda a urgência do caso e a determinação de que a decisão seja cumprida imediatamente, o que destaca a gravidade da situação enfrentada pelos professores e a necessidade de uma resposta rápida do judiciário.]
899
+ </chunk_context>
900
+ 17. <chunk_context>
901
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Neste segmento, é discutido o despacho que dá ciência ao órgão de representação judicial do Estado, o que é um passo processual importante que demonstra a formalidade e a seriedade do pedido da autora.]
902
+ </chunk_context>
903
+ 18. <chunk_context>
904
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Aqui, é apresentado um comprovante de inscrição e situação cadastral, que pode ser relevante para a identificação e formalização do pedido da autora, refletindo a necessidade de documentação adequada no processo.]
905
+ </chunk_context>
906
+ 19. <chunk_context>
907
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho menciona a situação cadastral da associação dos funcionários públicos, que pode ser relevante para entender a representação legal da autora e a legitimidade do pedido no contexto do mandado de segurança.]
908
+ </chunk_context>
909
+ 20. <chunk_context>
910
+ [4309874] --- [Mandado de Segurança Coletivo] --- [Neste segmento, é discutido o agravo em recurso especial interposto pelo Estado da Bahia, o que ilustra a continuidade do litígio e a resistência do ente público em cumprir a legislação sobre o piso salarial, refletindo a complexidade do caso.]
911
+ </chunk_context>
912
+ </final_output>"""
913
+ ]
914
 
915
 
916
  lista_respostas = ["<final_output>\n1. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Virtualização e Migração de Autos] --- [Este trecho informa sobre a digitalização e migração do processo para o sistema eletrônico do Poder Judiciário da Bahia, destacando a modernização do trâmite processual, o que é relevante para entender a evolução do caso ao longo do tempo.]\n</chunk_context>\n2. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Virtualização e Migração de Autos] --- [Este documento confirma a migração do processo para o sistema eletrônico, assegurando a autenticidade e a preservação dos dados processuais, o que é importante para a integridade do caso e sua tramitação.]\n</chunk_context>\n3. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ação Penal - Procedimento Ordinário] --- [Este trecho apresenta informações sobre a ação penal, incluindo a data de distribuição e os envolvidos, contextualizando o início do processo e a natureza da acusação contra Adriano de Jesus Sales.]\n</chunk_context>\n4. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Denúncia do Ministério Público] --- [Aqui é detalhada a tentativa de furto de um notebook na loja OI, incluindo a descrição do evento e a reação da vítima, Samiri Ferreira Carvalho Alves, que é fundamental para a compreensão do crime e da acusação.]\n</chunk_context>\n5. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Inquérito Policial] --- [Este documento registra a autuação do inquérito policial, detalhando a prisão em flagrante de Adriano e a infração penal, o que é crucial para entender a base legal da acusação e o contexto do crime.]\n</chunk_context>\n6. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Auto de Prisão em Flagrante] --- [Este trecho descreve a ratificação da prisão em flagrante e os direitos do preso, evidenciando o cumprimento das formalidades legais e a proteção dos direitos individuais, aspectos importantes do processo penal.]\n</chunk_context>\n7. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Depoimento do Condutor] --- [Aqui, o depoimento do policial que conduziu a prisão é registrado, fornecendo detalhes sobre a abordagem e a situação no local do crime, o que é essencial para a narrativa do caso.]\n</chunk_context>\n8. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Depoimento da Testemunha] --- [Este documento inclui o depoimento de uma testemunha, que confirma a tentativa de furto e a prisão de Adriano, reforçando a evidência contra o réu e a dinâmica do crime.]\n</chunk_context>\n9. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Exibição e Apreensão] --- [Este trecho documenta a apreensão do notebook, que é uma prova material do crime, e sua entrega à vítima, o que é crucial para a comprovação da tentativa de furto.]\n</chunk_context>\n10. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Declarações] --- [Aqui, a gerente da loja fornece sua versão dos fatos, detalhando como percebeu a tentativa de furto, o que é vital para a construção do caso e a acusação contra Adriano.]\n</chunk_context>\n11. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Auto de Entrega] --- [Este documento registra a entrega do notebook à vítima, evidenciando a recuperação do bem e a conclusão de uma etapa do processo, que é relevante para a resolução do caso.]\n</chunk_context>\n12. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Interrogatório do Conduzido] --- [Neste trecho, Adriano é interrogado e nega a acusação de furto, apresentando sua versão dos fatos, o que é importante para entender sua defesa e a dinâmica do processo.]\n</chunk_context>\n13. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Nota de Culpa] --- [Este documento informa a Adriano sobre a acusação formal e os direitos que lhe assistem, sendo um passo importante na formalização do processo penal e na defesa do réu.]\n</chunk_context>\n14. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ofício ao Juiz] --- [Este ofício comunica ao juiz sobre a prisão em flagrante e a situação de Adriano, destacando a formalidade do processo e a necessidade de acompanhamento judicial.]\n</chunk_context>\n15. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ofício ao Promotor] --- [Aqui, o delegado informa ao promotor sobre a prisão e a situação do réu, o que é essencial para a continuidade do processo e a atuação do Ministério Público.]\n</chunk_context>\n16. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ofício ao Defensor Público] --- [Este ofício é enviado ao defensor público, garantindo que Adriano tenha acesso à defesa legal, um direito fundamental no processo penal.]\n</chunk_context>\n17. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Guia para Identificação Criminal] --- [Este documento solicita a identificação criminal de Adriano, que é um procedimento padrão após a prisão, assegurando a formalização do processo e a verificação de antecedentes.]\n</chunk_context>\n18. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Boletim Individual] --- [Este boletim registra informações detalhadas sobre a prisão de Adriano, incluindo dados pessoais e circunstâncias do crime, sendo uma parte importante do registro processual.]\n</chunk_context>\n19. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Relatório do Inquérito Policial] --- [Este relatório resume os fatos do inquérito, detalhando a tentativa de furto e as evidências coletadas, o que é crucial para a compreensão do caso e a fundamentação da denúncia.]\n</chunk_context>\n20. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Conclusão do Inquérito] --- [Este documento finaliza o inquérito policial, apresentando as provas e a situação do réu, o que é essencial para a transição do caso para a fase judicial e a continuidade do processo.]\n</chunk_context>\n</final_output>",
tests/gerar_relatorio_modelo_usuario/test_contextual_retriever.py CHANGED
@@ -22,8 +22,12 @@ from tests.gerar_relatorio_modelo_usuario.fixture_chunks import (
22
  from tests.gerar_relatorio_modelo_usuario.fixture_lista_respostas_contextuals import (
23
  lista_respostas_contextuals,
24
  lista_respostas,
 
25
  )
26
 
 
 
 
27
  config = RetrievalConfig(
28
  num_chunks=20,
29
  embedding_weight=0.5,
@@ -276,9 +280,10 @@ class TestContextualRetriever:
276
  async def test_get_info_from_validated_chunks(self):
277
  contador = 1
278
  print(len(lista_respostas))
279
- for response in lista_respostas:
280
- if contador == 18:
281
- print(response)
 
282
  matches = validate_many_chunks_in_one_request(response, resposta_errada_ids)
283
 
284
  resultado = self.context_retrieval.get_info_from_validated_chunks(matches)
@@ -298,3 +303,31 @@ class TestContextualRetriever:
298
  # print("\n\ncontador", contador)
299
  # contador += 1
300
  # assert all(len(item) == 3 for item in resultado)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  from tests.gerar_relatorio_modelo_usuario.fixture_lista_respostas_contextuals import (
23
  lista_respostas_contextuals,
24
  lista_respostas,
25
+ lista_respostas_contextuals_cenario_02,
26
  )
27
 
28
+ from unittest.mock import Mock, AsyncMock, patch
29
+
30
+
31
  config = RetrievalConfig(
32
  num_chunks=20,
33
  embedding_weight=0.5,
 
280
  async def test_get_info_from_validated_chunks(self):
281
  contador = 1
282
  print(len(lista_respostas))
283
+ # for response in lista_respostas:
284
+ for response in lista_respostas_contextuals_cenario_02:
285
+ # if contador == 18:
286
+ # print(response)
287
  matches = validate_many_chunks_in_one_request(response, resposta_errada_ids)
288
 
289
  resultado = self.context_retrieval.get_info_from_validated_chunks(matches)
 
303
  # print("\n\ncontador", contador)
304
  # contador += 1
305
  # assert all(len(item) == 3 for item in resultado)
306
+
307
+ @pytest.mark.asyncio
308
+ async def test_valida_retries_automaticos_do_contextual(self, monkeypatch):
309
+ call_count = 0 # Track how many times the function is called
310
+
311
+ # Define the custom side effect
312
+ def custom_side_effect(response, document_ids):
313
+ nonlocal call_count
314
+ print(f"MOCK CALL {call_count+1} RECEIVED")
315
+ if call_count < 2:
316
+ call_count += 1
317
+ print("MOCK RETORNADO FALSE")
318
+ return False # Mocked return value for first two calls
319
+ return validate_many_chunks_in_one_request(response, document_ids) # Call the real function after two mocks
320
+
321
+ monkeypatch.setattr(
322
+ "_utils.gerar_relatorio_modelo_usuario.contextual_retriever.validate_many_chunks_in_one_request",
323
+ custom_side_effect
324
+ )
325
+
326
+ mock_agpt_answer = AsyncMock(return_value=lista_respostas_contextuals_cenario_02[0])
327
+ monkeypatch.setattr("_utils.gerar_relatorio_modelo_usuario.contextual_retriever.agpt_answer", mock_agpt_answer)
328
+
329
+ resultado = await self.context_retrieval.llm_call_uma_lista_de_chunks(
330
+ cenario_01_lista_com_20_chunks, cenario_01_resumo_auxiliar
331
+ )
332
+ assert all(len(item) == 3 for item in resultado)
333
+ assert call_count == 2 # Ensure only the first two calls were mocked