§
    Omði’  ã                   ó&  — 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	Z	d dl
Z
d dlZ ede¦  «        Z ed¬¦  «        Z ej        d¬	¦  «        Ze                     d
¬¦  «        Zd„ Zdd„Zd„ Ze                     d¦  «        d„ ¦   «         Zd„ ZdS )é    N)Ú	BlueprintÚrender_templateÚrequest)Úemit)ÚGroqÚchatÚ8gsk_xzyV1rAPPzB7LV3QqVkTWGdyb3FYdlb45LIxlQSJN9F4hS6cnzN9)Úapi_keyz./chroma_db)ÚpathÚcare_knowledge)Únamec                  óš  — t          j        ¦   «         } 	 |                      ¦   «         5 }d}|                     |¦  «         |                     ¦   «         cd d d ¦  «         |                      ¦   «          S # 1 swxY w Y   n#  Y |                      ¦   «          d S xY w	 |                      ¦   «          d S # |                      ¦   «          w xY w)NzSSELECT device_name, last_activity, last_seen FROM radar_devices WHERE device_id = 1)ÚdatabaseÚget_db_connectionÚcursorÚexecuteÚfetchoneÚclose)Úconnr   Úsqls      ú./home/mmwave/public_html/mmwave/routes/chat.pyÚget_db_snapshotr      sõ   € ÝÔ%Ñ'Ô'€DðØ�[Š[‰]Œ]ð 	%˜fØgˆCØ�NŠN˜3ÑÔÐØ—?’?Ñ$Ô$ð	%ð 	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð
 �ZŠZ‰\Œ\ˆ\ˆ\ð	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%øð �4Ø�ZŠZ‰\Œ\ˆ\ˆ\ˆ\øøøð	%ð
 �ZŠZ‰\Œ\ˆ\ˆ\ˆ\øˆT�ZŠZ‰\Œ\ˆ\ˆ\øøøsF   •B ©+A5ÁB Á5A9Á9B Á<A9Á=B Â B4 ÂBÂB4 ÂB4 Â4C
é   c           
      ó0  — t          j        ¦   «         }d}	 |                     ¦   «         5 }d}|                     || f¦  «         |                     ¦   «         }|rn|d| › d�z  }|D ]a}|d         dk    rS|d         dz  }|dz  }|dz  }	|dk    r|› d|	› d	�n|› d	�}
|d
         dk    r|d
         nd}|d|d         › d|› d|
› d�z  }Œbn	|d| › d�z  }d}|                     || f¦  «         |                     ¦   «         }|r&|d| › d�z  }|D ]}|d|d         › d|d         › d�z  }Œd d d ¦  «         n# 1 swxY w Y   n)# t
          $ r}dt          |¦  «        › �}Y d }~nd }~ww xY w|                     ¦   «          n# |                     ¦   «          w xY w|S )NÚ aÉ  
                SELECT 
                    d, 
                    activity_type, 
                    SUM(duration_sec) as total_secs
                FROM (
                    SELECT 
                        DATE(record_time) as d, 
                        activity_type,
                        TIMESTAMPDIFF(SECOND, record_time, 
                            IFNULL(LEAD(record_time) OVER (PARTITION BY device_id ORDER BY record_time), NOW())
                        ) as duration_sec
                    FROM activity_logs 
                    WHERE record_time >= DATE_SUB(NOW(), INTERVAL %s DAY)
                ) as t
                GROUP BY d, activity_type
                ORDER BY d DESC
            u   --- é�ŽåŽ» u0    å¤©è©³ç´°è¡Œç‚ºæ—¥èªŒ (ç”¨æ–¼ä½œæ�¯åˆ†æž�) ---
