§
    t�’j©  ã                  óª   — d Z ddlmZ ddlmZ d.d„Zd/d
„Zd0d„Zd1d„Zd2d„Z	d2d„Z
d2d„Zd2d„Zd3d„Zd.d„Zd4d„Zd5d„Zd6d%„Zd7d'„Zd8d)„Zd9d+„Zd:d,„Zd-S );u2   CÃ¡c hÃ m nhá»� dÃ¹ng chung cho operational state.é    )Úannotations)ÚAnyÚvaluer   Úreturnúlist[dict[str, Any]]c                óH   — t          | t          ¦  «        rd„ | D ¦   «         S g S )u   Ã‰p vá»� list dict an toÃ n.c                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS © ©Ú
isinstanceÚdict©Ú.0Úitems     úDC:\Projects\DSCons\app\services\company_operational_state\helpers.pyú
<listcomp>zensure_list.<locals>.<listcomp>   ó'   € ÐAÐAÐA˜­*°T½4Ñ*@Ô*@ÐA�ÐAÐAÐAó    )r   Úlist©r   s    r   Úensure_listr      s.   € å�%�ÑÔð BØAÐA ÐAÑAÔAÐAØ€Ir   údict[str, Any]c                ó4   — t          | t          ¦  «        r| S i S )u   Ã‰p vá»� dict an toÃ n.r   r   s    r   Úensure_dictr      s   € å�%�ÑÔð ØˆØ€Ir   Úpartsc                 óh   — i }| D ],}t          |t          ¦  «        r|                     |¦  «         Œ-|S )u   Gá»™p metadata theo thá»© tá»±.)r   r   Úupdate)r   ÚmergedÚparts      r   Úmerge_metadatar       s@   € à€FØð  ð  ˆÝ�d�DÑ!Ô!ð 	 Ø�MŠM˜$ÑÔÐøØ€Mr   ú	list[str]c                óÄ   — t          | t          ¦  «        rd„ | D ¦   «         S t          | t          ¦  «        r)|                      ¦   «         r|                      ¦   «         gS g S )u'   Láº¥y danh sÃ¡ch chuá»—i khÃ´ng rá»—ng.c                ór   — g | ]4}t          |pd ¦  «                             ¦   «         ¯%t          |¦  «        ‘Œ5S ©Ú ©ÚstrÚstripr   s     r   r   z'extract_string_list.<locals>.<listcomp>"   s9   € ÐGÐGÐG˜d­s°4°:¸2©¬×/DÒ/DÑ/FÔ/FÐG•�D‘	”	ÐGÐGÐGr   )r   r   r'   r(   r   s    r   Úextract_string_listr)      s_   € å�%�ÑÔð HØGÐG eÐGÑGÔGÐGÝ�%�ÑÔð  %§+¢+¡-¤-ð Ø—’‘”ˆÐØ€Ir   Úboolc                ót   — t          | pd¦  «                             ¦   «                              ¦   «         }|dv S )u   Kiá»ƒm tra má»©c Ä‘á»™ cao.r%   >   õ   nghiÃªm trá»�ngÚcaoÚhighÚcritical©r'   r(   Úlower©r   Ú
normalizeds     r   Úis_high_severityr4   (   s7   € å�U�[˜bÑ!Ô!×'Ò'Ñ)Ô)×/Ò/Ñ1Ô1€JØÐGÐGÐGr   c                ót   — t          | pd¦  «                             ¦   «                              ¦   «         }|dvS )u#   Kiá»ƒm tra tráº¡ng thÃ¡i cÃ²n má»Ÿ.r%   >	   õ   Ä‘Ã³ngr%   ÚclosedÚwaivedÚacceptedÚrejectedÚresolvedÚverifiedÚ	cancelledr0   r2   s     r   Úis_open_statusr>   .   s=   € å�U�[˜bÑ!Ô!×'Ò'Ñ)Ô)×/Ò/Ñ1Ô1€JØð 
ð 
ð 
r   c                ót   — t          | pd¦  «                             ¦   «                              ¦   «         }|dv S )u*   Kiá»ƒm tra assignment cÃ²n cáº§n xá»­ lÃ½.r%   >   ÚoverdueÚpendingr9   ÚreturnedÚ	submittedÚin_progressr0   r2   s     r   Úis_assignment_openrE   >   s=   € å�U�[˜bÑ!Ô!×'Ò'Ñ)Ô)×/Ò/Ñ1Ô1€JØð ð ð r   c                ót   — t          | pd¦  «                             ¦   «                              ¦   «         }|dvS )u(   Kiá»ƒm tra dá»± Ã¡n cÃ²n hoáº¡t Ä‘á»™ng.r%   >   õ   Ä‘Ã£ Ä‘Ã³ngõ   hoÃ n thÃ nhr%   r7   r=   Ú	completedr0   r2   s     r   Úis_active_projectrJ   K   s=   € å�U�[˜bÑ!Ô!×'Ò'Ñ)Ô)×/Ò/Ñ1Ô1€JØð ð ð r   ÚseverityÚimpact_levelÚis_blockingr'   c                ó   — t          | pd¦  «                             ¦   «                              ¦   «         }t          |pd¦  «                             ¦   «                              ¦   «         }t          |¦  «        s|dv s|dv rdS |dv s|dv rdS dS )u   Suy ra Ä‘á»™ Æ°u tiÃªn.r%   >   r.   r/   r.   >   ÚmediumÚmoderaterO   Úlow)r'   r(   r1   r*   )rK   rL   rM   Únormalized_severityÚnormalized_impacts        r   Úderive_priorityrT   X   s¯   € å˜h˜n¨"Ñ-Ô-×3Ò3Ñ5Ô5×;Ò;Ñ=Ô=ÐÝ˜LÐ.¨BÑ/Ô/×5Ò5Ñ7Ô7×=Ò=Ñ?Ô?Ðåˆ[ÑÔðàÐ"6Ð6Ð6ØÐ 4Ð4Ð4àˆvØÐ4Ð4Ð4Ð8Ið Nð 9ð 9ð ˆxØˆ5r   c                óø   — t          | t          ¦  «        r| gS t          | t          ¦  «        rd„ | D ¦   «         S t          | t          ¦  «        r+|                      ¦   «         rd|                      ¦   «         igS g S )u,   Chuáº©n hÃ³a raw follow-up thÃ nh list dict.c                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS r
   r   r   s     r   r   z*coerce_follow_up_items.<locals>.<listcomp>o   r   r   Útitle)r   r   r   r'   r(   r   s    r   Úcoerce_follow_up_itemsrX   j   s~   € å�%�ÑÔð ØˆwˆÝ�%�ÑÔð BØAÐA ÐAÑAÔAÐAÝ�%�ÑÔð * %§+¢+¡-¤-ð *Ø˜%Ÿ+š+™-œ-Ð(Ð)Ð)Ø€Ir   Úmessagesú
