§
    s�’j‹  ã                  óh   — d dl mZ d dlZd dlZd dlmZ  ej        e¦  «        Z G d„ d¦  «        Z	dS )é    )ÚannotationsN)ÚAnyc                  óH   — e Zd Zdd„Zdd„Zdd	„Zddd„Zdd„Zdd„Zdd„Z	dS )ÚErpAutonomousMixinÚpayloadúdict[str, Any]Úreturnc                ó*  — d}|d         |                      dd¦  «        |                      dd¦  «        |                      dd¦  «        |                      d	d
¦  «        |                      dd
¦  «        |                      dd¦  «        t          j        |                      di ¦  «        ¦  «        t          j        |                      dg ¦  «        ¦  «        |                      dd¦  «        dœ
}|                      ¦   «         5 }|                     ¦   «         5 }|                     ||¦  «         |                     ¦   «         }|                     ¦   «          |cddd¦  «         cddd¦  «         S # 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )u=   Táº¡o má»›i má»™t phiÃªn tá»± trá»‹ chuáº©n hÃ³a dá»¯ liá»‡u.aM  
            INSERT INTO erp_autonomous_agent_sessions (
                session_code, session_type, status, lead_agent_code,
                total_records_scanned, total_records_healed, data_quality_index,
                agent_actions_summary, findings, executive_summary
            ) VALUES (
                %(session_code)s, %(session_type)s, %(status)s, %(lead_agent_code)s,
                %(total_records_scanned)s, %(total_records_healed)s, %(data_quality_index)s,
                %(agent_actions_summary)s, %(findings)s, %(executive_summary)s
            ) RETURNING *;
        Úsession_codeÚsession_typeÚscheduled_sweepÚstatusÚrunningÚlead_agent_codeÚminhÚtotal_records_scannedr   Útotal_records_healedÚdata_quality_indexç        Úagent_actions_summaryÚfindingsÚexecutive_summaryu!   Ä�ang cháº¡y phiÃªn tá»± trá»‹...)
r   r   r   r   r   r   r   r   r   r   N)ÚgetÚjsonÚdumpsÚget_connectionÚcursorÚexecuteÚfetchoneÚcommit©Úselfr   ÚsqlÚparamsÚconnÚcurÚrows          úAC:\Projects\DSCons\app\core\postgres\clients\autonomous_client.pyÚcreate_autonomous_sessionz,ErpAutonomousMixin.create_autonomous_session   s  € ð
ˆð $ NÔ3Ø#ŸKšK¨Ð8IÑJÔJØ—k’k (¨IÑ6Ô6Ø&Ÿ{š{Ð+<¸fÑEÔEØ%,§[¢[Ð1HÈ!Ñ%LÔ%LØ$+§K¢KÐ0FÈÑ$JÔ$JØ")§+¢+Ð.BÀCÑ"HÔ"HÝ%)¤ZØ—’Ð3°RÑ8Ô8ñ&ô &õ œ
 7§;¢;¨z¸2Ñ#>Ô#>Ñ?Ô?Ø!(§¢Ø#Ð%Hñ"ô "ð
ð 
ˆð  × Ò Ñ"Ô"ð 	 d¨D¯KªK©M¬Mð 	¸SØ�KŠK˜˜VÑ$Ô$Ð$Ø—,’,‘.”.ˆCØ�KŠK‰MŒMˆMØð		ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s7   ÄFÄA E0ÅFÅ0E4	Å4FÅ7E4	Å8FÆFÆFÚ
session_idÚstrúdict[str, Any] | Nonec                óÞ  — g }d|i}|                      ¦   «         D ]|\  }}|dv rOt          |t          t          f¦  «        r3|                     |› d|› d�¦  «         t          j        |¦  «        ||<   ŒX|dv r |                     |› d|› d�¦  «         |||<   Œ}|s|                      |¦  «        S dd                     |¦  «        › d	�}|  	                    ¦   «         5 }| 
                    ¦   «         5 }	|	                     ||¦  «         |	                     ¦   «         }
|                     ¦   «          |
cd
d
d
¦  «         cd
d
d
¦  «         S # 1 swxY w Y   d
d
d
¦  «         d
S # 1 swxY w Y   d
S )u+   Cáº­p nháº­t káº¿t quáº£ phiÃªn tá»± trá»‹.Úid)r   r   z = %(z	)s::jsonb)r   Úcompleted_atr   r   r   r   z)szB
            UPDATE erp_autonomous_agent_sessions
            SET z, z@
            WHERE id = %(id)s
            RETURNING *;
        N)ÚitemsÚ
