§
    ÔŸ’jI  ã                  óz   — d dl mZ d dlmZ d dlmZmZmZmZ ddl	m
Z
mZmZ dd
„Zdd„Zdd„Zdd„Zd d„Zd!d„ZdS )"é    )Úannotations)ÚAny)ÚCompanyOperationalProjectStateÚCompanyOperationalRiskItemÚCompanyOperationalStateResponseÚ!CompanyOperationalWorkforceStatusé   )Úextract_string_listÚis_high_severityÚis_open_statusÚitemr   Úreturnr   c           
     ó  — t          di d| j        “d| j        “d| j        “d| j        “d| j        “d| j        “d| j        “d| j        “d	| j	        “d
t          d„ | j        D ¦   «         ¦  «        “dt          d„ | j        D ¦   «         ¦  «        “dt          | j        ¦  «        “dt          | j        ¦  «        “d| j        “dd“dt          | j        ¦  «        t          | j        ¦  «        t          | j        ¦  «        dœ“ŽS )zMap project state.Úproject_codeÚproject_nameÚclient_nameÚlocationÚproject_managerÚstatusÚcurrent_phaseÚoverall_progress_percentÚbudget_statusÚopen_risks_countc              3  óB   K  — | ]}t          |j        ¦  «        ¯d V — ŒdS ©r	   N)r   r   ©Ú.0Úrisks     úLC:\Projects\DSCons\app\services\company_operational_state\builders_domain.pyú	<genexpr>z&build_project_state.<locals>.<genexpr>   s1   è è € ÐUÐU 4½ÈÌÑ9TÔ9TÐU˜QÐUÐUÐUÐUÐUÐUó    Úblocked_items_countc              3  ój   K  — | ].}t          |j        ¦  «        ¯t          |j        ¦  «        ¯*d V — Œ/dS r   )r   Úseverityr   r   r   s     r   r    z&build_project_state.<locals>.<genexpr>    s[   è è € ð  
ð  
àÝ ¤Ñ.Ô.ð 
õ 4BÀ$Ä+Ñ3NÔ3Nð 
Øð 
ð  
ð  
ð  
ð  
ð  
r!   Úupcoming_tasks_countÚmilestone_countÚsummaryÚsourceÚproject_managementÚmetadata)Úphase_progress_countÚtimeline_event_countÚsummary_card_count© )r   r   r   r   r   r   r   r   r   r   ÚsumÚrisksÚlenÚupcoming_tasksÚ
milestonesÚphase_progressÚtimelineÚsummary_cards)r   s    r   Úbuild_project_stater7      s‡  € å)ð ð ð ØÔ&Ð&ðàÔ&Ð&ðð Ô$Ð$ðð ”�ð	ð
 Ô,Ð,ðð Œ{ˆ{ðð Ô(Ð(ðð "&Ô!>Ð!>ðð Ô(Ð(ðõ ÐUÐU¨4¬:ÐUÑUÔUÑUÔUÐUðõ  ð  
ð  
àœ
ð 
ñ  
ô  
ñ 
ô 
ð 
ðõ  ! Ô!4Ñ5Ô5Ð5ð!õ" ˜DœOÑ,Ô,Ð,ð#ð$ ”�ð%ð& $Ð#ð'õ* %(¨Ô(;Ñ$<Ô$<Ý$'¨¬Ñ$6Ô$6Ý"% dÔ&8Ñ"9Ô"9ð
ð 
ð 
ð)ð r!   Úprojectsú	list[Any]Údossier_reviewsúlist[dict[str, Any]]ú list[CompanyOperationalRiskItem]c                ó  — g }| D ]h}|j         D ]^}|                     t          |j        |j        |j        |j        |j        |j        dd|j	        |j
        |j        dœ¬¦
  «
        ¦  «         Œ_Œi|D �]•}|                     dg ¦  «        D �]z}|                     t          t          |                     d¦  «        pd¦  «        t          |                     d¦  «        pd¦  «        t          |                     d	¦  «        pd¦  «        t          |                     d
¦  «        pd¦  «        t          |                     d¦  «        pd¦  «        t          |                     d¦  «        pd¦  «        dt          |                     d¦  «        pd¦  «        |                     d¦  «        |                     d¦  «        |                     d¦  «        t          |                     d¦  «        ¦  «        dœ¬¦
  «
        ¦  «         �Œ|�Œ—|S )u   Táº¡o danh sÃ¡ch risk.r)   N)r   r   )
