§
     ’jï  ã                  ó  — d 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mZmZ ddlmZmZ ddlmZ dd	lmZ  ej        d
¦  «        Z eddg¬¦  «        Z G d„ de¦  «        Ze                     dd¬¦  «        d e	 eg d¢¦  «        ¦  «        fd5d„¦   «         Ze                     dd¬¦  «         eddd ¬!¦  «         e	e¦  «         e	d"„ ¦  «        fd6d'„¦   «         Ze                     d(d)¬¦  «         e	e¦  «         e	d*„ ¦  «        fd7d-„¦   «         Ze                     d.d/¬¦  «         e	e¦  «         e	d0„ ¦  «        fd8d1„¦   «         Ze                     d2d3¬¦  «         e	e¦  «        fd9d4„¦   «         Z dS ):z?Autonomous AI normalization routes for DSCons Construction ERP.é    )ÚannotationsN)ÚAny)Ú	APIRouterÚBackgroundTasksÚDependsÚHTTPExceptionÚQuery)Ú	BaseModelÚField)Úget_current_userÚrequire_role©ÚErpDatabaseClient)Úget_autonomous_servicezdscons.autonomous_routesz/v1/autonomousz!Autonomous AI & Data Self-Healing)ÚprefixÚtagsc                  ó\   — e Zd ZU dZ edd¬¦  «        Zded<    edd¬¦  «        Zded	<   d
S )ÚRunSessionRequestz)Payload to trigger an autonomous session.Úmanual_triggeruA   Loáº¡i phiÃªn: manual_trigger | emergency_audit | scheduled_sweep)ÚdefaultÚdescriptionÚstrÚsession_typeÚminhu5   MÃ£ AI Lead Ä‘iá»�u phá»‘i: minh | tung | quynh | namÚlead_agent_codeN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r   © ó    úGC:\Projects\DSCons\app\modules\agents\presentation\autonomous_routes.pyr   r      s~   € € € € € € Ø3Ð3à˜Ø ØWðñ ô €Lð ð ð ñ ð !˜5ØÐ$[ðñ ô €Oð ð ð ñ ð ð r"   r   z/run-sessionu>   KÃ­ch hoáº¡t phiÃªn tá»± trá»‹ chuáº©n hÃ³a toÃ n há»‡ thá»‘ng)Úsummary)Ú
superadminÚdirectorÚpmÚsite_engineerÚ
accountantÚbackground_tasksr   ÚpayloadúRunSessionRequest | NoneÚcurrent_userúdict[str, Any]Úreturnc              ƒ  óN  K  — t          ¦   «         }|pt          ¦   «         }	 |                     |j        |j        ¬¦  «        ƒ d{V —†}dd|                     d¦  «        › d�|dœS # t          $ r4}t                               d|¦  «         t          d	d
|› �¬¦  «        ‚d}~ww xY w)u_   KÃ­ch hoáº¡t phiÃªn tá»± trá»‹ quÃ©t sÃ¢u 57 báº£ng cÆ¡ sá»Ÿ dá»¯ liá»‡u vÃ  tá»± chuáº©n hÃ³a.)r   Ú
lead_agentNÚsuccessu   PhiÃªn tá»± trá»‹ [Úsession_codeu   ] hoÃ n táº¥t thÃ nh cÃ´ng.)ÚstatusÚmessageÚdatau&   Lá»—i khi cháº¡y phiÃªn tá»± trá»‹: %siô  u   Lá»—i phiÃªn tá»± trá»‹: ©Ústatus_codeÚdetail)
r   r   Úrun_full_autonomous_sweepr   r   ÚgetÚ	ExceptionÚloggerÚerrorr   )r*   r+   r-   ÚserviceÚreq_dataÚresultÚexcs          r#   Úrun_autonomous_sessionrC      sõ   è è € õ %Ñ&Ô&€GØÐ-Õ+Ñ-Ô-€HðWØ×8Ò8Ø!Ô.¸8Ô;Sð 9ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð  Ød¨V¯ZªZ¸Ñ-GÔ-GÐdÐdÐdØð
ð 
ð 	
øõ
 ð Wð Wð WÝ�ŠÐ=¸sÑCÔCÐCÝ¨Ð4UÐPSÐ4UÐ4UÐVÑVÔVÐVøøøøðWøøøs   ¢AA& Á&