isinstanceÚdictÚlistÚappendr   r   Úget_autonomous_sessionÚjoinr   r   r   r   r    )r"   r*   r   Úset_clausesr$   ÚkeyÚvaluer#   r%   r&   r'   s              r(   Úupdate_autonomous_sessionz,ErpAutonomousMixin.update_autonomous_session.   sA  € ð "$ˆØ"&¨
Ð!3ˆà!Ÿ-š-™/œ/ð 	$ð 	$‰JˆC�ØÐ;Ð;Ð;Å
Ø��d�|ñAô AÐ;ð ×"Ò" cÐ#>Ð#>°Ð#>Ð#>Ð#>Ñ?Ô?Ð?Ý"œj¨Ñ/Ô/��s‘�Øð ð ð ð ×"Ò" cÐ#7Ð#7°Ð#7Ð#7Ð#7Ñ8Ô8Ð8Ø#��s‘øàð 	;Ø×.Ò.¨zÑ:Ô:Ð:ðà—’˜;Ñ'Ô'ðð ð ˆð × Ò Ñ"Ô"ð 	 d¨D¯KªK©M¬Mð 	¸SØ�KŠK˜˜VÑ$Ô$Ð$Ø—,’,‘.”.ˆCØ�KŠK‰MŒMˆMØð		ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s7   ÃE"Ã1A E
Ä1E"Å
E	ÅE"ÅE	ÅE"Å"E&Å)E&c                ó,  — d}|                       ¦   «         5 }|                     ¦   «         5 }|                     |||f¦  «         |                     ¦   «         cddd¦  «         cddd¦  «         S # 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )u4   Láº¥y thÃ´ng tin chi tiáº¿t má»™t phiÃªn tá»± trá»‹.zWSELECT * FROM erp_autonomous_agent_sessions WHERE id = %s OR session_code = %s LIMIT 1;N)r   r   r   r   ©r"   r*   r#   r%   r&   s        r(   r5   z)ErpAutonomousMixin.get_autonomous_sessionU   s%  € àgˆØ× Ò Ñ"Ô"ð 	" d¨D¯KªK©M¬Mð 	"¸SØ�KŠK˜˜j¨*Ð5Ñ6Ô6Ð6Ø—<’<‘>”>ð	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"s4   —B	¬,A1ÁB	Á1A5	Á5B	Á8A5	Á9B	Â	BÂBé   ÚlimitÚintúlist[dict[str, Any]]c                ó*  — d}|                       ¦   «         5 }|                     ¦   «         5 }|                     ||f¦  «         |                     ¦   «         cddd¦  «         cddd¦  «         S # 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )u5   Láº¥y danh sÃ¡ch cÃ¡c phiÃªn tá»± trá»‹ gáº§n nháº¥t.z|
            SELECT * FROM erp_autonomous_agent_sessions
            ORDER BY started_at DESC
            LIMIT %s;
        N©r   r   r   Úfetchall)r"   r>   r#   r%   r&   s        r(   Úlist_autonomous_sessionsz+ErpAutonomousMixin.list_autonomous_sessions\   s&  € ðˆð
 × Ò Ñ"Ô"ð 	" d¨D¯KªK©M¬Mð 	"¸SØ�KŠK˜˜e˜XÑ&Ô&Ð&Ø—<’<‘>”>ð	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ó4   —B¬+A0ÁBÁ0A4	Á4BÁ7A4	Á8BÂBÂBc                óª  — d}|d         |d         |d         t          |d         ¦  «        |d         t          j        |                     di ¦  «        ¦  «        t          j        |                     di ¦  «        ¦  «        |                     d	d
¦  «        |                     dd¦  «        dœ	}|                      ¦   «         5 }|                     ¦   «         5 }|                     ||¦  «         |                     ¦   «         }|                     ¦   «          |cddd¦  «         cddd¦  «         S # 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )uH   Ghi nháº­n váº¿t tá»± sá»­a Ä‘á»•i (Self-Healing Log) cá»§a má»™t Agent.aÁ  
            INSERT INTO erp_autonomous_healing_logs (
                session_id, agent_code, table_name, record_id, action_type,
                snapshot_before, snapshot_after, reason, confidence_score
            ) VALUES (
                %(session_id)s, %(agent_code)s, %(table_name)s, %(record_id)s, %(action_type)s,
                %(snapshot_before)s, %(snapshot_after)s, %(reason)s, %(confidence_score)s
            ) RETURNING *;
        r*   Ú
