§
    Ã¥Èjlm  ã            	       ó  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	dZ
dZej                             e
d¦  «        ZdZdZdZej        Zd	Zej                             e
d
¦  «        Zej                             ej                             d¦  «        dddddd¦  «        Z ej        ed¬¦  «         d„ Zd„ Zd&d„Zd&d„Zd„ ZdZd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d „ Z%d!„ Z&d"„ Z'd#„ Z(d$„ Z)e*d%k    r e)¦   «          dS dS )'uH  WORKER HUáº¤N LUYá»†N/HIá»†U CHá»ˆNH MÃ€U (CSDL B) â€” 2 bÆ°á»›c AGY.

  BÆ°á»›c P (dá»± Ä‘oÃ¡n): há»—n há»£p (cÃ¡c mÃ£ mÃ u CSDL B + tá»‰ lá»‡ %) â†’ AGY model máº¡nh dá»± Ä‘oÃ¡n mÃ u há»—n há»£p
  BÆ°á»›c C (Ä‘á»‘i chiáº¿u): dá»± Ä‘oÃ¡n + áº¢NH THá»°C Táº¾ â†’ AGY Ä‘á»�c mÃ u tháº­t, tÃ­nh Î”E, Ä‘á»� xuáº¥t hiá»‡u chá»‰nh
                      há»‡ sá»‘ cÆ°á»�ng Ä‘á»™ tá»«ng mÃ u â†’ ghi vÃ o `hieu_chinh_mau` + cáº­p nháº­t `mau`.

Cháº¡y: python worker_calib.py            (vÃ²ng láº·p, quÃ©t 20 giÃ¢y)
      python worker_calib.py --mot-lan  (xá»­ lÃ½ 1 lÆ°á»£t rá»“i thoÃ¡t)
é    Nz9C:\Claw 2\Nghien cuu\Du-an-B-He-mau-Stain-Glaze\calib-appz8C:\Claw 2\Nghien cuu\Du-an-B-He-mau-Stain-Glaze\CSDLB.dbÚviecz,C:\Users\admin\AppData\Local\agy\bin\agy.exez$2f54d0c6-f33f-4dae-b5b7-840339496ec7zgemini-3.1-pro-highz0https://desktop-9gsdkd2.tail0ffe94.ts.net/calib/zemail_bao.txtz%LOCALAPPDATA%ÚhermesÚskillsÚemailzgui-email-kem-fileÚscriptszgui_mail_kem_file.pyT©Úexist_okc                 óü   — |                       d¦  «        pd                     ¦   «         }|rd|v r|S 	 t          t          d¬¦  «                             ¦   «                              ¦   «         S # t
          $ r Y dS w xY w)Nr   Ú ú@úutf-8©Úencoding)ÚgetÚstripÚopenÚ	EMAIL_BAOÚreadÚ	Exception)ÚvÚes     úIC:\Claw 2\Nghien cuu\Du-an-B-He-mau-Stain-Glaze\calib-app\worker_calib.pyÚ
email_nhanr      s‰   € Ø	
�Šˆw‰ŒÐ	˜2×$Ò$Ñ&Ô&€AØð ˆS�AˆXˆXØˆðÝ•I¨Ð0Ñ0Ô0×5Ò5Ñ7Ô7×=Ò=Ñ?Ô?Ð?øÝð ð ð Øˆrˆrðøøøs   ³9A- Á-
A;Á:A;c                 ó–   — t          j        |                      d¦  «        pd¦  «        }d                     d„ |D ¦   «         ¦  «        pdS )NÚ
thanh_phanú[]z + c              3   ót   K  — | ]3}|                      d d¦  «        ›d|                      d¦  «        ›d�V — Œ4dS )Úmar   Ú Úti_lez%N©r   ©Ú.0Úxs     r   ú	<genexpr>z_tp_txt.<locals>.<genexpr>(   sE   è è € ÐPÐPÈ 1§5¢5¨¨r¡?¤? ? ?°A·E²E¸'±N´N°N°NÐCÐPÐPÐPÐPÐPÐPó    u   (khÃ´ng rÃµ))ÚjsonÚloadsr   Újoin)r   Útps     r   Ú_tp_txtr+   &   sI   € Ý	Œ�A—E’E˜,Ñ'Ô'Ð/¨4Ñ	0Ô	0€BØ�:Š:ÐPÐPÈRÐPÑPÔPÑPÔPÐbÐTbÐbr&   c                 óž  — | d         }t           ›d|›�}t          | ¦  «        }|dk    �r;t          j        |                      d¦  «        pd¦  «        }d|›d|›d�}d	|›d
|›d|                      d¦  «        ›d|                      d¦  «        pd›d|                      d¦  «        ›d|                      d¦  «        ›d|                      d¦  «        ›d|                     d¦  «        pddd…         ›d|                     d¦  «        pd›d|                     d¦  «        pd›dt          |                      d¦  «        pd ¦  «        ›d!|›d"�}|                      d#¦  «        g}	�nÚ|d$k    �r@|pg }d"                     d%„ |D ¦   «         ¦  «        pd&}
d'||                      d(¦  «        t          |¦  «        fz  }d)|›d
|›d*|                      d¦  «        pd›d+|                      d,¦  «        pd›d-|                      d.¦  «        ›d|                      d/¦  «        ›d|                      d0¦  «        ›d1|                      d(¦  «        ›d2t          |                      d3¦  «        pd ¦  «        ›d4|
›d5|                      d6¦  «        pddd7…         ›d8|›d9�}|                      d:¦  «        g}	n“|pg }d"                     d;„ |D ¦   «         ¦  «        pd<}
d=|t          |¦  «        fz  }d>|›d
|›d?|                      d(¦  «        pd›d@t          j	        dA¦  «        ›dB|
›dC|›dDt           ›dE�}|                      d:¦  «        g}	||dF„ |	D ¦   «         fS )GuQ   Tráº£ (tiÃªu Ä‘á»�, thÃ¢n thÆ°, [tá»‡p Ä‘Ã­nh kÃ¨m]) cho má»‘c 'p' / 'c' / 'ghi'.Úidzhon-hop?id=ÚpÚdu_doan_ghi_chuú{}u3   [CALIB] Ä�Ã£ cÃ³ Dá»° Ä�OÃ�N mÃ u â€” há»—n há»£p #ú (ú)uV   Ä�Ã£ xong bÆ°á»›c Dá»° Ä�OÃ�N mÃ u cho há»—n há»£p báº¡n nháº­p.

Há»—n há»£p      : #u    â€” u	    (tá»•ng Ú
tong_ti_leu"   % trong base)
MÃ u dá»± Ä‘oÃ¡n  : Údu_doan_hexõ   â€”z   (L* Ú	du_doan_Lú / a* Ú	du_doan_aú / b* Ú	du_doan_bu   )
PhÆ°Æ¡ng phÃ¡p  : Úphuong_phapNé    u   
Ä�á»™ tin cáº­y   : Ú
do_tin_cayu"    Â· Sai sá»‘ dá»± kiáº¿n: Î”E â‰ˆ Úsai_so_du_kien_deltaEu   
Thá»�i gian    : Údu_doan_giayr   uü    giÃ¢y

>> BÆ¯á»šC TIáº¾P: chá»¥p áº¢NH MÃ€U Há»–N Há»¢P THá»°C Táº¾ (Ä‘Ãºng Ä‘iá»�u kiá»‡n chuáº©n: cÃ¹ng thÆ°á»›c kÃ©o vá»›i máº«u Â· cÃ¹ng loáº¡i base Â· giáº¥y tráº¯ng cÃ¹ng loáº¡i) rá»“i táº£i lÃªn á»Ÿ trang chi tiáº¿t Ä‘á»ƒ agent Ä‘á»‘i chiáº¿u: Ú
Údu_doan_fileÚcc              3   ó¤   K  — | ]K}d |d         ›d|d         ›d|d         ›|d         r dt          |d         ¦  «        dd	…         z  nd
›�V — ŒLdS )ú  - é   õ   : há»‡ sá»‘ é   õ    â†’ é   é   u     (lÃ½ do: %s)Néx   r   )Ústrr"   s     r   r%   zsoan_mail.<locals>.<genexpr>@   sŠ   è è € ð fð fØXYÐXYˆAˆaŒDˆDˆD�!�A”$�$�$˜˜!œ˜ÀaÈÄdÐRÐ/µ#°a¸´d±)´)¸D¸S¸D´/ÑAÐAÐPRÐRðTð fð fð fð fð fð fr&   u     (khÃ´ng cÃ³ Ä‘á»� xuáº¥t)ud   [CALIB] Ä�Ã£ Ä�á»�I CHIáº¾U xong â€” há»—n há»£p #%s (Î”E %s Â· Ä‘á»� xuáº¥t hiá»‡u chá»‰nh %d mÃ u)Údelta_Eub   Ä�Ã£ xong bÆ°á»›c Ä�á»�I CHIáº¾U áº£nh thá»±c táº¿ vá»›i mÃ u dá»± Ä‘oÃ¡n.