B$Á0/BÂB$z	/sessionsu-   Danh sÃ¡ch lá»‹ch sá»­ cÃ¡c phiÃªn tá»± trá»‹é   é   éd   )r   ÚgeÚlec                 ó   — t          ¦   «         S ©Nr   r!   r"   r#   ú<lambda>rK   >   ó   € Õ4EÑ4GÔ4G€ r"   ÚlimitÚintÚ
erp_clientr   c                óT   — |                      | ¬¦  «        }dt          |¦  «        |dœS )uA   Láº¥y danh sÃ¡ch cÃ¡c phiÃªn tá»± trá»‹ Ä‘Ã£ cháº¡y gáº§n nháº¥t.)rM   r2   )r4   Útotalr6   )Úlist_autonomous_sessionsÚlen)rM   r-   rO   Úsessionss       r#   rR   rR   :   s0   € ð ×2Ò2¸Ð2Ñ?Ô?€HØ­#¨h©-¬-ÀÐJÐJÐJr"   z/sessions/{session_id}u=   Xem chi tiáº¿t má»™t phiÃªn tá»± trá»‹ vÃ  nháº­t kÃ½ Healingc                 ó   — t          ¦   «         S rJ   r   r!   r"   r#   rK   rK   K   rL   r"   Ú
session_idr   c                óÐ   — |                      | ¦  «        }|st          dd| › �¬¦  «        ‚|                     t          |d         ¦  «        ¦  «        }d||t	          |¦  «        dœS )ug   Láº¥y chi tiáº¿t phiÃªn tá»± trá»‹ kÃ¨m danh sÃ¡ch cÃ¡c hÃ nh Ä‘á»™ng tá»± chuáº©n hÃ³a (Healing Logs).i”  u%   KhÃ´ng tÃ¬m tháº¥y phiÃªn tá»± trá»‹ r7   Úidr2   )r4   ÚsessionÚhealing_logsÚtotal_healing_actions)Úget_autonomous_sessionr   Úlist_autonomous_healing_logsr   rS   )rV   r-   rO   rY   rZ   s        r#   Úget_autonomous_session_detailsr^   E   sˆ   € ð ×/Ò/°
Ñ;Ô;€GØð 
ÝØÐ$XÈJÐ$XÐ$Xð
ñ 
ô 
ð 	
ð ×:Ò:½3¸wÀt¼}Ñ;MÔ;MÑNÔN€LàØØ$Ý!$ \Ñ!2Ô!2ð	ð ð r"   z	/overviewu5   Tá»•ng quan nÄƒng lá»±c tá»± trá»‹ vÃ  chá»‰ sá»‘ DQIc                 ó   — t          ¦   «         S rJ   r   r!   r"   r#   rK   rK   `   rL   r"   c                ó4   — |                      ¦   «         }d|dœS )ut   Thá»‘ng kÃª tá»•ng quan nÄƒng lá»±c tá»± trá»‹, tá»•ng sá»‘ báº£n ghi Ä‘Ã£ chuáº©n hÃ³a vÃ  Ä‘iá»ƒm DQI trung bÃ¬nh.r2   )r4   Úoverview)Úget_autonomous_overview)r-   rO   Ústatss      r#   rb   rb   ]   s#   € ð ×.Ò.Ñ0Ô0€EØ¨UÐ3Ð3Ð3r"   z/statusu=   Tráº¡ng thÃ¡i bá»™ láº­p lá»‹ch tá»± trá»‹ (Scheduler Status)c                ó   — dddg d¢dg d¢dœS )uZ   Kiá»ƒm tra tráº¡ng thÃ¡i bá»™ Ä‘á»‡m tá»± trá»‹ vÃ  lá»‹ch quÃ©t Ä‘á»‹nh ká»³ tiáº¿p theo.ÚactiveÚ+autonomous_nightly_sweep_and_manual_triggerz01:00 AM Daily)	r   ÚthuyÚtungÚquynhÚhungÚthaoÚnamÚlanÚphucé9   )uA   LÃ m sáº¡ch trÃ­ch yáº¿u vÄƒn báº£n (Document Title Sanitization)uH   Ä�á»‘i soÃ¡t MST Ä‘á»‘i tÃ¡c theo chuáº©n Tá»•ng Cá»¥c Thuáº¿ 10/13 sá»‘uJ   Tá»± Ä‘á»™ng gáº¯n tháº» 4 Trá»¥ Cá»™t Doanh Nghiá»‡p (4 Business Pillars)uG   Ä�á»‘i soÃ¡t 3 chiá»�u HÃ³a Ä‘Æ¡n - Há»£p Ä‘á»“ng - PO (3-Way Matching)uC   TÃ­nh toÃ¡n Ä‘á»™ chÃ­nh xÃ¡c sá»‘ há»�c EVM CPI/SPI Decimal(18, 4)uH   GiÃ¡m sÃ¡t Ä‘á»‹nh má»©c tiÃªu hao nhiÃªn liá»‡u mÃ¡y Ä‘Ã o (LÃ­t/giá»�)u>   Cháº¥m Ä‘iá»ƒm Sáºµn sÃ ng Kiá»ƒm toÃ¡n (Audit Readiness Gate))r4   ÚmodeÚscheduleÚactive_agentsÚtarget_tables_countÚhealing_strategiesr!   )r-   s    r#   Úget_autonomous_scheduler_statusru   g   s?   € ð Ø=Ø$ð