r   r   Útitler$   r   ÚownerÚsource_typeÚreference_idÚ
mitigationr*   Úfindingsr   Ú r   r>   r$   r   Úresponsible_department_codeÚdossier_reviewÚ
finding_idÚresolution_noteÚdossier_stageÚfinding_typeÚis_blocking)rI   rJ   rK   )r0   Úappendr   r   r   r>   r$   r   r?   rB   r   r   ÚgetÚstrÚbool)r8   r:   ÚitemsÚprojectr   ÚreviewÚfindings          r   Úbuild_risksrT   1   s  € ð /1€EØð ð ˆØ”Mð 	ð 	ˆDØ�LŠLÝ*Ø!(Ô!5Ø!(Ô!5Øœ*Ø!œ]Øœ;Øœ*Ø 4Ø!%Ø#œà)0Ô)>Ø)0Ô)>ðð ðñ ô ñô ð ð ð	ð$ "ð ñ ˆØ—z’z *¨bÑ1Ô1ð 	ñ 	ˆGØ�LŠLÝ*Ý!$ V§Z¢Z°Ñ%?Ô%?Ð%EÀ2Ñ!FÔ!FÝ!$ V§Z¢Z°Ñ%?Ô%?Ð%EÀ2Ñ!FÔ!FÝ˜gŸkšk¨'Ñ2Ô2Ð8°bÑ9Ô9Ý  §¢¨ZÑ!8Ô!8Ð!>¸BÑ?Ô?Ý˜wŸ{š{¨8Ñ4Ô4Ð:¸Ñ;Ô;Ý˜gŸkškÐ*GÑHÔHÐNÈBÑOÔOØ 0Ý!$ W§[¢[°Ñ%>Ô%>Ð%DÀ"Ñ!EÔ!EØ&Ÿ{š{Ð+<Ñ=Ô=à)0¯ª°_Ñ)EÔ)EØ(/¯ª°NÑ(CÔ(CÝ'+¨G¯KªK¸Ñ,FÔ,FÑ'GÔ'Gðð ðñ ô ñô ð ñ ñ	ð& €Lr!   rP   r   c                óV  — h d£}h d£}h d£}d}d}d}| D ][}t          |j        pd¦  «                             ¦   «                              ¦   «         }||v r|dz  }ŒF||v r|dz  }ŒP||v s|r|dz  }Œ\g }	| s|	                     d¦  «         t          t          | ¦  «        ||||	¬¦  «        S )	u   Tá»•ng há»£p workforce.>   õ   vÆ°á»›ngõ   bá»‹ cháº·nÚblockedÚoverdue>   õ   Ä‘ang xá»­ lÃ½úin progressÚassignedÚin_progressÚpending_verification>   õ   hoÃ n thÃ nhÚdoneÚresolvedÚverifiedÚ	completedr   rD   r	   uU   ChÆ°a cÃ³ employee work logs kháº£ dá»¥ng Ä‘á»ƒ tá»•ng há»£p tráº¡ng thÃ¡i workforce.)Útotal_employees_activeÚemployees_blockedÚemployees_in_progressÚemployees_completedÚnotes)rN   r   ÚstripÚlowerrL   r   r1   )
rP   Úblocked_statusesÚin_progress_statusesÚcompleted_statusesre   rf   rg   r   Únormalized_statusrh   s
             r   Úbuild_workforcero   `   s#  € àHÐHÐHÐðð ð Ðð WÐVÐVÐØÐØÐØÐØð 'ð 'ˆÝ ¤Ð 1¨rÑ2Ô2×8Ò8Ñ:Ô:×@Ò@ÑBÔBÐØÐ 0Ð0Ð0Ø Ñ"ÐÐØÐ"4Ð4Ð4Ø 1Ñ$ÐÐØÐ"6Ð6Ð6Ð:KÐ6Ø! QÑ&Ð!øØ€EØð 
Ø�ŠØcñ	
ô 	
ð 	
õ -Ý" 5™zœzØ+Ø3Ø/Øðñ ô ð r!   údict[str, Any]c           	     óÆ  — d}d}d}g }| D ]Ð}|                      dg ¦  «        D ]·}t          |                      d¦  «        pd¦  «                             ¦   «                              ¦   «         }|dk    r|dz  }n|dk    r|dz  }n|dk    r|dz  }|                     t          |                      d	¦  «        pi                       d
¦  «        ¦  «        ¦  «         Œ¸ŒÑ||||dœS )u&   Táº¡o thá»‘ng kÃª policy Ä‘Æ¡n giáº£n.r   ÚactionsÚaction_typerD   Úpolicy_checkedr	   Úrisk_flaggedÚescalation_triggeredÚaction_payloadÚwarnings)Úpolicy_checks_countÚrisk_flagged_countÚescalation_triggered_countrx   )rM   rN   ri   rj   Úextendr
   )r:   Úpolicy_action_countÚrisk_flag_countÚescalation_countrx   rR   Úactionrs   s           r   Úbuild_policy_overviewr�   „   s/  € àÐØ€OØÐØ€HØ!ð ð ˆØ—j’j ¨BÑ/Ô/ð 	ð 	ˆFÝ˜fŸjšj¨Ñ7Ô7Ð=¸2Ñ>Ô>×DÒDÑFÔF×LÒLÑNÔNˆKØÐ.Ò.Ð.Ø# qÑ(Ð#Ð#Ø Ò.Ð.Ø 1Ñ$��ØÐ 6Ò6Ð6Ø  AÑ%Ð Ø�OŠOÝ#Ø—Z’ZÐ 0Ñ1Ô1Ð7°R×<Ò<¸ZÑHÔHñô ñô ð ð ð	ð  3Ø-Ø&6Øð	ð ð r!   c           	     ó†  — t          | dd¦  «        }i dt          | dd¦  «        “dt          | dd¦  «        “dt          | dd¦  «        “dt          | dd¦  «        “dt          | dd¦  «        “d	t          | d	d¦  «        “d
t          | d
d¦  «        “dt          | dd¦  «        “dt          | dd¦  «        “dt          |dd¦  «        “dt          t          |dg ¦  «        pg ¦  «        “dt          | dd¦  «        “dt          | dd¦  «        “dt          | dd¦  «        “dt          | dd¦  «        “dt          | dd¦  «        “S )u   TÃ³m táº¯t remediation plan.Úreadiness_summaryNr   rD   Úreview_session_idrG   Úfinding_codeÚdocument_typerI   ÚpriorityÚmediumÚowner_department_codeÚowner_employee_codeÚreadiness_statusr   rX   Úblocking_reasonsÚdestination_folderÚoutput_filenamer(   ÚderivedÚused_fallbackFÚmessage)ÚgetattrÚlist)r   rƒ   s     r   Úbuild_remediation_plan_summaryr”       sµ  € å Ð&9¸4Ñ@Ô@ÐðØ�  n°bÑ9Ô9ðà�W TÐ+>ÀÑCÔCðð 	•g˜d L°"Ñ5Ô5ðð 	�  n°dÑ;Ô;ð	ð
 	�  ¸Ñ;Ô;ðð 	�  ¸Ñ=Ô=ðð 	•G˜D *¨hÑ7Ô7ðð 	 ¥¨Ð/FÈÑ!MÔ!Mðð 	�w tÐ-BÀDÑIÔIðð 	�GÐ$5°xÀÑKÔKðð 	�DÝÐ%Ð'9¸2Ñ>Ô>ÐDÀ"ñ
ô 
ðð 	�g dÐ,@À$ÑGÔGðð 	�7 4Ð):¸DÑAÔAðð  	•'˜$ ¨)Ñ4Ô4ð!ð" 	�  ¸Ñ>Ô>ð#ð$ 	•7˜4 ¨DÑ1Ô1ð%ð r!   Úresponse_payloadÚoptional_payloadÚNonec                óx   — t          t          di ¦  «        }|                     ¦   «         D ]\  }}||v r|| |<   ŒdS )u#   Chá»‰ gáº¯n field model há»— trá»£.Úmodel_fieldsN)r’   r   rP   )r•   r–   r™   Ú
field_nameÚvalues        r   Ú attach_supported_optional_fieldsrœ   ¹   sW   € õ Õ:¸NÈBÑOÔO€LØ-×3Ò3Ñ5Ô5ð 1ð 1Ñˆ
�EØ˜Ð%Ð%Ø+0Ð˜ZÑ(øð1ð 1r!   N)r   r   r   r   )r8   r9   r:   r;   r   r<   )rP   r9   r   r   )r:   r;   r   rp   )r   r   r   rp   )r•   rp   r–   rp   r   r—   )Ú
__future__r   Útypingr   Úapp.models.schemasr   r   r   r   Úhelpersr
   r   r   r7   rT   ro   r�   r”   rœ   r.   r!   r   ú<module>r¡      s  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ðð ð ð ð<,ð ,ð ,ð ,ð^!ð !ð !ð !ðHð ð ð ð8ð ð ð ð21ð 1ð 1ð 1ð 1ð 1r!   