§
    ÔŸ’j=   ã                  ó†   — d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZ ddlmZmZmZmZ d1d„Zd2d"„Zd3d&„Zd4d(„Zd5d/„Zd0S )6é    )Úannotations)ÚAny)ÚCompanyOperationalBacklogItemÚCompanyOperationalBlockedItemÚCompanyOperationalProjectStateÚCompanyOperationalRiskItemÚCompanyOperationalSourceStatusÚ"CompanyOperationalStateSummaryItemÚCompanyOperationalSummaryÚ!CompanyOperationalWorkforceStatusé   )Úis_active_projectÚis_high_severityÚis_open_statusÚmerge_messagesÚprojectsú$list[CompanyOperationalProjectState]Úrisksú list[CompanyOperationalRiskItem]Úblocked_itemsú#list[CompanyOperationalBlockedItem]Úbacklogú#list[CompanyOperationalBacklogItem]Ú	workforcer   Úoperations_casesú	list[Any]Úoperations_actionsÚdossier_reviewsúlist[dict[str, Any]]Úreturnr   c                óô  — t          t          | ¦  «        t          d„ | D ¦   «         ¦  «        t          d„ |D ¦   «         ¦  «        t          d„ |D ¦   «         ¦  «        t          d„ |D ¦   «         ¦  «        t          |¦  «        t          |¦  «        t          d„ |D ¦   «         ¦  «        t          d„ |D ¦   «         ¦  «        t          d„ |D ¦   «         ¦  «        |j        |j        |j        |j        ¬¦  «        S )	u   Táº¡o summary chÃ­nh.c              3  óB   K  — | ]}t          |j        ¦  «        ¯d V — ŒdS ©r   N)r   Ústatus©Ú.0Úitems     úMC:\Projects\DSCons\app\services\company_operational_state\builders_summary.pyú	<genexpr>z build_summary.<locals>.<genexpr>&   s2   è è € ÐUÐU $Õ6GÈÌÑ6TÔ6TÐU˜AÐUÐUÐUÐUÐUÐUó    c                ó*   — h | ]}|j         ¯	|j         ’ŒS © )Úproject_coder%   s     r(   ú	<setcomp>z build_summary.<locals>.<setcomp>(   s#   € ÐNÐNÐN 4¸DÔ<MÐNˆTÔÐNÐNÐNr*   c                óz   — h | ]8}|j         ¯	t          |j        ¦  «        ¯t          |j        ¦  «        ¯1|j         ’Œ9S r,   )r-   r   Úseverityr   r$   r%   s     r(   r.   z build_summary.<locals>.<setcomp>+   s\   € ð ð ð àØÔ$ðõ % T¤]Ñ3Ô3ð	õ
 # 4¤;Ñ/Ô/ðØÔ!ðð ð r*   c              3  óB   K  — | ]}t          |j        ¦  «        ¯d V — ŒdS r#   ©r   r$   r%   s     r(   r)   z build_summary.<locals>.<genexpr>3   s1   è è € ÐJÐJ˜T­n¸T¼[Ñ.IÔ.IÐJ�qÐJÐJÐJÐJÐJÐJr*   c              3  óB   K  — | ]}t          |j        ¦  «        ¯d V — ŒdS r#   )r   Úcurrent_statusr%   s     r(   r)   z build_summary.<locals>.<genexpr>6   sF   è è € ð 
