
    h?hU                        d dl mZ d dlZd dlmZ d dlmZ d dlZd dlm	Z	 d dl
mZmZmZmZmZ d dlZd dlZd dlZd dlmZ  e         ej*                  d      Z ej*                  d	      Z ej*                  d
      Z ej*                  d      Z ej4                   ej6                  eeee            Z e	e      ZdedefdZdedefdZ y)    )HTTPExceptionN)Session)func)RecommendationAgent)FeedbackReviewTopicEmotionWordRecommendation)load_dotenvAZURE_OPENAI_API_KEYAZURE_OPENAI_ENDPOINTAZURE_OPENAI_DEPLOYMENTAZURE_OPENAI_API_VERSION)api_keyapi_versionazure_endpointazure_deployment)clientdb	branch_idc           	      $   | j                  t              j                  t        j                  |k(        j	                         }| j                  t        j
                  t        j                  t        j
                              j                  t        j                  |k(        j                  t        j
                        j                         }|D ci c]  \  }}||
 }}}|dkD  rdt        |j                  dd      dz  |j                  dd      dz  z   |j                  dd      dz  z   |j                  dd      dz  z   |z        }nd}i }| j                  t        j                  t        j                  t        j                  t        j                              j                  t        j                  |k(        j                  t        j                  t        j                        j                         }	|	D ]7  \  }
}}|
|vr
ddddd	||
<   ||
   |xx   |rt        ||z  dz        ndz  cc<   9 | j                  t        j                   t        j                  t        j                               j                  t        j                  |k(        j                  t        j                         j                         }|D ci c]  \  }}||
 }}}| j                  t"        j$                  t"        j
                  t        j                  t"        j$                              j                  t"        j                  |k(        j                  t"        j$                  t"        j
                        j                         }i }|D ]7  \  }}}||vr
ddddd	||<   ||   |xx   |rt        ||z  dz        ndz  cc<   9 |j'                         D ci c]  \  }}||rt        ||z  dz        nd }}}||||||d
S c c}}w c c}}w c c}}w )zF
    Generate aggregated feedback insights for a specific branch.
    r   positived   neutral2   negativemixed   )r   r   r   r   )overall_sentiment_scoretopic_sentimentemotion_countwords_sentimentsentiment_breakdowntotal_reviews)queryr   filterr   count	sentimentr   group_byallroundgetr   
topic_namer!   feedback_idr	   emotionsr
   wordsitems)r   r   r%   sentiment_countssentr(   r$   r    r!   
topic_datar.   r)   emotion_dataemotionr"   	word_datar#   wordkeyvaluesentiment_breakdown_percents                        B/var/www/html/hubwallet-dev/src/apps/recommendations/controller.pygenerate_aggregated_feedbackr>       s    HHX&--h.@.@I.MNTTVM xxDJJx'9'9:fX9,-hhx7I7I.J335  ;KK;44;KK q"'!%%j!4s:!%%i3b8:!%%j!4q8: "%%gq1B68 <II# #$ O##

;**+ f[""i/0+:P:PR]RmRm1nororot	  )3 o$
Iu_,78aRS`a*bOJ'
#I.Zg%9NRU8U2Vmnn.o 88$**W%5%56fW)+,XXg6F6F-G  ;GGWe^GMG 

DNNDJJtzz$:fT^^y()((4::t~~*Nssu  O"+ ii&12AZ[$\OD!i(TaE5=3HC2O,Pghh(i ]p\u\u\w#NXcSX]UEM)S01I# # $;*&*:& k LB H#s   P 	P Pc           	         t        | |      }t        j                  |      }g }	 |j                  D ]\  }t	        |j
                  |j                  |j                  |j                  |      }| j                  |       |j                  |       ^ | j                          y# t        $ r}t        dddt        |      d      d}~ww xY w)z_
    Generate recommendations based on aggregated feedback and store them in the database.
    )recommendationtopicseverityrankr   i  FzFailed to store recommendations)statusmessageerror)status_codedetailN)r>   	rec_agentgenerate_recommendationsrecommendationsr   r@   rA   rB   rC   addappendcommit	Exceptionr   str)r   r   aggregated_feedbackrecommendation_responsestored_recommendationsrecnew_recommendationes           r=   !generate_feedback_recommendationsrW   k   s     7r9E (@@ATU
*:: 		>C!/"11iiXX#" FF%&"))*<=		> 			  
<Q
 	

s   A;B! !	C	*CC	)!fastapir   loggingsqlalchemy.ormr   
sqlalchemyr   timesrc.core.recommendation_agentr   src.utils.modelsr   r   r	   r
   r   
instructoropenaiosdotenvr   getenvAPI_KEYENDPOINT
DEPLOYMENTAPI_VERSIONfrom_openaiAzureOpenAIr   rI   intr>   rW        r=   <module>rm      s    !  "   = Q Q   	   "))*
+299,-RYY01
bii23 
 		 2 2 2	! 
  v.	GW G GV&
' &
c &
rl   