ð 

ð 

ð  "ð
ð 
ð 
ð!ð ð r"   )r*   r   r+   r,   r-   r.   r/   r.   )rM   rN   r-   r.   rO   r   r/   r.   )rV   r   r-   r.   rO   r   r/   r.   )r-   r.   rO   r   r/   r.   )r-   r.   r/   r.   )!r   Ú
__future__r   ÚloggingÚtypingr   Úfastapir   r   r   r   r	   Úpydanticr
   r   Ú"app.modules.auth.presentation.authr   r   Úapp.core.postgres.erp_clientr   Ú8app.modules.agents.application.autonomous_engine_servicer   Ú	getLoggerr=   Úrouterr   ÚpostrC   r;   rR   r^   rb   ru   r!   r"   r#   ú<module>r�      sê  ðØ EÐ Eà "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ :Ð :Ð :Ð :Ð :Ð :Ø [Ð [Ð [Ð [Ð [Ð [à	ˆÔ	Ð5Ñ	6Ô	6€Ø	ˆÐ*Ð2UÐ1VÐ	WÑ	WÔ	W€ð	ð 	ð 	ð 	ð 	˜	ñ 	ô 	ð 	ð ‡‚ˆ^Ð%e€ÑfÔfð )-Ø#* 7ØˆÐTÐTÐTÑUÔUñ$ô $ðWð Wð Wð Wñ gÔfðWð4 ‡‚ˆKÐ!P€ÑQÔQà�˜r a¨CÐ0Ñ0Ô0Ø#* 7Ð+;Ñ#<Ô#<Ø$+ GÐ,GÐ,GÑ$HÔ$HðKð Kð Kð Kñ RÔQðKð ‡‚ØÐ&eð ñ ô ð
 $+ 7Ð+;Ñ#<Ô#<Ø$+ GÐ,GÐ,GÑ$HÔ$Hðð ð ð ñô ðð* ‡‚ˆKÐ!X€ÑYÔYà#* 7Ð+;Ñ#<Ô#<Ø$+ GÐ,GÐ,GÑ$HÔ$Hð4ð 4ð 4ð 4ñ ZÔYð4ð ‡‚ˆIÐ^€Ñ_Ô_à#* 7Ð+;Ñ#<Ô#<ðð ð ð ñ `Ô_ðð ð r"   