Ú
total_secsr   é<   u   å°�æ™‚u   åˆ†é�˜Úactivity_typeÚnullu   ä¸�åœ¨(å¤–å‡º/æ­»è§’)u   æ—¥æœŸ:Údu	   , å‹•ä½œ:u	   , ç´¯è¨ˆ:Ú
u    å¤©æŸ¥ç„¡æ•¸æ“š ---
zË
                SELECT event_type, event_time 
                FROM event_logs 
                WHERE event_time >= DATE_SUB(NOW(), INTERVAL %s DAY)
                ORDER BY event_time DESC
            u   
--- é�ŽåŽ» u    å¤©ç·Šæ€¥äº‹ä»¶ç´€éŒ„ ---
u   æ™‚é–“:Ú
event_timeu	   , é¡žåž‹:Ú
event_typeu   åˆ†æž�å¤±æ•—: )r   r   r   r   ÚfetchallÚ	ExceptionÚstrr   )Údaysr   Údata_strr   Úsql_actÚrowsÚrÚminsÚhoursÚrem_minsÚtime_strÚact_displayÚsql_evtÚevtsÚes                  r   Úget_comprehensive_datar4      s›  € ÝÔ%Ñ'Ô'€DØ€Hð4Ø�[Š[‰]Œ]ð 0	X˜fðˆGð$ �NŠN˜7 T GÑ,Ô,Ð,Ø—?’?Ñ$Ô$ˆDàð GØÐa¨$ÐaÐaÐaÑa�Øð bð b�AØ˜”¨Ò*Ð*Ø  œ°"Ñ4˜Ø $¨¡
˜Ø#'¨"¡9˜ØGLÈqÂyÀy eÐ#CÐ#C°8Ð#CÐ#CÐ#CÐ#CÐY]ÐVeÐVeÐVe˜à<=¸oÔ<NÐRXÒ<XÐ<X a¨Ô&8Ð&8Ð^u˜Ø Ð$a¨a°¬fÐ$aÐ$a¸{Ð$aÐ$aÐU]Ð$aÐ$aÐ$aÑa˜øðbð ÐF¨$ÐFÐFÐFÑF�ðˆGð �NŠN˜7 T GÑ,Ô,Ð,Ø—?’?Ñ$Ô$ˆDØð XØÐN¨DÐNÐNÐNÑN�Øð Xð X�AØÐ W¨!¨L¬/Ð WÐ WÀAÀlÄOÐ WÐ WÐ WÑW�H�Hða0	Xð 0	Xð 0	Xñ 0	Xô 0	Xð 0	Xð 0	Xð 0	Xð 0	Xð 0	Xð 0	Xøøøð 0	Xð 0	Xð 0	Xð 0	Xøøõb ð -ð -ð -Ø,¥C¨¡F¤FÐ,Ð,ˆˆˆˆˆˆøøøøð-øøøà�ZŠZ‰\Œ\ˆ\ˆ\øˆT�ZŠZ‰\Œ\ˆ\ˆ\øøøØ€OsS   —D? «C<D3Ä'D? Ä3D7Ä7D? Ä:D7Ä;D? Ä>E= Ä?
E%Å	E ÅE= Å E%Å%E= Å=Fc                 ó"  — d}t          j        d| ¦  «        }|r\dddddddd	d
ddœ
}|                     d¦  «        }|                     ¦   «         rt	          |¦  «        n|                     |d¦  «        }nd| v rd}nd| v rd}t          ¦   «         }t          |¦  «        }	 t           	                    | gd¬¦  «        }|d         r|d         d         d         nd}n	#  d}Y nxY w|r|d         nd}	|rt          |d         ¦  «        nd}
d|	› d|
› d|› d|› �}	 t          j        j                             ddddœdd|› �dœd | dœgd!d"¬#¦  «        }|j        d         j        j        S # t$          $ r}d$t          |¦  «        › �cY d }~S d }~ww xY w)%Nr   u,   ([ä¸€äºŒä¸‰å››äº”å…­ä¸ƒå…«ä¹�å��0-9]+)\s*å¤©é   é   é   é   é   é   é   é	   é
   )