Há»—n há»£p        : #u   
Dá»± Ä‘oÃ¡n        : u   
MÃ u thá»±c táº¿    : Úthuc_te_hexz (L* Ú	thuc_te_LÚ	thuc_te_aÚ	thuc_te_bu   )
Î”E (sai lá»‡ch)  : u   
Thá»�i gian      : Údoi_chieu_giayua    giÃ¢y

Ä�á»€ XUáº¤T HIá»†U CHá»ˆNH Há»† Sá»� CÆ¯á»œNG Ä�á»˜ (chÆ°a ghi â€” chá»� máº­t kháº©u):
u   

Káº¾T LUáº¬N: Úket_luani¼  ug   

>> Má»Ÿ trang chi tiáº¿t, nháº­p Máº¬T KHáº¨U XÃ�C NHáº¬N Ä‘á»ƒ ghi cÃ¡c há»‡ sá»‘ nÃ y vÃ o CSDL B: uX   
   (ChÆ°a nháº­p máº­t kháº©u thÃ¬ CSDL B giá»¯ nguyÃªn â€” agent chá»‰ Ä‘á»� xuáº¥t.)
Údoi_chieu_filec              3   óP   K  — | ]!}d |d         ›d|d         ›d|d         ›�V — Œ"dS )rD   rE   rF   rG   rH   rI   N© r"   s     r   r%   zsoan_mail.<locals>.<genexpr>Q   sC   è è € Ð]Ð]ÐPQÐPQ¸!¸A¼$¸$¸$ÀÀ!ÄÀÀÀaÈÄdÀdÐKÐ]Ð]Ð]Ð]Ð]Ð]r&   u     (khÃ´ng cÃ³)uD   [CALIB] Ä�Ãƒ GHI há»‡ sá»‘ vÃ o CSDL B â€” há»—n há»£p #%s (%d mÃ u)u   Ä�Ã£ ghi thÃ´ng sá»‘ hiá»‡u chá»‰nh vÃ o CSDL B (báº£ng mau) sau khi báº¡n nháº­p máº­t kháº©u xÃ¡c nháº­n.

Há»—n há»£p    : #u   
Î”E trÆ°á»›c HC: u   
Thá»�i Ä‘iá»ƒm  : ú%H:%M %d/%mu)   

CÃ�C MÃ€U Ä�Ãƒ Cáº¬P NHáº¬T Há»† Sá»�:
uì   

Ä�iá»�u kiá»‡n Ã¡p dá»¥ng: cÃ¹ng thÆ°á»›c kÃ©o vá»›i mÃ u máº«u Â· cÃ¹ng loáº¡i base Â· giáº¥y tráº¯ng cÃ¹ng loáº¡i.
Há»‡ sá»‘ >1 = mÃ u máº¡nh hÆ¡n dá»± kiáº¿n (dÃ¹ng Ã­t hÆ¡n) Â· <1 = yáº¿u hÆ¡n (dÃ¹ng nhiá»�u hÆ¡n).

>> Xem láº¡i: u     Â· Lá»‹ch sá»­ hiá»‡u chá»‰nh: zhieu-chinh
c                 óT   — g | ]%}|¯t           j                             |¦  «        ¯#|‘Œ&S rV   )ÚosÚpathÚexists)r#   Úks     r   ú
<listcomp>zsoan_mail.<locals>.<listcomp>[   s0   € Ð>Ð>Ð>˜! aÐ>­B¬G¯NªN¸1Ñ,=Ô,=Ð>�AÐ>Ð>Ð>r&   )
Ú
URL_PUBLICr+   r'   r(   r   Úintr)   ÚlenÚtimeÚstrftime)r   ÚloaiÚde_xuatÚhidÚlinkr*   ÚgÚtdÚttÚkemÚdongs              r   Ú	soan_mailrl   +   só  € à
ˆDŒ'€CÝ * 
 
¨C¨CÐ0€DÝ	�‰Œ€BØˆs‚{�{ÝŒJ�q—u’uÐ.Ñ/Ô/Ð7°4Ñ8Ô8ˆˆØMPÈSÈSÐRTÐRTÐRTÐUˆˆð ���b�b�b˜!Ÿ%š% Ñ-Ô-Ð-Ð-¨q¯uªu°]Ñ/CÔ/CÐ/LÀuÐ/LÐ/LÈaÏeÊeÐT_ÑN`ÔN`ÐN`ÐN`Ðbc×bgÒbgÐhsÑbtÔbtÐbtÐbtØ—’�{Ñ#Ô#Ð#Ð# a§e¢e¨MÑ&:Ô&:Ð&C¸eÀTÀcÀTÔ%JÐ%JÐ%JÈAÏEÊEÐR^ÑL_ÔL_ÐLhÐchÐLhÐLhØ—’Ð.Ñ/Ô/Ð8°5Ð8Ð8½#¸a¿eºeÀNÑ>SÔ>SÐ>XÐWXÑ:YÔ:YÐ:YÐ:YÐ[_Ð[_Ð[_ð	aˆð �uŠu�^Ñ$Ô$Ð%ˆ‰Ø	�Š‰Ø�-˜RˆØ�yŠyð fð fØ]dðfñ fô fñ fô fð Gð jGð 	àsØ�—’�yÑ!Ô!¥3 w¡<¤<ðw1ñ 1ˆˆð ���b�b�b˜!Ÿ%š% Ñ.Ô.Ð7°%Ð7Ð7¸¿º¸}Ñ9MÔ9MÐ9VÐQVÐ9VÐ9VÐXY×X]ÒX]Ð^iÑXjÔXjÐXjÐXjØ—’�{Ñ#Ô#Ð#Ð# Q§U¢U¨;Ñ%7Ô%7Ð%7Ð%7¸¿º¸yÑ9IÔ9IÐ9IÐ9IÍ3ÈqÏuÊuÐUeÑOfÔOfÐOkÐjkÑKlÔKlÐKlÐKlØ��˜Ÿš˜jÑ)Ô)Ð2¨U°D°S°DÔ9Ð9Ð9¸4¸4¸4ð	Aˆð �uŠuÐ%Ñ&Ô&Ð'ˆˆà�-˜RˆØ�yŠyÐ]Ð]ÐU\Ð]Ñ]Ô]Ñ]Ô]ÐqÐaqˆØSÐWZÕ\_Ð`gÑ\hÔ\hÐViÑiˆˆð ���b�b�b˜!Ÿ%š% 	Ñ*Ô*Ð3¨eÐ3Ð3µT´]À=Ñ5QÔ5QÐ5QÐ5QÐSWÐSWÐSWÐY]ÐY]ÐY]Õ_iÐ_iÐ_iðkˆð �uŠuÐ%Ñ&Ô&Ð'ˆØˆrÐ>Ð>˜sÐ>Ñ>Ô>Ð>Ð>r&   c                 óª  — t           j        | _        |                      d|f¦  «                             ¦   «         }|sdd|z  fS t          |¦  «        }ddddœ                     |d¦  «        }t          |¦  «        }|sGd}|                      d	|z  ||f¦  «         |                      ¦   «          t          d
|z  ¦  «         d|fS t          j                             t          ¦  «        s=dt          z  }|                      d	|z  ||f¦  «         |                      ¦   «          d|fS t          |||¦  «        \  }	}
}t          t          d|d|	d|
g}|r	|dg|z   z  }t!          j        |ddddt$          d¬¦  «        }|j        pd|j        pdz                        ¦   «         }|                     d¦  «        pt,          }	 t          j        |d¬¦  «         t1          t          j                             |d|z  ¦  «        dd¬¦  «                             |dd…         ¦  «         n# t6          $ r Y nw xY wt9          j        d|¦  «        }|r|                     d¦  «        nd}|j        dk    o-d |                      ¦   «         v pd!|                      ¦   «         v p|}|r#d"|›d#tC          j"        d$¦  «        ›|rd%|z  nd›�nd&|d'd…         z  }|                      d	|z  ||f¦  «         |                      d(tC          j"        d)¦  «        d*|›d+|›�d,|›d-|›d.|	dd/…         ›�d0f¦  «         |                      ¦   «          t          d1|›d2|›�¦  «         ||fS )3uq   Gá»­i email bÃ¡o cho ngÆ°á»�i dÃ¹ng á»Ÿ má»‘c 'p' (dá»± Ä‘oÃ¡n) / 'c' (Ä‘á»‘i chiáº¿u) / 'ghi' (Ä‘Ã£ ghi CSDL B).ú SELECT * FROM hon_hop WHERE id=?Fõ   khÃ´ng tháº¥y há»—n há»£p #%sÚbao_pÚbao_cÚbao_ghi)r.   rB   Úghiui   chÆ°a cÃ³ email nháº­n thÃ´ng bÃ¡o (Ä‘iá»�n á»Ÿ Ã´ táº¡o há»—n há»£p hoáº·c file calib-app\email_bao.txt)z"UPDATE hon_hop SET %s=? WHERE id=?u      BÃ�O: %su   thiáº¿u script gá»­i mail: %sz--toz	--subjectz--body-textz--attachTr   Úreplacei,  )Úcapture_outputÚtextr   ÚerrorsÚcwdÚtimeoutr   Úthu_mucr   z_log_mail_%s.txtÚwr   Nip  z4"?(?:id|messageId)"?\s*[:=]\s*"?([0-9a-zA-Z_-]{12,})rE   r   u
   Ä‘Ã£ gá»­iÚsentu   Ä‘Ã£ gá»­i tá»›i u    lÃºc rW   z (id %s)u   Lá»–I gá»­i mail: %si8ÿÿÿú?INSERT INTO nhat_ky (ngay,viec,chi_tiet,nguon) VALUES (?,?,?,?)ú%Y-%m-%d %H:%Mu)   BÃ¡o cho ngÆ°á»�i dÃ¹ng â€” há»—n há»£p #u    má»‘c u   Tá»›i õ    Â· u    Â· tiÃªu Ä‘á»�: é–   zworker CALIBu	      BÃ�O (z): )#Úsqlite3ÚRowÚrow_factoryÚexecuteÚfetchoneÚdictr   r   ÚcommitÚprintrY   rZ   r[   ÚMAIL_SCRIPTrl   ÚPYÚ
