
    Bi,              	           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dS )    N)datetime)ListDictSetTuple)	dataclassc                   T    e Zd ZU eed<   ee         ed<   ee         ed<   dZeed<   dS )GifEmotionPatternemotionkeywords	responsesTenabledN__name__
__module____qualname__str__annotations__r   r   bool     O/var/www/html/web/mlink/mlink_AI_Server/mlink-backend/src/routes/gif_manager.pyr
   r
   
   sK         LLL3iCyGTr   r
   c                   T    e Zd ZU eed<   ee         ed<   ee         ed<   dZeed<   dS )GifSituationPattern	situationr   r   Tr   Nr   r   r   r   r   r      sK         NNN3iCyGTr   r   c            	       L    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dS )GifResponseManagerNconfig_filec                 \    g | _         g | _        |pd| _        |                                  d S )Nz./config/gif_patterns.json)emotion_patternssituation_patternsr   _load_default_patterns)selfr   s     r   __init__zGifResponseManager.__init__   s8    9;=?&F*F##%%%%%r   c                    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                            |           t          j        d;t          |           d<t          |           d=           d S )>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   s3   g'u'u'u x x x
   e%i%i%i l l l
   g'b'b'b e e e
   k+q+q+q t t t
   f&g&g&g j j j
   g'g'g'g j j j
   j*g*g*g j j j
   g'`'`'` c c c
   m-{-{-{ ~ ~ ~
   i)n)n)n q q q
  o=
@  
,b,b,b e e e 	 
  
,U,U,U X X X 	 
  -i-i-i l l l 	 
  0Z0Z0Z ] ] ] 	 
  
,Z,Z,Z ] ] ] 	 
  *W*W*W Z Z Z 	 
  	+V+V+V Y Y Y 	 
  www  
 	 	  1g1g1g j j j 	 ]3
j 	$$%5666&&'9:::DT@U@Ucfgyczcz  	A  	A  	A  	A  	Ar   	gif_titlereturnc                    |                                 g }| j        D ]D}|j        s
t          fd|j        D                       r|                    |j                   Eg }| j        D ]D}|j        s
t          fd|j        D                       r|                    |j                   E|||r|d         nd|r|d         nddS )Nc              3       K   | ]}|v V  	d S Nr   .0keywordtitle_lowers     r   	<genexpr>z9GifResponseManager.analyze_gif_content.<locals>.<genexpr>   (      JJg7k)JJJJJJr   c              3       K   | ]}|v V  	d S 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JJJ9IJJJJJ :!((999 . 	> 	>G? JJJJ9IJJJJJ >#**7+<=== *-7HW033i;N!]!4Q!7!7T]	
 
 	
r    analysisconversation_contextc                   
 |                     dd          }|                     dd          }g }| j        D ]0}|j        r'|j        |k    r|                    |j                    n1| j        D ]0}|j        r'|j        |k    r|                    |j                    n1|r|                                
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}	|                     d          r"|	dd                    |d                    dz  }	|                     d          r"|	dd                    |d                    dz  }	||	z   S )Nr   r   r   r   c              3       K   | ]}|v V  	d S r   r   r   wordctxs     r   r   zBGifResponseManager.generate_contextual_response.<locals>.<genexpr>   '      TT443;TTTTTTr   )u   힘들u   피곤u   지쳤u   고단u2   힘든 하루에도 웃음을 찾으셨네요 😊u,   피곤할 때는 이런 GIF가 딱이네요!c              3       K   | ]}|v V  	d S 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 V  	d S 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 V  	d S 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   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D$LL)<iHH!	 , 	 	G 7?o#E#E  !2333 . 	 	G 7#48I#I#I  !2333   		u&,,..CTTTT+STTTTT DR  UC  D  D	TTTT+STTTTT uKMstt	TTTT+STTTTT |IKz{{	^^^^+]^^^^^ uPRstt	  	  I =++ <<
## 	^]8J+?!@!@]]]]L<<%% 	^]8L+A!B!B]]]]L,&&r   r   r   )	r   r   r   r   r$   r"   r   r   r   r   r   r   r   r      s        & &C & & & &wA wA wAr
S 
T 
 
 
 
00' 0'T 0'c 0'ad 0'nq 0' 0' 0' 0' 0' 0'r   r   r   r   c                     t           t                      a 	 t                               | p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 4p$88bIII p p p<===bYenooooops   3 %AAr   r   r   c                 j    t           t                      a t                               | ||pd          S )Nr   r   r   r   )r   r   r   r   s      r   r   r      s?    $ 2 4 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' H' H' H' H' H' H'V  p3 p4 p p p p 4 C WZ dg      r   