u   ä¸€u   äºŒu   ä¸‰u   å››u   äº”u   å…­u   ä¸ƒu   å…«u   ä¹�u   å��u   é€±u   æ˜¨)Úquery_textsÚ	n_resultsÚ	documentsr   u   ç„¡Úlast_activityu   æœªçŸ¥Ú	last_seenu   [å�³æ™‚äº‹å¯¦]
ç�¾åœ¨å‹•ä½œ: u   
æœ€å¾Œæ›´æ–°æ™‚é–“: u   

[è³‡æ–™åº«ç´€éŒ„è³‡æ–™]
u   

[å°ˆæ¥­å�ƒè€ƒ]
zllama-3.1-8b-instantÚsystemu  ä½ æ˜¯ä¸€ä½�ç²¾ç…‰ã€�å°ˆæ¥­çš„å±…å®¶ç…§è­·åŠ©ç�†ã€‚è«‹é�µå¾ªä»¥ä¸‹å›žè©±é‚�è¼¯ï¼š
                    1. è‹¥ä½¿ç”¨è€…è©¢å•�ã€Œç›®å‰�ç‹€æ…‹ã€�ï¼Œåƒ…å›žç­”ç•¶å‰�å‹•ä½œèˆ‡æ›´æ–°æ™‚é–“ã€‚é™¤é�žæ��å�Šã€Œçµ±è¨ˆã€�æˆ–ã€Œåˆ†æž�ã€�ï¼Œå�¦å‰‡åš´ç¦�åˆ—å‡ºæ­·å�²é•·åº¦ã€‚
                    2. å‹•ä½œå®šç¾©ï¼š
                       - 'lay': è‡¥åºŠç�¡çœ ã€‚
                       - 'null': ä¸�åœ¨ä½�ï¼ˆä»£è¡¨å¤–å‡ºã€�åœ¨é›·é�”æ­»è§’æˆ–æµ´å®¤ï¼‰ï¼Œä¸�åˆ—å…¥å®¤å…§æ´»å‹•ã€‚
                       - 'walk', 'stand', 'sit': å®¤å…§æ´»å‹•ã€‚
                       - 'fall': è·Œå€’æ„�å¤–ï¼�æ˜¯åš´é‡�äº‹ä»¶ï¼Œçµ•å°�ä¸�æ˜¯ä¼‘æ�¯æˆ–æ´»å‹•ï¼Œå¿…é ˆåš´è‚…æ��é†’ã€‚
                    3. æ•¸æ“šæº–å‰‡ï¼šåƒ…ä½¿ç”¨æ��ä¾›çš„ã€Œç´¯è¨ˆæ™‚é–“ã€�æ•¸å€¼ï¼Œåš´ç¦�è…¦è£œã€‚è¨ˆç®—ç¸½æ™‚é•·æ™‚ï¼Œè‹¥æœ‰ 'null' æ™‚é–“ï¼Œè«‹ä¸»å‹•èªªæ˜Žã€Œæœ‰ä¸€æ®µæ™‚é–“ä¸�åœ¨ç›£æ¸¬ç¯„åœ�å…§ã€�ã€‚
                    4. ä½œæ�¯å»ºè­°ï¼šæ‡‰è€ƒæ…® 'null' æ™‚é–“ä»£è¡¨å¤–å‡ºã€‚è‹¥æ´»å‹•æ™‚é–“å°‘æ˜¯å› å¤–å‡ºå°Žè‡´ï¼Œå±¬æ­£å¸¸ç�¾è±¡ã€‚
                    5. èªžæ°£ï¼šå°ˆæ¥­ã€�å†·é�œã€�ç°¡æ½”ã€‚)ÚroleÚcontentÚ	assistantu   ç•¶å‰�ç³»çµ± Contextï¼š