subprocessÚrunÚGOCÚstdoutÚstderrr   ÚVIECÚmakedirsr   r)   Úwriter   ÚreÚsearchÚgroupÚ
returncodeÚlowerra   rb   )Úconre   rc   rd   Úrr   ÚcotÚtori   Útieu_deÚthanrj   Úargvr.   ÚraÚdÚmÚid_thuÚoks                      r   Úbao_mailr¤   ^   sµ  € å”k€C„OØ�ŠÐ6¸¸Ñ?Ô?×HÒHÑJÔJ€AØð <ØÐ5¸Ñ;Ð;Ð;ÝˆQ‰Œ€AØ˜g¨iÐ
8Ð
8×
<Ò
<¸TÀ7Ñ
KÔ
K€CÝ	�A‰Œ€BØð ØyˆØ�ŠÐ8¸3Ñ>ÀÀSÀ	ÑJÔJÐJØ�
Š
‰ŒˆÝˆm˜bÑ Ñ!Ô!Ð!Ø�bˆyÐÝŒ7�>Š>�+Ñ&Ô&ð Ø,­{Ñ:ˆØ�ŠÐ8¸3Ñ>ÀÀSÀ	ÑJÔJÐJØ�
Š
‰ŒˆØ�bˆyÐÝ" 1 d¨GÑ4Ô4Ñ€GˆT�3Ý•˜V R¨°g¸}ÈdÐS€DØ
ð #Ø��˜sÑ"Ñ"ˆÝŒ�t¨D°tÀgÐV_ÕehÐruÐvÑvÔv€AØŒ8ˆ>�r˜aœh˜n¨"Ñ
-×	4Ò	4Ñ	6Ô	6€BØ	�ŠˆiÑÔÐ �D€AðÝ
Œ�A Ð%Ñ%Ô%Ð%Ý�RŒW�\Š\˜!Ð/°$Ñ6Ñ7Ô7¸ÀwÐOÑOÔO×UÒUÐVXÐY^ÐZ^ÐY^ÔV_Ñ`Ô`Ð`Ð`øÝð ð ð Øˆðøøøå
Œ	ÐIÈ2ÑNÔN€AØÐ$ˆQ�WŠW�Q‰ZŒZˆZ "€FØ	
Œ˜Ò	Ð	] °·²±
´
Ð :Ð \¸fÈÏÊÉ
Ì
Ð>RÐ \ÐV\€BØ|~ð 
2ð 
2¨R¨R¨Rµ´¸}Ñ1MÔ1MÐ1MÐhnÐOvÐPZÐ]cÑPcÐPcÐtvÐOvÐ
wÐ
wØ$ r¨$¨%¨%¤yÑ0ð à‡K‚KÐ4°sÑ:¸RÀ¸IÑFÔFÐFØ‡K‚KÐQÝ”Ð/Ñ0Ô0Ð0ÐloÐloÐloÐquÐquÐ2vÐ2vØ8:¸¸¸B¸B¸BÀÈÈÈÄÀÐNÐP^ð`ñaô að að ‡J‚J�L„L€LÝ	€E    b bÐ
)Ñ*Ô*Ð*Øˆrˆ6€Ms   Æ<A$H! È!
H.È-H.c                 ó`  — t          ¦   «         }t          j        |_        |                     d| f¦  «                             ¦   «         }|s|                     ¦   «          dS t          |¦  «        }|                     d| f¦  «                             ¦   «         }|                     ¦   «          | 	                    d¦  «        dk    rdn| 	                    d¦  «        rdnd	}|d	k    rd
„ |D ¦   «         nd}t          ¦   «         }t          || ||¦  «        \  }}|                     ¦   «          ||fS )uT   NÃºt 'gá»­i láº¡i thÃ´ng bÃ¡o' trÃªn web: gá»­i láº¡i theo má»‘c xa nháº¥t Ä‘Ã£ cÃ³.rn   )Fu   khÃ´ng tháº¥y há»—n há»£pz‰SELECT id,mau_id,mau_ten,gia_tri_cu,gia_tri_moi,ly_do,da_ap_dung,lab_moi,delta_E_truoc FROM hieu_chinh_mau WHERE hon_hop_id=? ORDER BY idÚ
trang_thaiÚda_hieu_chinhrs   rN   rB   r.   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rV   ©Útupler"   s     r   r]   zgui_lai_bao.<locals>.<listcomp>™   s   € Ð	$Ð	$Ð	$�q�%�‰(Œ(Ð	$Ð	$Ð	$r&   N)Únoi_dbr�   r‚   rƒ   r„   r…   Úcloser†   Úfetchallr   r¤   )	re   r˜   r™   r   rd   rc   Úder£   ri   s	            r   Úgui_lai_baor¯   Œ   s%  € å
‰(Œ(€CÝ”k€C„OØ�ŠÐ6¸¸Ñ?Ô?×HÒHÑJÔJ€AØð 2Ø�	Š	‰ŒˆØ1Ð1ÝˆQ‰Œ€AØ�kŠkð OØQTÐPVñXô XßX`ÒX`ÑXbÔXbð à‡I‚I�K„K€KØ—E’E˜,Ñ'Ô'¨?Ò:Ð:ˆ5ˆ5ÈÏÊÈmÑH\ÔH\ÐAeÀÀÐbe€DØ(,°ª¨Ð	$Ð	$˜GÐ	$Ñ	$Ô	$Ð	$¸€BÝ
‰(Œ(€CÝ�c˜3  bÑ)Ô)�F€BˆØ‡I‚I�K„K€KØˆrˆ6€Mr&   rE   c                  óŽ   — t          j        t          d¬¦  «        } |                      d¦  «         |                      ¦   «          | S )Né   )ry   z|CREATE TABLE IF NOT EXISTS worker_nhip (
        id INTEGER PRIMARY KEY, dang_xu_ly TEXT, buoc TEXT, bat_dau TEXT, luc TEXT))r�   ÚconnectÚDBr„   r‡   )r˜   s    r   r«   r«   £   sG   € Ý