str | Nonec                 óL   — d„ | D ¦   «         }|sdS d                      |¦  «        S )u   Gá»™p message khÃ´ng rá»—ng.c                ó–   — g | ]F}t          |pd ¦  «                             ¦   «         ¯%t          |¦  «                             ¦   «         ‘ŒGS r$   r&   )r   Úmessages     r   r   z"merge_messages.<locals>.<listcomp>w   sG   € ÐXÐXÐX g½SÀÀÈBÑ=OÔ=O×=UÒ=UÑ=WÔ=WÐX�S�‰\Œ\×ÒÑ!Ô!ÐXÐXÐXr   Nz | )Újoin)rY   r   s     r   Úmerge_messagesr_   u   s4   € àXÐX°ÐXÑXÔX€EØð ØˆtØ�:Š:�eÑÔÐr   Úaction_payloadÚfindingc                óN  — t          |                      d¦  «        pd¦  «        }t          |                      d¦  «        pd¦  «        }t          |                     d¦  «        pd¦  «        }t          |                     d¦  «        pd¦  «        }|r||k    rdS |r||k    rdS dS )u+   Kiá»ƒm tra action cÃ³ trá»� Ä‘Ãºng finding.Ú
finding_idr%   Úfinding_codeFT)r'   Úget)r`   ra   Úpayload_finding_idÚpayload_finding_coderc   rd   s         r   Úaction_matches_findingrh   }   s·   € õ ˜^×/Ò/°Ñ=Ô=ÐCÀÑDÔDÐÝ˜~×1Ò1°.ÑAÔAÐGÀRÑHÔHÐÝ�W—[’[ Ñ.Ô.Ð4°"Ñ5Ô5€JÝ�w—{’{ >Ñ2Ô2Ð8°bÑ9Ô9€LØð Ð0°JÒ>Ð>ØˆuØð Ð 4¸Ò DÐ DØˆuØˆ4r   r   Ú	review_idrc   rd   Útrigger_phasec               óø  — |                       d¦  «        p>|                       d¦  «        p)|                       d¦  «        p|                       d¦  «        }t          |                       d¦  «        p|                       d¦  «        pd¦  «        }|p|› d|p|› d|› �t          |pd	¦  «        |                       d
¦  «        p|                       d¦  «        |                       d¦  «        p|                       d¦  «        |                       d¦  «        pd|                       d¦  «        pd|                       d¦  «        |                       d¦  «        p|                       d¦  «        |                       d¦  «        p|                       d¦  «        |                       d¦  «        pd|                       d¦  «        pd|                       d¦  «        p||                       d¦  «        |                       d¦  «        dœS )u   Chuáº©n hÃ³a payload follow-up.rW   ÚactionÚnext_actionÚnameÚreference_idÚ	action_idr%   ú:zFollow-up actionÚdescriptionÚnoteÚreasonÚsummaryÚpriorityrO   ÚstatusrA   Údue_dateÚdepartment_codeÚowner_department_codeÚowner_employee_codeÚemployee_codeÚaction_typeÚdossier_review_follow_upÚsource_typerj   ÚblockingrM   )ro   rW   rr   rt   rv   rw   rx   ry   r{   r}   r   rj   r€   rM   )re   r'   )r   ri   rc   rd   rj   rW   ro   s          r   Únormalize_follow_up_itemr�   Œ   sê  € ð 	�Š�ÑÔð 	Ø�8Š8�HÑÔð	à�8Š8�MÑ"Ô"ð	ð �8Š8�FÑÔð	 
õ �t—x’x Ñ/Ô/ÐN°4·8²8¸KÑ3HÔ3HÐNÈBÑOÔO€Là$ð GØÐFÐF˜*Ð4¨ÐFÐF°}ÐFÐFÝ�UÐ0Ð0Ñ1Ô1Ø—x’x Ñ.Ô.ÐB°$·(²(¸6Ñ2BÔ2BØ—(’(˜8Ñ$Ô$Ð;¨¯ª°Ñ(;Ô(;Ø—H’H˜ZÑ(Ô(Ð4¨HØ—(’(˜8Ñ$Ô$Ð1¨	Ø—H’H˜ZÑ(Ô(ØŸ8š8Ð$5Ñ6Ô6ð -Ø�8Š8Ð+Ñ,Ô,Ø#ŸxšxÐ(=Ñ>Ô>ð  %Ø�8Š8�OÑ$Ô$Ø—x’x Ñ.Ô.ÐLÐ2LØ—x’x Ñ.Ô.ÐLÐ2LØŸš /Ñ2Ô2ÐC°mØ—H’H˜ZÑ(Ô(Ø—x’x Ñ.Ô.ð#ð ð r   Úitemsc                óÐ  — g }t          ¦   «         }| D ]Ò}d                     t          |                     d¦  «        pd¦  «        t          |                     d¦  «        pd¦  «        t          |                     d¦  «        pd¦  «        t          |                     d¦  «        pd¦  «        g¦  «        }||v rŒ¨|                     |¦  «         |                     |¦  «         ŒÓ|S )u0   Loáº¡i trÃ¹ng follow-up theo khÃ³a á»•n Ä‘á»‹nh.ú|ro   r%   rW   r}   rj   )Úsetr^   r'   re   ÚaddÚappend)r‚   ÚdedupedÚseenr   Úidentitys        r   Údeduplicate_follow_up_itemsr‹   ±   sã   € à$&€GÝ‘U”U€DØð ð ˆØ—8’8å�D—H’H˜^Ñ,Ô,Ð2°Ñ3Ô3Ý�D—H’H˜WÑ%Ô%Ð+¨Ñ,Ô,Ý�D—H’H˜]Ñ+Ô+Ð1¨rÑ2Ô2Ý�D—H’H˜_Ñ-Ô-Ð3°Ñ4Ô4ð	ñ
ô 
ˆð �tÐÐØØ�Š�ÑÔÐØ�Š�tÑÔÐÐØ€Nr   Úkeyc                ó   — d| v sd| v rdS dS )u   Ä�oÃ¡n giai Ä‘oáº¡n tá»« key.ÚverificationÚverifyÚpost_verificationÚ
post_closer
   )rŒ   s    r   Úderive_trigger_phase_from_keyr’   Å   s    € à˜ÐÐ ¨C  Ø"Ð"Øˆ<r   r}   c                ó„   — t          | pd¦  «                             ¦   «                              ¦   «         }d|v sd|v rdS dS )u%   Ä�oÃ¡n giai Ä‘oáº¡n tá»« action type.r%   rŽ   r<   r�   r‘   r0   )r}   r3   s     r   Ú%derive_trigger_phase_from_action_typer”   Ì   sL   € å�[Ð& BÑ'Ô'×-Ò-Ñ/Ô/×5Ò5Ñ7Ô7€JØ˜Ð#Ð# z°ZÐ'?Ð'?Ø"Ð"Øˆ<r   c                óZ  — t          |                      d¦  «        pd¦  «                             ¦   «                              ¦   «         }|dv rdS t	          |                      d¦  «        ¦  «        s"t	          |                      d¦  «        ¦  «        rdS t          |                      d¦  «        pd¦  «                             ¦   «                              ¦   «         }t          |                      d	¦  «        pd¦  «                             ¦   «                              ¦   «         }|d
v pd|v S )u%   Kiá»ƒm tra follow-up cÃ³ lÃ  blocker.rw   r%   >   Údoner7   r9   r;   r<   rI   Fr€   rM   Trv   r}   >   r.   r/   Úblock)r'   re   r(   r1   r*   )r   rw   Únormalized_priorityÚnormalized_types       r   Úis_blocking_review_follow_uprš   Ô   s  € å�—’˜(Ñ#Ô#Ð) rÑ*Ô*×0Ò0Ñ2Ô2×8Ò8Ñ:Ô:€FØÐTÐTÐTØˆuÝˆD�HŠH�ZÑ Ô Ñ!Ô!ð ¥T¨$¯(ª(°=Ñ*AÔ*AÑ%BÔ%Bð ØˆtÝ˜dŸhšh zÑ2Ô2Ð8°bÑ9Ô9×?Ò?ÑAÔA×GÒGÑIÔIÐÝ˜$Ÿ(š( =Ñ1Ô1Ð7°RÑ8Ô8×>Ò>Ñ@Ô@×FÒFÑHÔH€OØÐ"6Ð6ÐT¸'À_Ð:TÐTr   N)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r!   )r   r   r   r*   )rK   r   rL   r   rM   r   r   r'   )rY   rZ   r   rZ   )r`   r   ra   r   r   r*   )r   r   ri   r'   rc   r'   rd   r'   rj   r'   r   r   )r‚   r   r   r   )rŒ   r'   r   r'   )r}   r   r   r'   )r   r   r   r*   )Ú__doc__Ú
__future__r   Útypingr   r   r   r    r)   r4   r>   rE   rJ   rT   rX   r_   rh   r�   r‹   r’   r”   rš   r
   r   r   ú<module>rž      s˜  ðØ 8Ð 8à "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðHð Hð Hð Hðð ð ð ð 
ð 
ð 
ð 
ð
ð 
ð 
ð 
ðð ð ð ð$ð ð ð ðð ð ð ðð ð ð ð"ð "ð "ð "ðJð ð ð ð(ð ð ð ðð ð ð ð	Uð 	Uð 	Uð 	Uð 	Uð 	Ur   