
    i,              	           d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
 d dlmZ e G d d             Ze G d d             Z G d	 d
      ZdadedefdZddedededefdZy)    N)datetime)ListDictSetTuple)	dataclassc                   F    e Zd ZU eed<   ee   ed<   ee   ed<   dZeed<   y)GifEmotionPatternemotionkeywords	responsesTenabledN__name__
__module____qualname__str__annotations__r   r   bool     K/home/kdj-ubuntu1/mlink_AI_Server/mlink-backend/./src/routes/gif_manager.pyr
   r
   
   s%    L3iCyGTr   r
   c                   F    e Zd ZU eed<   ee   ed<   ee   ed<   dZeed<   y)GifSituationPattern	situationr   r   Tr   Nr   r   r   r   r   r      s%    N3iCyGTr   r   c            	       J    e Zd ZddefdZd ZdedefdZddeded	edefd
Zy)GifResponseManagerNconfig_filec                 V    g | _         g | _        |xs d| _        | j                          y )Nz./config/gif_patterns.json)emotion_patternssituation_patternsr   _load_default_patterns)selfr   s     r   __init__zGifResponseManager.__init__   s,    9;=?&F*F##%r   c                 Z   t        dg dg dd      t        dg dg dd      t        dg d	g d
d      t        dg dg dd      t        dg dg dd      t        dg dg dd      t        dg dg dd      t        dg dg dd      t        dg dg dd      t        dg dg dd      g
}t        d g d!g d"d      t        d#g d$g d%d      t        d&g d'g d(d      t        d)g d*g d+d      t        d,g d-g d.d      t        d/g d0g d1d      t        d2g d3g d4d      t        d5g d6g d7d      t        d8g d9g d:d      g	}| j                  j                  |       | j                  j                  |       t        j                  d;t        |       d<t        |       d=       y )>Nhappy)r&   joysmilelaughcheerexcitedcelebrationparty)u"   정말 즐거워 보이시네요! u"   기분이 좋으신 것 같아요!u   웃음이 전염되네요! u$   행복한 에너지가 느껴져요!Tsad)r.   crytear	depresseddownupsetdisappointed)u7   괜찮으세요? 기분이 안 좋으신가 봐요 😢u   힘든 일이 있으셨나요?u   조금만 더 힘내세요!u?   제가 도움이 될 수 있다면 언제든 말씀해주세요angry)r5   madfuriousrageannoyed	irritated)u9   화가 나신 것 같아요. 차분히 생각해보세요u   무슨 일이 있으셨나요?u,   진정하시고 천천히 말씀해주세요u0   제가 도와드릴 수 있는 일이 있나요?	surprised)r;   shockwowamazing
incredibleunbelievable)u2   와! 정말 놀라운 일이 있으셨나 봐요! u   놀라셨을 것 같아요!u   어떤 일이 일어났나요?u   정말 신기한 일이네요!love)rA   heartromantickisshug	affectioncute)u,   사랑스러운 마음이 전해져요! 💕u    정말 따뜻한 마음이네요u!   사랑이 가득한 것 같아요u#   아름다운 마음이 느껴져요funny)rH   lolhahajokecomedy	hilarioushumor)u   정말 재미있네요! u   웃음이 터져나와요!u!   유머 감각이 좋으시네요!u!   기분이 좋아지는 GIF네요!confused)rO   whathuhquestionthinkingpuzzle)u!   궁금한 것이 있으시군요?u    혼란스러우신 것 같아요u,   무엇이 궁금하신지 말씀해주세요u3   제가 설명해드릴 수 있는 것이 있나요?tired)rU   sleepy	exhaustedboredyawnrest)u&   피곤하신가 봐요. 푹 쉬세요!u   힘든 하루였나요?u    충분한 휴식을 취하세요u-   무리하지 마시고 조금 쉬어가세요celebrating)r,   congratulationssuccessvictorywinachievement)u   축하드려요! 🎉u)   정말 기쁜 일이 있으셨나 봐요!u   성공을 축하합니다!u   훌륭한 성과네요!working)workofficecomputermeetingbusinessprofessional)u$   열심히 일하고 계시는군요!u#   업무에 집중하고 계시네요u   일이 잘 되고 있나요?u@   업무 관련해서 도움이 필요하시면 말씀해주세요greeting)hellohiheyzgood morningzgood evening)u!   안녕하세요! 반갑습니다!u    인사해주셔서 감사해요!u   좋은 하루 보내세요!farewell)byegoodbyezsee yourl   )u   안녕히 가세요!u   좋은 하루 되세요!u   다음에 또 만나요!	agreement)yesagreeokaysure
definitely
absolutely)u   맞습니다!u   동감해요!u   정확한 말씀이에요!disagreement)nodisagreenopenevernot)u.   그렇군요, 다른 의견이 있으시군요u   이해합니다u    다른 관점이 있으시네요rR   )rP   howwhywhenwherewho)u!   궁금한 것이 있으시군요!u   질문해주셔서 감사해요u   무엇이든 물어보세요!thanks)thankr   
appreciategrateful)u   천만에요!u!   도움이 되었다니 기뻐요!u   별말씀을요!apology)sorry	apologizeexcuseforgive)u   괜찮아요!u   전혀 문제없어요u   걱정하지 마세요media)kbskbs2sbsmbcjtbctvnewsanchorstudiologo	broadcastchannel)u)   방송 스튜디오 분위기네요! 🎬u#   뉴스/방송 관련 GIF 같아요.u:   공식적인 느낌이 나네요—어떤 소식인가요?encouragement)z	good luckzcheer upzyou can do itfighting)u
   화이팅!u   힘내세요!u   응원합니다!u(   기본 GIF 패턴 로드 완료: 감정 u   개, 상황 u   개)r
   r   r    extendr!   logginginfolen)r#   r    r!   s      r   r"   z)GifResponseManager._load_default_patterns   s^   g'u x
  e%i l
  g'b e
  k+q t
  f&g j
  g'g j
  j*g j
  g'` c
  m-{ ~
  i)n q
 o=