Úusergš™™™™™¹?iX  )ÚmodelÚmessagesÚtemperatureÚ
max_tokensu   AI åŠ©ç�†é€£ç·šç•°å¸¸: )ÚreÚsearchÚgroupÚisdigitÚintÚgetr   r4   Ú
collectionÚqueryr&   Úclientr   ÚcompletionsÚcreateÚchoicesÚmessagerF   r%   )Ú
user_inputr'   Ú	day_matchÚd_mapÚd_valÚsnapshotÚhistory_infoÚresultsÚrelevant_docÚnow_actÚnow_timeÚcontextÚ
completionr3   s                 r   Úget_llm_responserf   S   sC  € à€DÝ”	ÐIÈ:ÑVÔV€IØð 'Ø˜q q¨q°q¸qÀqÈqÐWXÐ_aÐbÐbˆØ—’ Ñ"Ô"ˆØ"Ÿ]š]™_œ_ÐE�s�5‰zŒzˆz°%·)²)¸EÀ1Ñ2EÔ2EˆˆØ	�*Ð	Ð	 Q˜d˜dØ	�*Ð	Ð	 Q˜dåÑ Ô €HÝ)¨$Ñ/Ô/€Lð!Ý×"Ò"°
¨|ÀqÐ"ÑIÔIˆØ5<¸[Ô5IÐT�w˜{Ô+¨AÔ.¨qÔ1Ð1ÈuˆˆøØ ˜5ˆLˆLˆLøøøà+3ÐAˆh�Ô'Ð'¸€GØ-5ÐC�s�8˜KÔ(Ñ)Ô)Ð)¸8€Hð f¨wð  fð  fÈhð  fð  fð  vBð  fð  fð  Xdð  fð  f€Gð2Ý”[Ô,×3Ò3Ø(ð %ð	 ?ðð ð %Ð1VÈWÐ1VÐ1VÐWÐWØ¨JÐ7Ð7ðð" Øð) 4ñ 
ô 
ˆ
ð, Ô! !Ô$Ô,Ô4Ð4øÝð 2ð 2ð 2Ø1­¨Q©¬Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1øøøøð2øøøs+   Â!;C ÃC#ÄAE( Å(
FÅ2F	ÆFÆ	Fz/chatc                  ó    — t          d¦  «        S )Nz	chat.html)r   © ó    r   Ú	chat_pagerj   ‡   s   € å˜;Ñ'Ô'Ð'ri   c                 óB   — |                       d¦  «        d„ ¦   «         }d S )NÚsend_messagec                 óŠ   — |                       d¦  «        }t          |¦  «        }t          dd|it          j        ¬¦  «         d S )NrY   Úai_response)Úroom)rR   rf   r   r   Úsid)ÚdataÚuser_msgÚai_msgs      r   Úhandle_messagez,register_chat_events.<locals>.handle_messageŒ   sB   € à—8’8˜IÑ&Ô&ˆÝ! (Ñ+Ô+ˆÝˆ]˜Y¨Ð/µg´kÐBÑBÔBÐBÐBÐBri   )Úon)Úsocketiort   s     r   Úregister_chat_eventsrw   ‹   s7   € Ø‡[‚[�Ñ Ô ðCð Cñ !Ô ðCð Cð Cri   )r   )rM   Úflaskr   r   r   Úflask_socketior   Úgroqr   r   ÚosÚchromadbÚ__name__Úchat_bprU   ÚPersistentClientÚchroma_clientÚget_collectionrS   r   r4   rf   Úrouterj   rw   rh   ri   r   ú<module>rƒ      s5  ðØ 	€	€	€	Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€à
ˆ)�F˜HÑ
%Ô
%€à	ˆÐPÐ	QÑ	QÔ	Q€Ø)�Ô)¨}Ð=Ñ=Ô=€Ø×)Ò)Ð/?Ð)Ñ@Ô@€
ðð ð ð8ð 8ð 8ð 8ðt12ð 12ð 12ðh 	‡‚ˆwÑÔð(ð (ñ Ôð(ðCð Cð Cð Cð Cri   