
    NkTg(!                     j   d dl Z d dlmZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ  e       Zde _        ej                  d       ee	      fd	       Zej!                  d
      defd       Zej!                  d       ee	      fdefd       Zej!                  d       ee	      fdedefd       Zy)    N)	APIRouterDependsHTTPException)Request)obtener_facturacion_por_ano)get_db)Sessionz_sk-0WDUP3_08IjqC0Uaxw973j6lXPKBVqTF_63aMqIgQrT3BlbkFJUZp-YnzUwmuszo-xSK2FsHhMwmUXwn7wd1q7Bkk08Az/analizar_facturacion_llmc                     	 t        |       }d| d}t        j                  j                  ddddd|dgdd	
      }|j                  d   j
                  d   }d|iS # t        $ r}t        dd|       d }~ww xY w)Nu>   
        Dado el siguiente conjunto de datos de facturación: u   

        Por favor, responde las siguientes preguntas:
        1. ¿Cuál fue el mes con mayor facturación y cuánto se facturó?
        2. ¿Cuál es el promedio de facturación mensual?
        3. Genera un informe comparativo de los meses.
        gpt-4systemu4   Eres un asistente que analiza datos de facturación.rolecontentuser,  ffffff?modelmessages
max_tokenstemperaturer   r   	respuesta  %Error al procesar los datos con LLM: status_codedetail)r   openaiChatCompletioncreatechoicesmessage	Exceptionr   )dbfacturacion_datapromptresponser   es         7C:\xampp\htdocs\llm_bihealth\app\routers\facturacion.pyanalizar_facturacion_llmr*      s    a6r:>>N=O P	 ((//!.deF3  0 
 $$Q'//	:	 Y'' a6[\][^4_``as   AA 	A<'A77A<z/enviar_promptrequestc                 X  K   	 | j                          d {   }|j                  d      }|st        dd      t        j                  j                  ddddd	|dgd
d      }|j                  d   j                  d   }d|iS 7 o# t        $ r}t        dd|       d }~ww xY ww)Nr&     z El campo 'prompt' es obligatorior   r   r   zBEres un asistente avanzado que responde preguntas y analiza datos.r   r   r   r   r   r   r   r   r   zError al procesar el prompt: )	jsongetr   r   r   r    r!   r"   r#   )r+   datar&   r'   r   r(   s         r)   enviar_promptr1   0   s     Y\\^#(# C8Z[[ ((//!.rsF3  0 
 $$Q'//	:	 Y'') $,  Y6STUSV4WXXYs9   B*B	 BA.B	 B*B	 		B'B""B''B*z/analizar_facturacion_kpi2c                   K   	 | j                          d {   }|j                  d      }|st        dd      t        |      }dj	                  |D cg c]"  }|j                         D ]  \  }}d| d|  $ c}}}      }d| d	| d
}	t        j                  j                  ddddd|	dgdd      }
|
j                  d   j                  d   }d|iS 7 c c}}}w # t        $ r}t        dd|       d }~ww xY ww)Ninputr-   El campo 'input' es obligatorior   
zMes: u   , Facturación: uA   
        Basado en los siguientes datos de facturación:
        z


        um   

        Proporciona una respuesta detallada considerando los datos de facturación proporcionados.
        r   r   <   Eres un asistente experto en análisis de datos financieros.r   r   r   r   r   r   r   r   r   )r.   r/   r   r   joinitemsr   r   r    r!   r"   r#   )r+   r$   r0   
user_inputr%   registromestotaldatos_facturacionr&   r'   r   r(   s                r)   analizar_facturacion_kpir>   M   sQ    )a\\^#XXg&
C8YZZ 7r: !IIBRvvhemeseseuvWaWZ\auSE)%1v1v

		 		 		 ((//!.lmF3  0 
 $$Q'//	:	Y''I $ w6  a6[\][^4_``asL   DC% CA C% 'C?AC% DC% C% %	D.C>>DDz/analizar_kpir$   c           
         K   	 | j                          d {   }|j                  d      }|j                  dg       }|st        dd      t        |      dk(  rd}|dd	S |d
k(  r`t	        |      }|sddd	S dj                  |D cg c]  }d|d    d|d     c}      }|j                  dd| d       d| d}||ddS t        d |D              rdddg}	|	j                  |       |	j                  d|d       t        j                  j                  d|	dd      }
|
j                  d   j                  d   }|j                  d |d       ||ddS d!}|dd	S 7 Nc c}w # t        $ r}t        dd"|       d }~ww xY ww)#Nr3   	historialr-   r4   r   r   u   
            Bienvenido al asistente de análisis. Por favor, selecciona una opción:
            1. Facturación.
            2. Cirugía.
            3. Consulta Externa.
            Escribe el número de la opción que deseas elegir.
            T)r   es_menu1u(   No se encontraron datos de facturación.Fr5   zFecha: fechaz, Total Facturado: sumr   u.   Los siguientes son los datos de facturación:
r   uo   
            Los datos de facturación han sido cargados. A continuación se muestran los totales:
            u{   
            
            Ahora puedes hacer preguntas específicas sobre estos datos. ¿Cómo puedo ayudarte?
            )r   r@   rA   c              3   V   K   | ]!  }|d    dk(  s|d   j                  d       # yw)r   r   r   u,   Los siguientes son los datos de facturaciónN)
startswith).0hs     r)   	<genexpr>zanalizar_kpi.<locals>.<genexpr>   s>       D[\mnoumv  {C  nCq|&&'UV  Ds   ))r6   r   r   r   r   r   r   	assistantu   
        Opción no válida. Por favor, selecciona una opción del menú:
        1. Facturación.
        2. Cirugía.
        3. Consulta Externa.
        z Error al procesar la solicitud: )r.   r/   r   lenr   r7   appendanyextendr   r   r    r!   r"   r#   )r+   r$   r0   r9   r@   r   r%   r:   r=   mensajesr'   respuesta_gptr(   s                r)   analizar_kpirQ   z   s    Q\\\^#XXg&
HH["-	C8YZZ y>QI "+t<< :2>#%O\abb !%		cstW_78G,--@%@QRt!
  LM^L_`   I "+uUU   D`i  D  D ".lmH OOI&OOV
CD ,,33!	 4 H %,,Q/77	BM kmLM "/YSXYY	 '488Y $6 uf  \6VWXVY4Z[[\s|   FE- E%A
E- "F#E- 9F:E- 	E()E- FBE- FE- $F%E- (E- -	F6FFF)r   fastapir   r   r   r   app.queries.facturacion_queriesr   app.database.sessionr   sqlalchemy.ormr	   routerapi_keyr/   r*   postr1   r>   rQ        r)   <module>r[      s     5 5  G ' "	 s'( ' a )aB Y Y Y8 )*8? *aG *a +*aX _7>v R\ R\W R\ R\rZ   