Œ/�" bÐ
)Ñ
)Ô
)€CØ‡K‚Kð Wñ Xô Xð Xà‡J‚J�L„L€LØ€Jr&   c           	      ó‚   — |                       d||t          j        d¦  «        t          j        d¦  «        f¦  «         d S )NzÈINSERT INTO worker_nhip (id,dang_xu_ly,buoc,bat_dau,luc) VALUES (1,?,?,?,?) ON CONFLICT(id) DO UPDATE SET dang_xu_ly=excluded.dang_xu_ly, buoc=excluded.buoc, bat_dau=excluded.bat_dau, luc=excluded.lucú%Y-%m-%d %H:%M:%S)r„   ra   rb   )r˜   Ú
dang_xu_lyÚbuocs      r   Únhipr¸   «   sP   € Ø‡K‚Kð =ð ˜T¥4¤=Ð1DÑ#EÔ#EÅtÄ}ÐUhÑGiÔGiÐjñlô lð lð lð lr&   c                  óx  — t          ¦   «         } |                      ¦   «         }i }|                     d¦  «                             ¦   «         D ]Y}|\  }}}}}}	}
}|                     d|f¦  «                             ¦   «         }|||||�|nd|	pd|
pd|pdd„ |D ¦   «         dœ	||<   ŒZ|                      ¦   «          |S )	u8   Báº£ng thÃ´ng sá»‘ mÃ u Ä‘á»ƒ AGY dÃ¹ng khi dá»± Ä‘oÃ¡n.z\SELECT id,ten,ma,phan_loai,he_so_cuong_do,lab_hieu_chinh,so_lan_hieu_chinh,danh_gia FROM mauz[SELECT nong_do,hex,L_star,a_star,b_star,ghi_chu FROM mau_bang_in WHERE mau_id=? ORDER BY idNç      ð?r   r   c                 óH   — g | ]}t          t          d |¦  «        ¦  «        ‘Œ S ))Únong_doÚhexÚLÚaÚbÚghi_chu)r†   Úzipr"   s     r   r]   zdoc_anh_ds.<locals>.<listcomp>½   s-   € Ð0wÐ0wÐ0wÐpqµµcÐ:fÐhiÑ6jÔ6jÑ1kÔ1kÐ0wÐ0wÐ0wr&   )	r-   Útenr   Ú	phan_loaiÚhe_so_cuong_doÚlab_hieu_chinhÚso_lan_hieu_chinhÚdanh_giaÚo_do)r«   Úcursorr„   r­   r¬   )r˜   rB   rŸ   r™   Úmau_idrÃ   r   ÚplÚhsÚlab_hcÚso_lanÚdgÚos                r   Ú
doc_anh_dsrÒ   ²   sö   € å
‰(Œ(€CØ�
Š
‰Œ€AØ	€BØ�YŠYÐuÑvÔv×Òñ  Bô  Bð yð yˆØ67Ñ3ˆ��R˜˜R ¨°Ø�IŠIÐsÐv|Ðu~ÑÔ÷  Iò  Iñ  Kô  KˆØ s°"À2Ø*,¨. B B¸cØ$* L¨bÀvÀ{ÐQRØ ˜h BÐ0wÐ0wÐuvÐ0wÑ0wÔ0wðyð yˆˆ2‰ˆð ‡I‚I�K„K€KØ€Ir&   c                 ó.  — t           d|dt          dddt          d| ddd	d
dg}t          j        ¦   «         }t	          j        |dddd| ¬¦  «        }t          j        ¦   «         |z
  }	 t          j        |j        pd¦  «        }t          j	        | 
                    d¦  «        d¬¦  «        }	n# t          $ r i d}	}Y nw xY wt          t          j                             | |¦  «        dd¬¦  «                             d||j        t          |	|j        pdd d…         |j        pddd …         fz  ¦  «         |t          j                             |¦  «        t          j                             |¦  «        r#t          |d¬¦  «                             ¦   «         ndfS )Nz-pz--modelz--effortÚhighz	--projectz	--add-dirz--dangerously-skip-permissionsz--output-formatr'   z--print-timeoutÚ0Tr   rt   )ru   rv   r   rw   rx   r0   ÚusageF©Úensure_asciiu   (khÃ´ng parse json)r{   r   u\   === %.1f s | rc=%s | model=%s
usage=%s
--- stdout (Ä‘áº§u) ---
%s
--- stderr (cuá»‘i) ---
%sr   iÐ  i$úÿÿ)ÚAGYÚMODELÚPROJECTra   r‹   rŒ   r'   r(   rŽ   Údumpsr   r   r   rY   rZ   r)   r’   r–   r�   r[   r   )
r    ÚpromptÚout_fileÚten_logÚcmdÚt0r.   ÚdtÚjri   s
             r   Úchay_agyrä   Â   s™  € Ý��f˜i­°
¸FÀKÕQXØ˜Ð;Ð=NÐPVÐXiÐknðp€Cå	Œ‰Œ€BÝŒ�s¨4°dÀWÐU^ÐdeÐfÑfÔf€AÝ	Œ‰Œ�rÑ	€Bð*ÝŒJ�q”xÐ' 4Ñ(Ô(ˆÝŒZ˜Ÿš˜g™œ°UÐ;Ñ;Ô;ˆˆøÝð *ð *ð *ØÐ)ˆ2ˆˆˆð*øøøå�Œ�Š�a˜Ñ	!Ô	! 3°Ð9Ñ9Ô9×?Ò?ØkØˆqŒ|�U B¨¬¨°R¸¸$¸Ô(?À!Ä(À.ÈbÐRWÐRXÐRXÔAYÐ
Zñ	[ñ\ô \ð \ð �rŒw�~Š~˜hÑ'Ô'ÕTVÔT[×TbÒTbÐckÑTlÔTlÐ)t­¨hÀÐ)IÑ)IÔ)I×)NÒ)NÑ)PÔ)PÐ)PÐrtÐtÐts   Á&AB+ Â+B<Â;B<c                 óÌ   — t          j        d| t           j        ¦  «        D ]B}	 t          j        |                     d¦  «        ¦  «        }||v r|c S Œ3# t          $ r Y Œ?w xY wdS )uE   Láº¥y khá»‘i JSON Ä‘áº§u tiÃªn cÃ³ khoÃ¡ cho trÆ°á»›c trong markdown.z```(?:json)?\s*(\{.*?\})\s*```rE   N)r“   ÚfinditerÚSr'   r(   r•   r   )ÚmdÚkhoar¡   rÑ   s       r   Ú
json_trongrê   Ó   s|   € åŒ[Ð:¸BÅÄÑEÔEð ð ˆð	Ý”
˜1Ÿ7š7 1™:œ:Ñ&Ô&ˆAØ�qˆyˆyØ���ð øåð 	ð 	ð 	ØˆHð	øøøàˆ4s   ¤,AÁ
A!Á A!c                 óN  — t          j        | d         ¦  «        }g }|D ]³}|                     |d         ¦  «        }|sŒ |d         }d                     d„ |D ¦   «         ¦  «        pd}|                     d|d         ›d	|d         ›d
|d         ›d|d         ›d|d         ›d|d         ›d|›d|d         d d…         ›d|d         pd›�¦  «         Œ´d| d         ›dd                     |¦  «        ›d| d         pd›d t
          j                             | d!         d"¦  «        ›d#�	S )$Nr   r   rÉ   ú; c              3   ót   K  — | ]3}|d          ›d|d         ›d|d         ›d|d         ›d|d         ›d�
V — Œ4d	S )
r¼   z: r½   z	 (L*a*b* r¾   ú/r¿   rÀ   r2   NrV   )r#   Úys     r   r%   z!prompt_du_doan.<locals>.<genexpr>è   s`   è è € ÐpÐpÐij°Q°y´\°\°\À1ÀUÄ8À8À8ÈQÈsÌVÈVÈVÐUVÐWZÔU[ÐU[ÐU[Ð]^Ð_bÔ]cÐ]cÐ]cÐdÐpÐpÐpÐpÐpÐpr&   u   chÆ°a cÃ³ sá»‘ Ä‘oú- **rÃ   õ   ** (mÃ£ z, rÄ   u   ) â€” **r    u>   % mÃ u trong base** Â· há»‡ sá»‘ cÆ°á»�ng Ä‘á»™ hiá»‡n táº¡i: rÅ   u    Â· sá»‘ láº§n hiá»‡u chá»‰nh: rÇ   u*   
    Â· Sá»‘ Ä‘o cÃ¡c má»©c ná»“ng Ä‘á»™: u!   
    Â· Nháº­n xÃ©t tÃ i liá»‡u: rÈ   éÈ   u!   
    Â· Hiá»‡u chá»‰nh Ä‘Ã£ Ã¡p: rÆ   u	   chÆ°a cÃ³u0  Báº¡n lÃ  chuyÃªn gia mÃ u sáº¯c sÆ¡n. Ä�Ã¢y lÃ  má»™t Há»–N Há»¢P MÃ€U do phÃ²ng Lab pha tá»« cÃ¡c mÃ u cÃ³ trong CSDL ná»™i bá»™.

THÃ€NH PHáº¦N: cÃ¡c mÃ u pha trong base â€” má»—i dÃ²ng lÃ  **% mÃ u pha trong base** (KHÃ”NG cáº§n cá»™ng = 100%; vÃ­ dá»¥: 4 nghÄ©a lÃ  4% mÃ u Ä‘Ã³ trong base). Tá»•ng r3   u6   % chá»‰ lÃ  con sá»‘ cá»™ng láº¡i Ä‘á»ƒ tham chiáº¿u.
r@   uè   

Ä�Iá»€U KIá»†N CHUáº¨N (báº¯t buá»™c, Ä‘Ã£ cá»‘ Ä‘á»‹nh): máº«u Ä‘Æ°á»£c kÃ©o báº±ng CÃ™NG thÆ°á»›c kÃ©o vá»›i mÃ u máº«u, pha trong CÃ™NG loáº¡i base vá»›i máº«u, trÃªn GIáº¤Y TRáº®NG cÃ¹ng loáº¡i. 