agent_codeÚ
table_nameÚ	record_idÚaction_typeÚsnapshot_beforeÚsnapshot_afterÚreasonuB   Tá»± chuáº©n hÃ³a dá»¯ liá»‡u theo quy táº¯c nghiá»‡p vá»¥ DSCons.Úconfidence_scoreé_   )	r*   rG   rH   rI   rJ   rK   rL   rM   rN   N)	r+   r   r   r   r   r   r   r   r    r!   s          r(   Úcreate_autonomous_healing_logz0ErpAutonomousMixin.create_autonomous_healing_logg   s×  € ðˆð " ,Ô/Ø! ,Ô/Ø! ,Ô/Ý˜W [Ô1Ñ2Ô2Ø" =Ô1Ý#œz¨'¯+ª+Ð6GÈÑ*LÔ*LÑMÔMÝ"œj¨¯ªÐ5EÀrÑ)JÔ)JÑKÔKØ—k’kØÐ^ñô ð !(§¢Ð,>ÀÑ CÔ Cð
ð 
ˆð × Ò Ñ"Ô"ð 	 d¨D¯KªK©M¬Mð 	¸SØ�KŠK˜˜VÑ$Ô$Ð$Ø—,’,‘.”.ˆCØ�KŠK‰MŒMˆMØð		ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s7   ÃEÃA D0ÄEÄ0D4	Ä4EÄ7D4	Ä8EÅEÅEc                ó*  — d}|                       ¦   «         5 }|                     ¦   «         5 }|                     ||f¦  «         |                     ¦   «         cddd¦  «         cddd¦  «         S # 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )uI   Láº¥y danh sÃ¡ch cÃ¡c hÃ nh Ä‘á»™ng tá»± chuáº©n hÃ³a trong má»™t phiÃªn.z†
            SELECT * FROM erp_autonomous_healing_logs
            WHERE session_id = %s
            ORDER BY created_at ASC;
        NrB   r<   s        r(   Úlist_autonomous_healing_logsz/ErpAutonomousMixin.list_autonomous_healing_logs…   s&  € ðˆð
 × Ò Ñ"Ô"ð 	" d¨D¯KªK©M¬Mð 	"¸SØ�KŠK˜˜j˜]Ñ+Ô+Ð+Ø—<’<‘>”>ð	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"rE   c                ó”  — d}|                       ¦   «         5 }|                     ¦   «         5 }|                     |¦  «         |                     ¦   «         pi }t	          |                     dd¦  «        ¦  «        t	          |                     dd¦  «        ¦  «        t          t          |                     dd¦  «        ¦  «        d¦  «        |                     d¦  «        r'|                     d¦  «                             ¦   «         nd	d
œcd	d	d	¦  «         cd	d	d	¦  «         S # 1 swxY w Y   	 d	d	d	¦  «         d	S # 1 swxY w Y   d	S )u=   Thá»‘ng kÃª tá»•ng quan tráº¡ng thÃ¡i váº­n hÃ nh tá»± trá»‹.a=  
            SELECT 
                COUNT(*) as total_sessions,
                COALESCE(SUM(total_records_healed), 0) as total_healed_records,
                COALESCE(AVG(data_quality_index), 0.0) as avg_dqi,
                MAX(started_at) as last_sweep_at
            FROM erp_autonomous_agent_sessions;
        Útotal_sessionsr   Útotal_healed_recordsÚavg_dqir   é   Úlast_sweep_atN)rT   rU   rV   rX   )	r   r   r   r   r?   r   ÚroundÚfloatÚ	isoformat)r"   r#   r%   r&   r'   s        r(   Úget_autonomous_overviewz*ErpAutonomousMixin.get_autonomous_overview�   sÅ  € ðˆð × Ò Ñ"Ô"ð 	 dØ—’‘”ð 
 #Ø—’˜CÑ Ô Ð Ø—l’l‘n”nÐ*¨�å&)¨#¯'ª'Ð2BÀAÑ*FÔ*FÑ&GÔ&GÝ,/°·²Ð8NÐPQÑ0RÔ0RÑ,SÔ,SÝ$¥U¨3¯7ª7°9¸cÑ+BÔ+BÑ%CÔ%CÀQÑGÔGà—w’w˜Ñ/Ô/ð& S§W¢W¨_Ñ%=Ô%=×%GÒ%GÑ%IÔ%IÐ%Iàðð ð
ð 
ð 
ð 
ñ 
ô 
ð 
ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s5   —D=¬CD$ÄD=Ä$D(	Ä(D=Ä+D(	Ä,D=Ä=EÅEN)r   r   r	   r   )r*   r+   r   r   r	   r,   )r*   r+   r	   r,   )r=   )r>   r?   r	   r@   )r*   r+   r	   r@   )r	   r   )
Ú__name__Ú
__module__Ú__qualname__r)   r:   r5   rD   rP   rR   r\   © ó    r(   r   r   
   s§   € € € € € ð!ð !ð !ð !ðF%ð %ð %ð %ðN"ð "ð "ð "ð	"ð 	"ð 	"ð 	"ð 	"ðð ð ð ð<	"ð 	"ð 	"ð 	"ðð ð ð ð ð ra   r   )
Ú
__future__r   r   ÚloggingÚtypingr   Ú	getLoggerr]   Úloggerr   r`   ra   r(   ú<module>rg      s‰   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ð[ð [ð [ð [ð [ñ [ô [ð [ð [ð [ra   