File size: 3,381 Bytes
b374298
12d3e1a
 
 
 
 
 
 
 
12b0dd7
1286e81
 
 
cb23311
1286e81
7eb86f7
 
1286e81
095b5f1
1286e81
 
7eb86f7
cb23311
095b5f1
1286e81
 
7eb86f7
1286e81
baeaaa5
12b0dd7
a561ff7
7eb86f7
1286e81
8f3dc39
b374298
095b5f1
 
 
 
 
 
12b0dd7
095b5f1
 
 
cb23311
095b5f1
 
cb23311
095b5f1
1286e81
095b5f1
 
 
 
baeaaa5
095b5f1
1286e81
095b5f1
 
 
 
 
 
 
7eb86f7
 
 
 
095b5f1
7eb86f7
 
 
 
 
 
 
 
b374298
7eb86f7
095b5f1
7eb86f7
 
 
 
 
 
 
 
 
0f952b3
7eb86f7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
from typing import Any, Dict, cast
from setup.easy_imports import (
    Response,
    AsyncAPIView,
    APIView,
    MultiPartParser,
    extend_schema,
)
from datetime import datetime
from _utils.handle_files import handle_pdf_files_from_serializer, remove_pdf_temp_files
from _utils.resumo_completo_cursor import (
    get_llm_summary_answer_by_cursor_complete,
)
from _utils.gerar_relatorio_modelo_usuario.prompts import prompt_auxiliar_inicio
from .serializer import (
    GerarDocumentoComPDFProprioSerializer,
    GerarDocumentoSerializer,
)
import asyncio


class GerarDocumentoView(AsyncAPIView):
    # parser_classes = [MultiPartParser]
    serializer = {}

    @extend_schema(
        request=GerarDocumentoSerializer,
    )
    async def post(self, request):
        print(f"\n\nDATA E HORA DA REQUISIÇÃO: {datetime.now()}")
        print('request.data: ', request.data)
        serializer = GerarDocumentoSerializer(data=request.data)
        if serializer.is_valid(raise_exception=True):
            if not serializer.validated_data:
                raise ValueError("Erro no validated_data")
            
            async def proccess_data_after_response():
                # await asyncio.sleep(0)
                data = cast(Dict[str, Any], serializer.validated_data)
                print("\ndata: ", data)
                self.serializer = data

                # data["prompt_auxiliar"] = (
                #     prompt_auxiliar_inicio + "\n" + data["prompt_auxiliar"]
                # )

                # listaPDFs = handle_pdf_files_from_serializer(data["files"])
                listaPDFs = [l["link_arquivo"] for l in data["files"]]

                print("\n\nlistaPDFs: ", listaPDFs)

                resposta_llm = await get_llm_summary_answer_by_cursor_complete(
                    data, listaPDFs, True
                )
                print("\n\nresposta_llm: ", resposta_llm)

                # remove_pdf_temp_files(listaPDFs)

                # print("PRÓXIMA LINHA ENVIA A RESPOSTA A QUEM FEZ A REQUISIÇÃO")
            
            # asyncio.create_task(proccess_data_after_response())
            loop = asyncio.get_running_loop()
            loop.run_in_executor(None, lambda: asyncio.run(proccess_data_after_response()))
            
            return Response({"resposta": "Requisição está sendo processada em segundo plano"})


class GerarDocumentoComPDFProprioView(AsyncAPIView):
    parser_classes = [MultiPartParser]
    serializer = {}

    @extend_schema(
        request=GerarDocumentoComPDFProprioSerializer,
    )
    async def post(self, request):
        print(f"\n\nDATA E HORA DA REQUISIÇÃO: {datetime.now()}")
        serializer = GerarDocumentoComPDFProprioSerializer(data=request.data)
        if serializer.is_valid(raise_exception=True):
            data = cast(Dict[str, Any], serializer.validated_data)
            print("\n\ndata: ", data)
            self.serializer = data

            listaPDFs = handle_pdf_files_from_serializer(data["files"])

            resposta_llm = await get_llm_summary_answer_by_cursor_complete(
                data, listaPDFs
            )
            print("\n\nresposta_llm: ", resposta_llm)

            remove_pdf_temp_files(listaPDFs)
            print("PRÓXIMA LINHA ENVIA A RESPOSTA A QUEM FEZ A REQUISIÇÃO")
            return Response({"resposta": resposta_llm})