Ghi chÃº cá»§a ngÆ°á»�i pha: rÁ   r5   uß  

NHIá»†M Vá»¤: **dá»± Ä‘oÃ¡n mÃ u cá»§a há»—n há»£p** nÃ y.
1. TrÃ¬nh bÃ y cÃ¡ch báº¡n tÃ­nh (mÃ´ hÃ¬nh: trá»™n tuyáº¿n tÃ­nh theo khÃ´ng gian mÃ u nÃ o? Kubelka-Munk? hay trung bÃ¬nh cÃ³ trá»�ng sá»‘?) â€” nÃªu rÃµ giáº£ Ä‘á»‹nh.
2. DÃ¹ng sá»‘ Ä‘o L*a*b* thá»±c cÃ³ cá»§a tá»«ng mÃ u (á»Ÿ má»©c ná»“ng Ä‘á»™ gáº§n nháº¥t vá»›i tá»‰ lá»‡ trong há»—n há»£p) â€” KHÃ”NG bá»‹a sá»‘ má»›i.
3. TrÃ¬nh bÃ y káº¿t quáº£ dá»± Ä‘oÃ¡n: hex, L*, a*, b*, vÃ  khoáº£ng tin cáº­y (vÃ­ dá»¥ Â±Î”E bao nhiÃªu).
4. NÃªu 3â€“5 yáº¿u tá»‘ cÃ³ thá»ƒ lÃ m mÃ u thá»±c lá»‡ch khá»�i dá»± Ä‘oÃ¡n (tÆ°Æ¡ng tÃ¡c hoÃ¡ há»�c giá»¯a cÃ¡c dye, Ä‘á»™ má»�/Ä‘á»™ phá»§, ná»�n giáº¥y, sai sá»‘ Ä‘á»�c mÃ u tá»« áº£nhâ€¦).

YÃŠU Cáº¦U Ä�á»ŠNH Dáº NG: viáº¿t tá»‡p **`rz   ú
DU_DOAN.mduK  `** (Ä‘Æ°á»�ng dáº«n TUYá»†T Ä�á»�I nÃ y, tiáº¿ng Viá»‡t, gá»�n) vÃ  **káº¿t thÃºc báº±ng má»™t khá»‘i ```json** Ä‘Ãºng dáº¡ng:
```json
{"du_doan": {"hex": "#RRGGBB", "L": 0.0, "a": 0.0, "b": 0.0}, "phuong_phap": "â€¦", "do_tin_cay": "cao/trung binh/thap", "sai_so_du_kien_deltaE": 0.0}
```
Káº¿t thÃºc tá»‡p báº±ng dÃ²ng HOAN TAT.)r'   r(   r   r)   ÚappendrY   rZ   )r   Údsr*   rk   r$   r¡   rÑ   Úods           r   Úprompt_du_doanr÷   à   sä  € Ý	Œ�A�l”OÑ	$Ô	$€BØ€DØð qð qˆØ�FŠF�1�T”7‰OŒOˆØð 	ØØˆfŒIˆØ�YŠYÐpÐpÐnoÐpÑpÔpÑpÔpð  Ið  uIˆØ�Šˆà˜”x�x�x  4¤  ¨!¨K¬.¨.¨.¸!¸G¼*¸*¸*ÀaÐHXÔFYÐFYÐFYÐ[\Ð]pÔ[qÐ[qÐ[qÐsuÐsuÐsuÐwxð  zDô  xEð  FJð  GJð  FJô  xKð  xKð  xKð  MNð  O_ô  M`ð  Moð  doð  Moðpñ 	qô 	qð 	qð 	qðqð* ;<¸L¼/¸/¸/È4Ï9Ê9ÐUYÉ?Ì?È?È?Ð\]Ð^gÔ\hÐ\qÐlqÐ\qÐ\qÕsuÔsz×sÒsð  ABð  CLô  AMð  O[ñ  t\ô  t\ð  t\ð  t\ð]ð ^r&   c                 ó  — t          j        | d         ¦  «        }g }|D ]z}|                     |d         ¦  «        pi }|                     d|                     d|d         ¦  «        ›d|d         ›d|d         ›d|                     d	d
¦  «        ›�¦  «         Œ{d| d         ›dd                     |¦  «        ›d|                     dd¦  «        ›d|                     dd¦  «        ›d|                     dd¦  «        ›d|                     dd¦  «        ›d|                     dd¦  «        d d…         ›dt
          j                             | d         pd¦  «        ›dt
          j                             | d         d¦  «        ›d �S )!Nr   r   rð   rÃ   rñ   u   ) Â· tá»‰ lá»‡ r    u,   % Â· há»‡ sá»‘ cÆ°á»�ng Ä‘á»™ hiá»‡n táº¡i: rÅ   rº   u  Báº¡n lÃ  chuyÃªn gia mÃ u sáº¯c sÆ¡n. CÃ³ Má»˜T Há»–N Há»¢P Ä�Ãƒ PHA THá»°C Táº¾ vÃ  áº¢NH MÃ€U THá»°C Táº¾ cá»§a nÃ³.

Ä�Iá»€U KIá»†N CHUáº¨N (báº¯t buá»™c, Ä‘Ã£ cá»‘ Ä‘á»‹nh): máº«u Ä‘Æ°á»£c kÃ©o báº±ng CÃ™NG thÆ°á»›c kÃ©o vá»›i mÃ u máº«u, pha trong CÃ™NG loáº¡i base vá»›i máº«u, trÃªn GIáº¤Y TRáº®NG cÃ¹ng loáº¡i. 

THÃ€NH PHáº¦N (má»—i dÃ²ng lÃ  % mÃ u pha trong base; tá»•ng r3   z%):
r@   u-   

Dá»° Ä�OÃ�N TRÆ¯á»šC Ä�Ã“ Cá»¦A Báº N: hex r½   r   u    Â· L* r¾   u    Â· a* r¿   u    Â· b* rÀ   u    (phÆ°Æ¡ng phÃ¡p: r;   rK   u   )

áº¢NH THá»°C Táº¾: `anh/Úanh_thuc_teu«  ` (áº£nh mÃ u há»—n há»£p do chá»§ nhÃ¢n chá»¥p). HÃ£y Ä�á»ŒC MÃ€U tá»« áº£nh báº±ng thá»‹ giÃ¡c cá»§a báº¡n: láº¥y vÃ¹ng mÃ u thá»±c cá»§a mÃ ng/há»—n há»£p, trÃ¡nh ná»�n giáº¥y tráº¯ng, trÃ¡nh vÃ¹ng lÃ³e sÃ¡ng; náº¿u áº£nh cÃ³ nhiá»�u vá»‡t thÃ¬ láº¥y trung bÃ¬nh vÃ  nÃ³i rÃµ.

NHIá»†M Vá»¤:
1. Ä�á»�c mÃ u thá»±c táº¿ tá»« áº£nh: hex, L*, a*, b* + má»©c tin cáº­y + mÃ´ táº£ (Ä‘á»™ trong/Ä‘á»¥c, bÃ³ng, cÃ³ háº¡tâ€¦).
2. TÃ­nh **Î”E** giá»¯a dá»± Ä‘oÃ¡n vÃ  thá»±c táº¿ (nÃªu cÃ´ng thá»©c báº¡n dÃ¹ng: CIE76 hay CIEDE2000) â€” trÃ¬nh bÃ y cáº£ sá»‘ cá»§a tá»«ng thÃ nh pháº§n mÃ u Ä‘á»ƒ kiá»ƒm chá»©ng Ä‘Æ°á»£c.
3. Giáº£i thÃ­ch nguyÃªn nhÃ¢n lá»‡ch (náº¿u cÃ³): mÃ u nÃ o trong há»—n há»£p Ä‘ang máº¡nh/yáº¿u hÆ¡n giáº£ Ä‘á»‹nh, áº£nh hÆ°á»Ÿng cá»§a Ä‘á»™ phá»§/Ä‘á»™ má»�, sai sá»‘ do áº£nhâ€¦
4. **Ä�á»€ XUáº¤T HIá»†U CHá»ˆNH CSDL**: vá»›i Tá»ªNG mÃ u trong há»—n há»£p, Ä‘á»� xuáº¥t **há»‡ sá»‘ cÆ°á»�ng Ä‘á»™ má»›i** (sá»‘ thá»±c, 1.0 = giá»¯ nguyÃªn; >1 = mÃ u nÃ y máº¡nh hÆ¡n giáº£ Ä‘á»‹nh nÃªn giáº£m tá»‰ lá»‡ dÃ¹ng, <1 = yáº¿u hÆ¡n nÃªn tÄƒng tá»‰ lá»‡) + lÃ½ do ngáº¯n. Náº¿u Î”E nhá»� (< 2) thÃ¬ nÃ³i rÃµ KHÃ”NG cáº§n hiá»‡u chá»‰nh.