ð 
Ø­n¸TÔ=PÑ.QÔ.Qð
Øð
ð 
ð 
ð 
ð 
ð 
r*   c              3  óB   K  — | ]}t          |j        ¦  «        ¯d V — ŒdS r#   r2   r%   s     r(   r)   z build_summary.<locals>.<genexpr>9   sE   è è € ð 
ð 
Øµ¸t¼{Ñ0KÔ0Kð
Øð
ð 
ð 
ð 
ð 
ð 
r*   c              3  ó®   K  — | ]P}t          |                     d ¦  «        pd¦  «                             ¦   «                              ¦   «         dv¯LdV — ŒQdS )r$   Ú >   ÚclosedÚ	cancelledr   N)ÚstrÚgetÚstripÚlowerr%   s     r(   r)   z build_summary.<locals>.<genexpr><   sw   è è € ð #
ð #
àÝ�4—8’8˜HÑ%Ô%Ð+¨Ñ,Ô,×2Ò2Ñ4Ô4×:Ò:Ñ<Ô<Ø*ð+ð +ð ð+ð +ð +ð +ð#
ð #
r*   )Útotal_projectsÚactive_projectsÚblocked_projectsÚhigh_risk_projectsÚ
open_risksÚblocked_items_countÚbacklog_items_countÚopen_cases_countÚopen_actions_countÚactive_review_sessionsÚemployees_activeÚemployees_blockedÚemployees_in_progressÚemployees_completed)r   ÚlenÚsumÚtotal_employees_activerI   rJ   rK   )r   r   r   r   r   r   r   r   s           r(   Úbuild_summaryrO      sQ  € õ %Ý˜8‘}”}ÝÐUÐU¨(ÐUÑUÔUÑUÔUÝØNÐN¨=ÐNÑNÔNñ
ô 
õ ðð à!ðñ ô ñ
ô 
õ ÐJÐJ UÐJÑJÔJÑJÔJÝ Ñ.Ô.Ý ™LœLÝð 
ð 
Ø*ð
ñ 
ô 
ñ 
ô 
õ ð 
ð 
Ø,ð
ñ 
ô 
ñ 
ô 
õ  #ð #
ð #
à'ð#
ñ #
ô #
ñ  
ô  
ð #Ô9Ø#Ô5Ø'Ô=Ø%Ô9ðC"ñ "ô "ð "r*   Úsource_namer:   Úsourceú
str | NoneÚrecord_countÚintÚused_fallbackÚboolÚmessager	   c                óž   — t          |pd¦  «                             ¦   «                              ¦   «         }|dv}t          | |||||¬¦  «        S )u   Táº¡o health cho 1 nguá»“n.r7   >   r7   ÚerrorÚfallbackÚunavailableÚpostgres_disabled)rP   rQ   Ú	availablerU   rS   rW   )r:   r<   r=   r	   )rP   rQ   rS   rU   rW   Únormalized_sourcer]   s          r(   Úbuild_source_statusr_   I   sh   € õ ˜F˜L bÑ)Ô)×/Ò/Ñ1Ô1×7Ò7Ñ9Ô9ÐØ!ð *ð €Iõ *ØØØØ#Ø!Øðñ ô ð r*   Úkwargsr   ú$list[CompanyOperationalSourceStatus]c                 ó<  — | d         }| d         }| d         }| d         }| d         }| d         }| d         }t          d|j        t          |j        ¦  «        |j        |j        ¦  «        t          d	|j        t          |j        ¦  «        |j        |j        ¦  «        t          d
| d         t          |¦  «        | d         | d         ¦  «        t          d|j        t          |j        ¦  «        |j        |j        ¦  «        t          d|j        t          |j        ¦  «        |j        |j        ¦  «        t          d|j        t          |j        ¦  «        |j        |j        ¦  «        t          d|j        t          |j        ¦  «        |j        |j        ¦  «        gS )u&   Táº¡o danh sÃ¡ch health cá»§a nguá»“n.Úproject_responseÚemployee_responseÚdossier_responseÚoperations_cases_responseÚoperations_actions_responseÚoperations_blockers_responseÚremediation_responser   Úemployee_logsr   Údossier_sourceÚdossier_used_fallbackÚdossier_messager   r   Úoperations_blockersÚremediation_plans)r_   rQ   rL   ÚitemsrU   rW   )r`   rc   rd   re   rf   rg   rh   ri   s           r(   Úbuild_source_status_listrq   c   sÊ  € àÐ0Ô1ÐØÐ2Ô3ÐØÐ0Ô1ÐØ &Ð'BÔ CÐØ"(Ð)FÔ"GÐØ#)Ð*HÔ#IÐ Ø!Ð"8Ô9ÐåØØÔ#ÝÐ Ô&Ñ'Ô'ØÔ*ØÔ$ñ	
ô 	
õ 	ØØÔ$ÝÐ!Ô'Ñ(Ô(ØÔ+ØÔ%ñ	
ô 	
õ 	ØØÐ#Ô$ÝÐ Ñ!Ô!ØÐ*Ô+ØÐ$Ô%ñ	
ô 	
õ 	ØØ%Ô,ÝÐ)Ô/Ñ0Ô0Ø%Ô3Ø%Ô-ñ	
ô 	
õ 	Ø Ø'Ô.ÝÐ+Ô1Ñ2Ô2Ø'Ô5Ø'Ô/ñ	
ô 	
õ 	Ø!Ø(Ô/ÝÐ,Ô2Ñ3Ô3Ø(Ô6Ø(Ô0ñ	
ô 	
õ 	ØØ Ô'ÝÐ$Ô*Ñ+Ô+Ø Ô.Ø Ô(ñ	
ô 	
ðW2ð 2r*   Úmessagesc                 ó   — t          | Ž S )u   Gá»™p message pháº£n há»“i.)r   )rr   s    r(   Úbuild_response_messagert   ¡   s   € å˜8Ð$Ð$r*   ÚsummaryÚoperations_cases_countÚoperations_actions_countÚoperations_blockers_countÚremediation_plans_countú(list[CompanyOperationalStateSummaryItem]c                óú  — t          ddt          | j        ¦  «        ddd| j        | j        | j        dœ¬¦  «        t          dd	t          | j        ¦  «        d
| j        rdnd| j        rdnd| j        | j        dœ¬¦  «        t          ddt          | j        ¦  «        d| j        rdnd| j        rdnd| j	        |||dœ¬¦  «        t          ddt          |¦  «        d|rdnd|rdnd| j
        | j        dœ¬¦  «        gS )u   Táº¡o summary cards.Úprojects_overviewu   Tá»•ng quan dá»± Ã¡nr   ÚneutralÚinfo)r?   r@   rA   )ÚcodeÚlabelÚvalueÚunitÚtrendr0   ÚmetadatarB   u   Rá»§i ro Ä‘ang má»Ÿr   ÚupÚhigh)rA   rC   Úoperations_follow_upu   TÃ¡c vá»¥ váº­n hÃ nh má»ŸÚactionsÚmedium)rE   rv   rw   rx   Úremediation_pipelineu#   Káº¿ hoáº¡ch kháº¯c phá»¥c há»“ sÆ¡Úplans)rG   rD   )r
   r:   r>   r?   r@   rA   rB   rC   rF   rE   rG   rD   )ru   rv   rw   rx   ry   s        r(   Úbuild_state_summariesrŒ   ¦   sr  € õ 	+Ø$Ø(Ý�gÔ,Ñ-Ô-ØØØà#*Ô#:Ø$+Ô$<Ø&-Ô&@ðð ð	
ñ 	
ô 	
õ 	+ØØ'Ý�gÔ(Ñ)Ô)ØØ!Ô,Ð;�$�$°)Ø&Ô9ÐE�V�V¸và&-Ô&@Ø'.Ô'Bðð ð	
ñ 	
ô 	
õ 	+Ø'Ø.Ý�gÔ0Ñ1Ô1ØØ!Ô4ÐC�$�$¸)Ø!(Ô!;ÐG�X�XÀà$+Ô$<Ø*@Ø,DØ-Fð	ð ð	
ñ 	
ô 	
õ 	+Ø'Ø7ÝÐ-Ñ.Ô.ØØ1Ð@�$�$°yØ!8ÐD�X�X¸fà*1Ô*HØ'.Ô'Bðð ð	
ñ 	
ô 	
ðQ4ð 4r*   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   )rP   r:   rQ   rR   rS   rT   rU   rV   rW   rR   r    r	   )r`   r   r    ra   )rr   rR   r    rR   )ru   r   rv   rT   rw   rT   rx   rT   ry   rT   r    rz   )Ú
__future__r   Útypingr   Úapp.models.schemasr   r   r   r   r	   r
   r   r   Úhelpersr   r   r   r   rO   r_   rq   rt   rŒ   r,   r*   r(   ú<module>r‘      s9  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ð ð ð ð ð ð ð ð ð.ð .ð .ð .ðbð ð ð ð4;ð ;ð ;ð ;ð|%ð %ð %ð %ð
=ð =ð =ð =ð =ð =r*   