@  
,b e 	
  
,U X 	
  -i l 	
  0Z ] 	
  
,Z ] 	
  *W Z 	
  	+V Y 	
  w
 	  1g j 	]3
j 	$$%56&&'9:?DT@U?VVbcfgyczb{{~  	Ar   	gif_titlereturnc                    |j                         g }| j                  D ]I  }|j                  st        fd|j                  D              s/|j                  |j                         K g }| j                  D ]I  }|j                  st        fd|j                  D              s/|j                  |j                         K |||r|d   nd|r|d   dS ddS )Nc              3   &   K   | ]  }|v  
 y wNr   .0keywordtitle_lowers     r   	<genexpr>z9GifResponseManager.analyze_gif_content.<locals>.<genexpr>        J9Ig7k)9I   c              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r   z9GifResponseManager.analyze_gif_content.<locals>.<genexpr>   r   r   r   neutralgeneralemotions
situationsprimary_emotionprimary_situation)	lowerr    r   anyr   appendr   r!   r   )r#   r   detected_emotionspatterndetected_situationsr   s        @r   analyze_gif_contentz&GifResponseManager.analyze_gif_content   s    oo',,G??J9I9IJJ!((9	 - !..G??J9I9IJJ#**7+<+<=	 / *-7H03i;N!4Q!7	
 	
 U^	
 	
r   analysisconversation_contextc                 h  
 |j                  dd      }|j                  dd      }g }| j                  D ];  }|j                  s|j                  |k(  s |j	                  |j
                          n | j                  D ];  }|j                  s|j                  |k(  s |j	                  |j
                          n |r||j                         
t        
fddD              r|ddgz  }t        
fd	d
D              r|ddgz  }t        
fddD              r|ddgz  }t        
fddD              r|ddgz  }|sg d}t        j                  |      }d}	|j                  d      r|	ddj                  |d          dz  }	|j                  d      r|	ddj                  |d          dz  }	||	z   S )Nr   r   r   r   c              3   &   K   | ]  }|v  
 y wr   r   r   wordctxs     r   r   zBGifResponseManager.generate_contextual_response.<locals>.<genexpr>        T+S443;+Sr   )u   힘들u   피곤u   지쳤u   고단u2   힘든 하루에도 웃음을 찾으셨네요 😊u,   피곤할 때는 이런 GIF가 딱이네요!c              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r   zBGifResponseManager.generate_contextual_response.<locals>.<genexpr>   r   r   )u   축하u   성공u   합격u   승진u+   좋은 소식에 딱 맞는 GIF네요! 🎉u$   축하의 마음이 전해집니다!c              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r   zBGifResponseManager.generate_contextual_response.<locals>.<genexpr>   r   r   )u   슬퍼u   우울u   외로u   눈물u)   마음을 위로하는 GIF 같아요 💙u-   조금은 기분이 나아지셨길 바라요c              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r   zBGifResponseManager.generate_contextual_response.<locals>.<genexpr>   s     ^+]443;+]r   )u   재밌u   웃겨u   폭소u   ㅋㅋu   ㅎㅎu0   같이 웃으니 기분이 더 좋아져요 😆u   정말 빵 터지는 GIF네요!)u   흥미로운 GIF네요!u   재미있는 선택이에요!u(   어떤 의미로 보내주신 건가요?u,   이 GIF에 대해 더 이야기해볼까요? r   z (z, u   한 감정이 느껴져요)r   u    상황인 것 같아요))getr    r   r   r   r   r!   r   r   r   randomchoicejoin)r#   r   r   r   r   r   r   r   selectedcontext_infor   s             @r   generate_contextual_responsez/GifResponseManager.generate_contextual_response   s   ",,'8)D$LL)<iH!	 ,,G7??o#E  !2!23 - ..G7#4#48I#I  !2!23 /  &,,.CT+STTR  UC  D  D	T+STTKMstt	T+STTIKz{{	^+]^^PRstt	 I ==+ <<
#b8J+?!@ AA\]]L<<%b8L+A!B CC\]]L,&&r   r   r   )	r   r   r   r   r$   r"   r   r   r   r   r   r   r   r      sL    &C &wAr
S 
T 
00'T 0'c 0'ad 0'nq 0'r   r   r   r   c                     t         
t               a 	 t         j                  | xs d      S # t        $ r t	        j
                  d       g g dddcY S w xY w)Nr   z [GIF] analyze_gif_content failedr   r   r   )_gif_manager_instancer   r   	Exceptionr   	exception)r   s    r   r   r      s\    $ 2 4p$88bII p<=bYenoops   + %AAr   r   c                 Z    t         
t               a t         j                  | ||xs d      S )Nr   r   r   r   )r   r   r   r   s      r   r   r      s7    $ 2 4 ==17R >  r   r   )osjsonrer   r   r   typingr   r   r   r   dataclassesr   r
   r   r   r   r   r   r   r   r   r   <module>r      s    	  	    ) ) !
     H' H'V  p3 p4 p4 C WZ dg r   