YÃŠU Cáº¦U Ä�á»ŠNH Dáº NG: viáº¿t tá»‡p **`rz   úDOI_CHIEU.mdu6  `** (Ä‘Æ°á»�ng dáº«n TUYá»†T Ä�á»�I nÃ y, tiáº¿ng Viá»‡t, gá»�n) vÃ  **káº¿t thÃºc báº±ng má»™t khá»‘i ```json** Ä‘Ãºng dáº¡ng:
```json
{"thuc_te": {"hex": "#RRGGBB", "L": 0.0, "a": 0.0, "b": 0.0}, "tin_cay": "cao/trung binh/thap",
 "delta_E": 0.0, "cong_thuc_delta_E": "CIEDE2000", "ket_luan": "â€¦",
 "hieu_chinh": [{"ma": "MA_MÃ€U", "ti_le": 60.0, "he_so_cu": 1.0, "he_so_moi": 1.12,
                 "lab_moi": {"L": 0.0, "a": 0.0, "b": 0.0, "hex": "#RRGGBB"}, "ly_do": "â€¦"}]}
```
Trong Ä‘Ã³ `he_so_moi` = há»‡ sá»‘ cÆ°á»�ng Ä‘á»™ Má»šI cá»§a mÃ u Ä‘Ã³ (1.0 = giá»¯ nguyÃªn; >1 = mÃ u máº¡nh hÆ¡n giáº£ Ä‘á»‹nh â‡’ láº§n sau dÃ¹ng Ã­t láº¡i; <1 = yáº¿u hÆ¡n â‡’ dÃ¹ng nhiá»�u hÆ¡n), vÃ  `lab_moi` = mÃ u cá»§a CHÃ�NH mÃ u Ä‘Ã³ sau khi hiá»‡u chá»‰nh (Ä‘á»ƒ lÆ°u vÃ o CSDL B).
Káº¿t thÃºc tá»‡p báº±ng dÃ²ng HOAN TAT.)r'   r(   r   rô   r)   rY   rZ   Úbasename)r   rõ   Údu_doanr*   rk   r$   r¡   s          r   Úprompt_doi_chieurý   ü   s  € Ý	Œ�A�l”OÑ	$Ô	$€BØ€DØð bð bˆØ�FŠF�1�T”7‰OŒOÐ!˜rˆØ�ŠˆØ—u’u˜U A d¤GÑ,Ô,Ð,Ð,¨a°¬g¨g¨g°q¸´z°z°zÀ1Ç5Â5ÐIYÐ[^ÑC_ÔC_ÐC_ðañ 	bô 	bð 	bð 	bðbð. ;<¸L¼/¸/¸/È4Ï9Ê9ÐUYÉ?Ì?È?È?Ø18·²¸UÀBÑ1GÔ1GÐ1GÐ1GÈÏÊÐUXÐZ\ÑI]ÔI]ÐI]ÐI]Ð_f×_jÒ_jÐknÐprÑ_sÔ_sÐ_sÐ_sÐu|÷  vAò  vAð  BEð  GIñ  vJô  vJð  vJð  vJØ18·²¸]ÈBÑ1OÔ1OÐPTÐQTÐPTÔ1UÐ1UÐ1UÕWYÔW^×WgÒWgÐhiÐjwÔhxÐh~Ð|~ÑWÔWÐWÐWõ  BDô  BI÷  BNò  BNð  OPð  QZô  O[ð  ]kñ  Blô  Blð  Blð  Blð+mð nr&   c                 óì   — | d         }t           j                             | d         d¦  «        }t          |t	          | |¦  «        |d¦  «        \  }}}|sd |dfS t          |d¦  «        }|sd |dfS ||dfS )Nrz   ró   z_log_du_doan.txtu$   AGY khÃ´ng táº¡o Ä‘Æ°á»£c DU_DOAN.mdrü   u.   khÃ´ng Ä‘á»�c Ä‘Æ°á»£c khá»‘i JSON dá»± Ä‘oÃ¡nr   )rY   rZ   r)   rä   r÷   rê   )r   rõ   r    r.   Útr£   rè   rã   s           r   Úxu_ly_buoc_pr     s�   € Ø	ˆ)Œ€AÝ
Œ�Š�Q�y”\ <Ñ0Ô0€AÝ˜�N¨1¨bÑ1Ô1°1Ð6HÑIÔI�I€A€rˆ2Øð ?Ø�QÐ>Ð>Ð>Ý�2�yÑ!Ô!€AØð IØ�QÐHÐHÐHØˆa�ˆ8€Or&   c                 óî   — | d         }t           j                             | d         d¦  «        }t          |t	          | ||¦  «        |d¦  «        \  }}}|sd |dfS t          |d¦  «        }|sd |dfS ||dfS )Nrz   rú   z_log_doi_chieu.txtu&   AGY khÃ´ng táº¡o Ä‘Æ°á»£c DOI_CHIEU.mdÚthuc_teu1   khÃ´ng Ä‘á»�c Ä‘Æ°á»£c khá»‘i JSON Ä‘á»‘i chiáº¿ur   )rY   rZ   r)   rä   rý   rê   )	r   rõ   rü   r    r.   rÿ   r£   rè   rã   s	            r   Úxu_ly_buoc_cr  '  s“   € Ø	ˆ)Œ€AÝ
Œ�Š�Q�y”\ >Ñ2Ô2€AÝ˜Õ,¨Q°°GÑ<Ô<¸aÐAUÑVÔV�I€A€rˆ2Øð AØ�QÐ@Ð@Ð@Ý�2�yÑ!Ô!€AØð LØ�QÐKÐKÐKØˆa�ˆ8€Or&   c                 óº  — |                       ¦   «         }|                     d|f¦  «                             ¦   «         sdd|z  gfS |                     d|f¦  «                             ¦   «         }|sddgfS g }|D �]]\  }}}}}	}
}}d}|
r£	 t	          j        |
¦  «        }d|                     d¦  «        ›d	|                     d
¦  «        ›d|                     d¦  «        ›|                     d¦  «        rd|d         z   nd›�}n'# t          $ r t          |
¦  «        dd…         }Y nw xY w|                     dt          |	¦  «        t          j        d¦  «        |pddt          j        d¦  «        ›d|›d|›d|	›|rd|z   nd›�	|f¦  «         |                     dt          j        d¦  «        |f¦  «         |                     |›d|›d|	›�¦  «         �Œ_|                     d|f¦  «         |                     dt          j        d¦  «        d|z  dd                     |¦  «        z   d z   d!f¦  «         |                      ¦   «          	 |                     d"|f¦  «                             ¦   «         }t          | |d#d$„ |D ¦   «         ¦  «         n/# t          $ r"}|                     d%|z  ¦  «         Y d}~nd}~ww xY wt!          d&„ |D ¦   «         ¦  «        |fS )'um   GHI hiá»‡u chá»‰nh cá»§a há»—n há»£p `hid` vÃ o CSDL B â€” CHá»ˆ gá»�i sau khi Ä‘Ã£ xÃ¡c nháº­n máº­t kháº©u.z SELECT 1 FROM hon_hop WHERE id=?r   ro   z�SELECT id,mau_id,mau_ten,gia_tri_cu,gia_tri_moi,lab_moi,ly_do,delta_E_truoc FROM hieu_chinh_mau WHERE hon_hop_id=? AND da_ap_dung=0 ORDER BY idu4   khÃ´ng cÃ³ Ä‘á»� xuáº¥t nÃ o Ä‘ang chá»� xÃ¡c nháº­nr   zL* r¾   r7   r¿   r9   rÀ   r½   r   Nr€   z¸UPDATE mau SET he_so_cuong_do=?, so_lan_hieu_chinh=COALESCE(so_lan_hieu_chinh,0)+1,
                     ngay_hieu_chinh=?, lab_hieu_chinh=?, ghi_chu=COALESCE(ghi_chu,'')||? WHERE id=?r~   z | HC z%d/%mu    (há»—n há»£p #u   ): há»‡ sá»‘ u   â†’u   ; mÃ u sau HC: z9UPDATE hieu_chinh_mau SET da_ap_dung=1, ngay=? WHERE id=?rF   z8UPDATE hon_hop SET trang_thai='da_hieu_chinh' WHERE id=?r}   u3   Ã�p dá»¥ng hiá»‡u chá»‰nh mÃ u tá»« há»—n há»£p #%su>   Ä�Ã£ ghi thÃ´ng sá»‘ hiá»‡u chá»‰nh vÃ o CSDL B (báº£ng mau): rì   uƒ   . Ä�iá»�u kiá»‡n: cÃ¹ng thÆ°á»›c kÃ©o Â· cÃ¹ng base Â· giáº¥y tráº¯ng cÃ¹ng loáº¡i. XÃ¡c nháº­n báº±ng máº­t kháº©u hiá»‡u chá»‰nh.u%   chá»§ nhÃ¢n xÃ¡c nháº­n qua app CALIBzšSELECT id,mau_id,mau_ten,gia_tri_cu,gia_tri_moi,ly_do,da_ap_dung,lab_moi,delta_E_truoc FROM hieu_chinh_mau WHERE hon_hop_id=? AND da_ap_dung=1 ORDER BY idrs   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rV   r©   r"   s     r   r]   zap_dung.<locals>.<listcomp>Y  s   € Ð"8Ð"8Ð"8°¥5¨¡8¤8Ð"8Ð"8Ð"8r&   u$   chÆ°a gá»­i Ä‘Æ°á»£c thÃ´ng bÃ¡o: %sc                 ó   — g | ]}d |v ¯|‘Œ	S )u	   há»‡ sá»‘rV   r"   s     r   r]   zap_dung.<locals>.<listcomp>\  s"   € Ð2Ð2Ð2�a °Ð!1Ð!1�Ð!1Ð!1Ð!1r&   )rÊ   r„   r…   r­   r'   r(   r   r   rL   Úfloatra   rb   rô   r)   r‡   r¤   r`   )r˜   re   rB   ÚrowsÚmoÚhcidÚmidrÃ   ÚcuÚmoiÚlab_moiÚly_dor®   Úlab_txtrÑ   r   s                   r   Úap_dungr  3  s‰  € à�
Š
‰Œ€AØ�9Š9Ð7¸#¸Ñ@Ô@×IÒIÑKÔKð :ØÐ2°SÑ8Ð9Ð9Ð9Ø�9Š9ð GØILÈñPô PßPXÒPXÑPZÔPZð 	àð KØÐIÐJÐJÐJØ	€BØ7;ð <ñ <Ñ3ˆˆc�3˜˜C ¨%°ØˆØð 	-ð-Ý”J˜wÑ'Ô'��Ø78·u²u¸S±z´z°z°zÀ1Ç5Â5ÈÁ:Ä:À:À:ÈqÏuÊuÐUXÉzÌzÈzØMNÏUÊUÐSXÉ\Ì\Ð6a°vÀÀ%ÄÑ7HÐ7HÐ_aÐ6aðc��øåð -ð -ð -Ý˜g™,œ, t¨ tÔ,���ð-øøøà	�	Š	ð hå˜‘:”:�tœ}Ð-=Ñ>Ô>ÀÀÈ4øÝHLÌÐV]ÑH^ÔH^ÐH^ÐH^Ð`cÐ`cÐ`cÐegÐegÐegÐilÐilØ_fÐ>nÐ?PÐSZÑ?ZÐ?ZÐlnÐ>nðpàðñ	ô 	ð 	ð 	
�	Š	ÐMÕPTÔP]Ð^nÑPoÔPoÐquÐOvÑwÔwÐwØ
�	Š	¨S¨S¨S°"°"°"°c°cÐ:Ñ;Ô;Ð;Ñ;Ø‡I‚IÐHÈ3È&ÑQÔQÐQØ‡I‚IÐOÝŒ}Ð-Ñ.Ô.Ð0eÐhkÑ0kØOÐRV×R[ÒR[Ð\^ÑR_ÔR_Ñ_ð UñUà6ð8ñ9ô 9ð 9ð
 ‡J‚J�L„L€Lð>Ø�YŠYð ]Ø_bÐ^dñfô fßfnÒfnÑfpÔfpð 	å��c˜5Ð"8Ð"8°RÐ"8Ñ"8Ô"8Ñ9Ô9Ð9Ð9øÝð >ð >ð >Ø
�	Š	Ð8¸1Ñ<Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=øøøøð>øøøåÐ2Ð2˜2Ð2Ñ2Ô2Ñ3Ô3°RÐ7Ð7s,   ÂA:DÄ!D*Ä)D*ÉAJ Ê
J?ÊJ:Ê:J?c                  ó:  ‡— dt           j        v } t          dt          j        d¦  «        ›dt
          ›| rdnd›�¦  «         	 t          ¦   «         }t          j        |_	        | 
                    d¦  «                             ¦   «         }d	}|s)| 
                    d
¦  «                             ¦   «         }d}|s(| rt          d¦  «         d S t          j        d¦  «         Œžt          |¦  «        }t          |d|d         z  |dk    rdnd¦  «         |                     ¦   «          t!          ¦   «         }t#          j        |d         pd¦  «        }t          d|d         t'          |¦  «        |fz  ¦  «         d }	 |dk    �r>t)          ||¦  «        \  Š}}	|	r| 
                    d|	|d         f¦  «         në‰                     di ¦  «        }
| 
                    d|
                     d¦  «        |
                     d¦  «        |
                     d¦  «        |
                     d¦  «        t#          j        ˆfd„dD ¦   «         d¬¦  «        t          j        d ¦  «        t.          j                             |d!         d"¦  «        t5          |d#¦  «        |d         f	¦  «         t          d$|	sd%n|	|fz  ¦  «         |	sd&}�nt7          ||t#          j        |d'         pd(¦  «        |d)         |d*         |d+         |d,         d-œz  ¦  «        \  Š}}	|	r | 
                    d|	|d         f¦  «         �nŸ‰                     d.i ¦  «        }| 
                    d/|                     d¦  «        |                     d¦  «        |                     d¦  «        |                     d¦  «        ‰                     d0¦  «        ‰                     d1¦  «        pdd d2…         t          j        d ¦  «        t.          j                             |d!         d3¦  «        t5          |d#¦  «        |d         f
¦  «         d4}‰                     d5¦  «        pg D �]^}|                     d6¦  «        pd                     ¦   «         }|                     |¦  «        }|sŒD|                     d7¦  «        }|d8v rŒ^|                     d9¦  «        }| 
                    d:t          j        d;¦  «        |d         |d<         |d         d=t;          |d=         ¦  «        t;          |¦  «        |                     d>¦  «        pdd d?…         ‰                     d0¦  «        d@|d         ›dAt.          j                             |dB         pd¦  «        ›dC�|rt#          j        |d¬¦  «        nd |dB         f¦  «         |d#z  }�Œ`t          dD‰                     d0¦  «        ||fz  ¦  «         dE}|                     ¦   «          |rmg }|dEk    r9dF„ | 
                    dG|d         f¦  «                             ¦   «         D ¦   «         }tA          ||d         ||¦  «         |                     ¦   «          nw# tB          $ rj}| 
                    d|›dHtE          j#        ¦   «         dId …         ›�|d         f¦  «         |                     ¦   «          t          dJ|¦  «         Y d }~nd }~ww xY wt          |dd¦  «         |                     ¦   «          | $                    ¦   «          | rd S t          j        dK¦  «         �ŒÚ)LNz	--mot-lanu   WORKER CALIB báº¯t Ä‘áº§u z%H:%M:%Sz	 | model u    (1 lÆ°á»£t)r   TzwSELECT * FROM hon_hop WHERE trang_thai='da_du_doan' AND anh_thuc_te IS NOT NULL AND anh_thuc_te<>'' ORDER BY id LIMIT 1ÚCzHSELECT * FROM hon_hop WHERE trang_thai='cho_du_doan' ORDER BY id LIMIT 1ÚPu   khÃ´ng cÃ³ viá»‡c chá»�é   u   Há»—n há»£p #%sr-   u   P (dá»± Ä‘oÃ¡n)u   C (Ä‘á»‘i chiáº¿u)r   r   u3   â†’ há»—n há»£p #%s | %d thÃ nh pháº§n | bÆ°á»›c %sz#UPDATE hon_hop SET loi=? WHERE id=?rü   zÚUPDATE hon_hop SET trang_thai='da_du_doan', du_doan_hex=?, du_doan_L=?, du_doan_a=?, du_doan_b=?,
                                   du_doan_ghi_chu=?, du_doan_luc=?, du_doan_file=?, du_doan_giay=?, loi=NULL WHERE id=?r½   r¾   r¿   rÀ   c                 ó<   •— i | ]}|‰                      |¦  «        “ŒS rV   r!   )r#   r\   rã   s     €r   ú
<dictcomp>zmain.<locals>.<dictcomp>‚  s%   ø€ Ð,yÐ,yÐ,y¸Q¨Q°·²°a±´Ð,yÐ,yÐ,yr&   )r;   r=   r>   Fr×   rµ   rz   ró   rE   u      bÆ°á»›c P: %s (%.0fs)Úxongr.   r/   r0   r4   r6   r8   r:   )r½   r¾   r¿   rÀ   r  zæUPDATE hon_hop SET trang_thai='cho_xac_nhan', thuc_te_hex=?, thuc_te_L=?, thuc_te_a=?, thuc_te_b=?,
                                   delta_E=?, ket_luan=?, doi_chieu_luc=?, doi_chieu_file=?, doi_chieu_giay=?, loi=NULL WHERE id=?rM   rS   iÜ  rú   r   Ú
hieu_chinhr   Ú	he_so_moi)Nr   r  a  INSERT INTO hieu_chinh_mau (ngay,mau_id,mau_ten,hon_hop_id,tham_so,gia_tri_cu,gia_tri_moi,
                                       ly_do,delta_E_truoc,nguon,da_ap_dung,lab_moi,nguon_anh)
                                       VALUES (?,?,?,?,?,?,?,?,?,?,0,?,?)r~   rÃ   rÅ   r  iX  u    AGY Ä‘á»‘i chiáº¿u há»—n há»£p #r1   rù   r2   uX      bÆ°á»›c C: Î”E=%s Â· Ä�á»€ XUáº¤T hiá»‡u chá»‰nh %d mÃ u (chá»� máº­t kháº©u) (%.0fs)rB   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rV   r©   r"   s     r   r]   zmain.<locals>.<listcomp>¬  s0   € ð wð wð w q�% ™(œ(ð wð wð wr&   zšSELECT id,mau_id,mau_ten,gia_tri_cu,gia_tri_moi,ly_do,da_ap_dung,lab_moi,delta_E_truoc FROM hieu_chinh_mau WHERE hon_hop_id=? AND da_ap_dung=0 ORDER BY idr@   i¨ýÿÿu	      Lá»–I:rJ   )%Úsysrž   rˆ   ra   rb   rÚ   r«   r�   r‚   rƒ   r„   r…   Úsleepr†   r¸   r‡   rÒ   r'   r(   r`   r   r   rÜ   rY   rZ   r)   Úroundr  r   rL   rû   r­   r¤   r   Ú	tracebackÚ
format_excr¬   )Úmot_lanr˜   r™   r·   r   rõ   ÚhvÚbao_loairÿ   ÚloiÚddri   Ún_hcÚhcr   r¡   Úhs_moir  r®   r   rã   s                       @r   Úmainr)  _  só  ø€ Ø�SœXÐ%€GÝ	€E½¼ÀzÑ9RÔ9RÐ9RÐ9RÕTYÐTYÐmtÐ[|Ð[iÐ[iÐz|Ð[|Ð
}Ñ~Ô~Ð~ðXÝ‰hŒhˆÝ!œ+ˆŒà�KŠKð  Rñ  Sô  S÷  \ò  \ñ  ^ô  ^ˆØˆØð 	Ø—’ÐfÑgÔg×pÒpÑrÔrˆAØˆDØð 	Øð ÝÐ/Ñ0Ô0Ð0Ø�ÝŒJ�r‰NŒNˆNØÝ�‰GŒGˆÝˆSÐ# a¨¤gÑ-ÀDÈCÂKÀKÐ/@Ð/@ÐUiÑjÔjÐjØ�
Š
‰ŒˆÝ‰\Œ\ˆÝŒZ˜˜,œÐ/¨4Ñ0Ô0ˆÝÐCÀqÈÄwÕPSÐTVÑPWÔPWÐY]ÐF^Ñ^Ñ_Ô_Ð_Øˆð<	"Ø�sŠ{‰{Ý(¨¨BÑ/Ô/‘	��1�cØð FØ—K’KÐ EÈÈQÈtÌWÀ~ÑVÔVÐVÐVàŸš˜y¨"Ñ-Ô-�BØ—K’Kð !|à!#§¢¨¡¤°·²°s±´¸R¿VºVÀC¹[¼[È"Ï&Ê&ÐQTÉ+Ì+Ý!%¤Ð,yÐ,yÐ,yÐ,yÐBxÐ,yÑ,yÔ,yð  INð  "Oñ  "Oô  "OÝ!%¤Ð/BÑ!CÔ!CÅRÄWÇ\Â\ÐRSÐT]ÔR^Ð`lÑEmÔEmÕotÐuvÐxyÑozÔozÐ|}ð  Cô  }Dð!EñFô Fð Fõ
 Ð0À#Ð4N°F°FÈ3ÐPQÐ3RÑRÑSÔSÐSØð #Ø"�Hùå(¨¨Bµ´
¸1Ð=NÔ;OÐ;WÐSWÑ0XÔ0XÐcdÐerÔcsÐz{ð  }Hô  {Ið  PQð  R]ô  P^ð  efð  grô  esð  \tð  \tñ  1tñ  uô  u‘	��1�cØð #Ø—K’KÐ EÈÈQÈtÌWÀ~ÑVÔVÐVÑVàŸš˜y¨"Ñ-Ô-�BØ—K’Kð !Fà!#§¢¨¡¤°·²°s±´¸R¿VºVÀC¹[¼[È"Ï&Ê&ÐQTÉ+Ì+ÐWX×W\ÒW\Ð]fÑWgÔWgØ"#§%¢%¨
Ñ"3Ô"3Ð"9°r¸5¸D¸5Ô!AÅ4Ä=ÐQdÑCeÔCeÝ!#¤§¢¨a°	¬l¸NÑ!KÔ!KÍUÐSTÐVWÉ[Ì[ÐZ[Ð\`ÔZað!cñdô dð dð �DØ Ÿušu \Ñ2Ô2Ð8°bð "ñ "˜Ø Ÿfšf T™lœlÐ0¨b×7Ò7Ñ9Ô9˜ØŸFšF 2™JœJ˜Ø ð %Ø$Ø!#§¢¨Ñ!4Ô!4˜Ø! ZÐ/Ð/Ø$Ø"$§&¢&¨Ñ"3Ô"3˜ØŸšð %Mõ &*¤]Ð3CÑ%DÔ%DÀaÈÄgÈqÐQVÌxÐYZÐ[_ÔY`ÐbrÝ%(¨Ð+;Ô)<Ñ%=Ô%=½sÀ6¹{¼{ÈRÏVÊVÐT[É_Ì_ÐMbÐ`bÐdhÐehÐdhÔLiÐkl×kpÒkpÐqzÑk{Ôk{Ðk{ØRSÐTXÔRYÐRYÐRYÕ[]Ô[b×[kÒ[kÐlmÐn{Ôl|ð  mCð  ACñ  \Dô  \Dð  \Dð  \Dð  &EØPWÐ%a¥T¤Z°ÀeÐ%LÑ%LÔ%LÐ%LÐ]aØ%& }Ô%5ð	%7ñ8ô 8ð 8ð  ™	˜™ÝÐtÐxy×x}Òx}ð  Hñ  yIô  yIð  KOð  QRð  xSñ  Sñ  Tô  Tð  TØ"�HØ�JŠJ‰LŒLˆLØð Ø�Ø˜s’?�?ðwð w¨C¯KªKð^Ø`aÐbfÔ`gÐ_iñ-kô -kçksÒksÑkuÔkuðwñ wô w�Bõ ˜˜a œg x°Ñ4Ô4Ð4Ø—
’
‘”�øøÝð 	"ð 	"ð 	"Ø�KŠKÐ=ÈAÈAÈAÍyÔOcÑOeÔOeÐfjÐfkÐfkÔOlÐOlÐ@mÐopÐquÔovÐ?wÑxÔxÐxØ�JŠJ‰LŒLˆLÝ�+˜qÑ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!øøøøð	"øøøõ 	ˆS�"�bÑÔÐØ�
Š
‰ŒˆØ�	Š	‰ŒˆØð 	ØˆFÝŒ
�1‰ŒˆñqXs   Å:SY Ù
[ÙA [Û[Ú__main__)N)+Ú__doc__r'   rY   r“   Úshutilr�   r‹   r  ra   r  r�   r³   rZ   r)   r�   rÙ   rÛ   rÚ   Ú
executablerŠ   r^   r   Ú
expandvarsr‰   r‘   r   r+   rl   r¤   r¯   ÚNHPr«   r¸   rÒ   rä   rê   r÷   rý   r   r  r  r)  Ú__name__rV   r&   r   ú<module>r1     sX  ððð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FàB€Ø@€Ø	„w‡|‚|�C˜Ñ Ô €Ø5€Ø
0€Ø€Ø„^€Ø?€
ØŒG�LŠL˜˜oÑ.Ô.€	ØŒg�lŠl˜2œ7×-Ò-Ð.?Ñ@Ô@À(ÈHÐV]Ø/°Ð<RñTô T€à €„ˆD˜4Ð  Ñ  Ô  Ð  ðð ð ðcð cð cð
0?ð 0?ð 0?ð 0?ðf+ð +ð +ð +ð\ð ð ð( €ðð ð ðlð lð lðð ð ð uð uð uð"	ð 	ð 	ð^ð ^ð ^ð8nð nð nð>	ð 	ð 	ð	ð 	ð 	ð)8ð )8ð )8ðX[ð [ð [ð| ˆzÒÐØ€D�F„F€F€F€Fð Ðr&   