§
    ÔŸ’jþ$  ã                  óN   — d dl mZ 	 d dlmZ d dlmZmZmZ  G d„ d¦  «        ZdS )é    )Úannotations)ÚAny)ÚDossierCaseÚOperationsEscalationItemÚOperationsEvidenceItemc                  ó*   — e Zd ZdZdd„Zdd„Zdd„ZdS )ÚCasesBuilderMixinz2Case items extraction and domain projection mixin.Úsessionúdict[str, Any]Úreturnúlist[DossierCase]c                óþ  — g }t          |                     d¦  «        pd¦  «        }t          |                     d¦  «        pd¦  «        }|                      |                     d¦  «        ¦  «        D �]}|                      ||¬¦  «        }|                      |                     d¦  «        ¦  «        }|r|d         ni }|                     t          d:i d|“d	t          |                     d
¦  «        p|¦  «        “d|“d|pd“dt          |                     d¦  «        pd¦  «        pd“d
t          |                     d
¦  «        pd¦  «        pd“dt          |                     d¦  «        pd¦  «        “dt          |                     d¦  «        pd¦  «        “d|                     d¦  «        “d|                     d¦  «        “d|                     d¦  «        p|                     d¦  «        “d|                     d¦  «        “d|                      |                     d¦  «        |                     d¦  «        |                     d¦  «        ¦  «        “dt          |                     d¦  «        pd¦  «        “dt          |                     d¦  «        pd¦  «        “d t          |                     d!¦  «        pd"¦  «        “d#|                     d$¦  «        “d%|                     d&¦  «        “d'd(“d)d*“d+t          |                     d¦  «        pd¦  «        pd“d,t          |                     d¦  «        pd¦  «        pd“d-|                      |¦  «        “d.|  	                    |¦  «        “d/|  
                    |                     d/¦  «        |                     d0¦  «        |                     d1¦  «        |                     d2¦  «        t          |¦  «        |                      ||¬3¦  «        |                      ||¬3¦  «        d4œ¦  «        “d5|                      ||||¬6¦  «        “d7|                      |||||                      |                     d8¦  «        ¦  «        ¬9¦  «        “Ž¦  «         �Œ
|S );z.Map one review session into operational cases.Úproject_codeÚ Ú	review_idÚfindings)r   ÚfindingÚassignmentsr   Úcase_idÚ	case_codeÚfinding_codeÚreview_session_idNÚ
finding_idÚ	case_typeÚfinding_typeÚdossier_gapÚtitlezDossier caseÚdescriptionÚdossier_stageÚdepartment_codeÚresponsible_department_codeÚassigned_department_codeÚemployee_codeÚassigned_employee_codeÚpriorityÚseverityÚimpact_levelÚis_blockingÚmediumFÚcurrent_statusÚstatusÚopenÚ	opened_atÚdetected_atÚ	closed_atÚresolved_atÚsource_systemÚdossier_reviewÚsource_record_typer   Úsource_record_idÚreadiness_impactÚoperational_impactÚconfidence_scoreÚmetadataÚreview_codeÚproject_nameÚsupplement_status)r
   r   )r9   r:   r;   Úassignment_countÚpost_close_actionsÚpost_verification_actionsÚ	evidences)r   r   r   r   ÚescalationsÚactions)r   r   r   r   Úsession_actions© )ÚstrÚgetÚ_ensure_listÚ_build_case_idÚappendr   Ú_derive_priorityÚboolÚ_derive_operational_impactÚ_derive_confidence_scoreÚ_merge_metadataÚlenÚ_collect_post_close_actionsÚ"_collect_post_verification_actionsÚ_build_evidencesÚ_build_escalations)	Úselfr
   Úitemsr   r   r   r   r   Úprimary_assignments	            úKC:\Projects\DSCons\app\services\operations_case_management\cases_builder.pyÚ_build_cases_from_sessionz+CasesBuilderMixin._build_cases_from_session   s  € à#%ˆÝ˜7Ÿ;š; ~Ñ6Ô6Ð<¸"Ñ=Ô=ˆÝ˜Ÿš KÑ0Ô0Ð6°BÑ7Ô7ˆ	à×(Ò(¨¯ª°ZÑ)@Ô)@ÑAÔAð B	ñ B	ˆGØ×)Ò)°IÀwÐ)ÑOÔOˆGØ×+Ò+¨G¯KªK¸Ñ,FÔ,FÑGÔGˆKØ3>Ð!F ¨Q¤ ÀBÐà�LŠLÝð ;ð ;ð ;Ø#˜Gð;å! '§+¢+¨nÑ"=Ô"=Ð"HÀÑIÔIÐIð;ð ". ð;ð '0Ð&7°4øð	;õ
  # 7§;¢;¨|Ñ#<Ô#<Ð#BÀÑCÔCÐKÀtøð;õ "% W§[¢[°Ñ%@Ô%@Ð%FÀBÑ!GÔ!GÐ!OÈ4øð;õ " '§+¢+¨nÑ"=Ô"=Ð"NÀÑOÔOÐOð;õ ˜gŸkšk¨'Ñ2Ô2ÐD°nÑEÔEÐEð;ð !(§¢¨MÑ :Ô :Ð :ð;ð #*§+¢+¨oÑ">Ô">Ð">ð;ð %,§K¢KÐ0MÑ$NÔ$Nð %JØ)×-Ò-Ð.HÑIÔIøð;ð #5×"8Ò"8Ð9QÑ"RÔ"RÐ"Rð;ð "×2Ò2ØŸš JÑ/Ô/ØŸš NÑ3Ô3ØŸš MÑ2Ô2ñô ð ð;õ& ! §¢¨ZÑ!8Ô!8Ð!D¸HÑEÔEÐEð';õ( !% W§[¢[°Ñ%?Ô%?Ð%HÀ5Ñ IÔ IÐ Ið);õ* $' w§{¢{°8Ñ'<Ô'<Ð'FÀÑ#GÔ#GÐ#Gð+;ð, &Ÿkšk¨-Ñ8Ô8Ð8ð-;ð. &Ÿkšk¨-Ñ8Ô8Ð8ð/;ð0 #3Ð"2ð1;ð2 (1 yð3;õ4 &)¨¯ª°\Ñ)BÔ)BÐ)HÀbÑ%IÔ%IÐ%QÈTøð5;õ6 &)¨¯ª°^Ñ)DÔ)DÐ)JÈÑ%KÔ%KÐ%SÈtøð7;ð8 (,×'FÒ'FÀwÑ'OÔ'OÐ'Oð9;ð: &*×%BÒ%BÀ7Ñ%KÔ%KÐ%Kð;;ð< "×1Ò1ØŸš JÑ/Ô/à+2¯;ª;°}Ñ+EÔ+EØ,3¯KªK¸Ñ,GÔ,GØ18·²Ð=PÑ1QÔ1QÝ03°KÑ0@Ô0@Ø26×2RÒ2RØ(/¸ð 3Sñ 3ô 3ð :>×9`Ò9`Ø(/Ø(/ð :añ :ô :ðð ñô ð ð=;ð\ #×3Ò3Ø%1Ø"+Ø 'Ø 'ð	 4ñ ô ð ð];ðh !%× 7Ò 7Ø%1Ø"+Ø 'Ø 'Ø(,×(9Ò(9¸'¿+º+ÀiÑ:PÔ:PÑ(QÔ(Qð !8ñ !ô !ð !ði;ñ=ô =ð =ñ =ð~ ˆó    r   rD   r   r   r   úlist[OperationsEvidenceItem]c               ó~  — g }t          |                     d¦  «        pd¦  «        pd}t          |                      |                     d¦  «        ¦  «        d¬¦  «        D �][\  }}|                     t          |› d|› �|||pd|t          |                     d¦  «        pd	¦  «        d
|                     d¦  «        p|                     d¦  «        t          |                     d¦  «        p|                     d¦  «        pd¦  «        |                     d¦  «        d|                      |                     d¦  «        ¦  «        d|                      |                     d¦  «        |                     d¦  «        |                     d¦  «        |                     d¦  «        dœ¦  «        ¬¦  «        ¦  «         �Œ]|S )z?Map dossier finding evidences into operations evidence records.r   r   Nr?   é   ©Ústartz
:evidence:Úevidence_typeÚdocument_evidencer2   Ú
source_uriÚsource_nameÚ	rule_codeÚEvidenceÚexcerptÚ	availabler7   TÚevidence_payloadÚsource_pageÚ	rationale)rg   rh   r7   )Úevidence_idr   r   r   r   r^   r1   Ú
source_refr   rd   ÚavailabilityÚstrengthÚsupports_claimr8   )rD   rE   Ú	enumeraterF   rH   r   Ú_derive_evidence_strengthrM   )	rS   r   r   r   r   rT   r   ÚindexÚevidences	            rV   rQ   z"CasesBuilderMixin._build_evidences]   sß  € ð /1ˆÝ˜7Ÿ;š; ~Ñ6Ô6Ð<¸"Ñ=Ô=ÐEÀˆå(Ø×Ò˜gŸkšk¨+Ñ6Ô6Ñ7Ô7¸qð 
ñ  
ô  
ð $	ñ $	‰OˆE�8ð �LŠLÝ&Ø#*Ð =Ð =°eÐ =Ð =Ø#Ø!-Ø&/Ð&7°4Ø!-Ý"%Ø Ÿš _Ñ5Ô5ÐLÐ9Lñ#ô #ð #3Ø'Ÿ|š|¨LÑ9Ô9ð  3Ø—|’| MÑ2Ô2ÝØ Ÿš ]Ñ3Ô3ð &Ø#Ÿ<š<¨Ñ4Ô4ð&à%ñô ð
 %ŸLšL¨Ñ3Ô3Ø!,Ø!×;Ò;Ø ŸšÐ%7Ñ8Ô8ñô ð $(Ø!×1Ò1Ø ŸšÐ%7Ñ8Ô8à+3¯<ª<¸Ñ+FÔ+FØ)1¯ª°kÑ)BÔ)BØ08·²Ð=OÑ0PÔ0Pðð ñô ð/ñ ô ñ!ô !ð !ñ !ðF ˆrX   rB   úlist[dict[str, Any]]úlist[OperationsEscalationItem]c               ó@  — g }t          |                     d¦  «        pd¦  «        pd}t          |d¬¦  «        D �]b\  }}	|                      |	                     d¦  «        ¦  «        }
t          |
                     d¦  «        pd¦  «        pd}t          |
                     d¦  «        pd¦  «        pd}t          |	                     d¦  «        pd¦  «        d	k    rŒ£|r||k    rŒ¬|r)|t          |                     d¦  «        pd¦  «        k    rŒ×|                     t          d&i d
|› d|› �“d|“dt          |	                     d¦  «        pd¦  «        pd“d|“d|pd“d|
                     d¦  «        “d|
                     d¦  «        “d|
                     d¦  «        p|	                     d¦  «        “d|	                     d¦  «        pd“dd“dt          |
                     d¦  «        p|                     d¦  «        pd¦  «        “dd“d|
                     d¦  «        “d|                      |	                     d ¦  «        |                      |	                     d!¦  «        ¦  «        |
d"œ¦  «        “d#|	                     d#¦  «        “d$d“d%i “Ž¦  «         �Œd|S )'zIMap escalation-related review actions into operations escalation records.r   r   Nr[   r\   Úaction_payloadr   Úaction_typeÚescalation_triggeredÚescalation_idz:escalation:r   Ú	action_idr   r   Útarget_department_codeÚtarget_employee_codeÚtarget_agent_codeÚactor_agent_codeÚreasonÚaction_summaryzEscalation triggeredÚtrigger_typeÚworkflow_actionr%   r&   r)   r+   ÚqueuedÚsuggested_deadline_hoursÚhandoff_contextÚbefore_stateÚafter_state)r†   ru   Ú
created_atr0   r8   rC   )rD   rE   rn   Ú_ensure_dictrH   r   rM   )rS   r   r   r   r   rB   rT   r   rp   Úactionru   Útarget_finding_codeÚreference_finding_ids                rV   rR   z$CasesBuilderMixin._build_escalations‘   s`  € ð 13ˆÝ˜7Ÿ;š; ~Ñ6Ô6Ð<¸"Ñ=Ô=ÐEÀˆå& ¸aÐ@Ñ@Ô@ð /	ñ /	‰MˆE�6Ø!×.Ò.¨v¯zªzÐ:JÑ/KÔ/KÑLÔLˆNÝ"% n×&8Ò&8¸Ñ&HÔ&HÐ&NÈBÑ"OÔ"OÐ"WÐSWÐÝ#& ~×'9Ò'9¸,Ñ'GÔ'GÐ'MÈ2Ñ#NÔ#NÐ#VÐRVÐ å�6—:’:˜mÑ,Ô,Ð2°Ñ3Ô3Ð7MÒMÐMØØ"ð Ð':¸lÒ'JÐ'JØØ#ð Ð(<ÅØ—’˜LÑ)Ô)Ð/¨RñAô Aò )ð )ð à�LŠLÝ(ð ð ð Ø%,Ð"AÐ"A¸%Ð"AÐ"AÐ"Aðà#˜Gðõ " &§*¢*¨[Ñ"9Ô"9Ð"?¸RÑ@Ô@ÐHÀDøðð ". ð	ð
 '0Ð&7°4øðð ,:×+=Ò+=Ð>VÑ+WÔ+WÐ+Wðð *8×);Ò);Ð<RÑ)SÔ)SÐ)Sðð '5×&8Ò&8Ð9LÑ&MÔ&Mð '6Ø—z’zÐ"4Ñ5Ô5øðð "Ÿ:š:Ð&6Ñ7Ô7ÐQÐ;Qøðð "3Ð!2ðõ !Ø&×*Ò*¨:Ñ6Ô6ð $Ø"Ÿ;š; zÑ2Ô2ð$à#ñô ð ðð" $˜8ð#ð$ .<×-?Ò-?Ø2ñ.ô .ð .ð%ð* %)×$8Ò$8ØŸ
š
 >Ñ2Ô2à+/×+<Ò+<¸V¿ZºZÈÑ=VÔ=VÑ+WÔ+WØ.<ðð ñ%ô %ð %ð+ð8  &Ÿzšz¨,Ñ7Ô7Ð7ð9ð: !% ð;ð<  ˜Rð=ñ!ô !ð !ñ !ðF ˆrX   N)r
   r   r   r   )
r   rD   r   rD   r   rD   r   r   r   rY   )r   rD   r   rD   r   rD   r   r   rB   rr   r   rs   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rW   rQ   rR   rC   rX   rV   r	   r	      s\   € € € € € Ø<Ð<ðJð Jð Jð JðX2ð 2ð 2ð 2ðh>ð >ð >ð >ð >ð >rX   r	   N)	Ú
__future__r   Útypingr   Úapp.models.schemasr   r   r   r	   rC   rX   rV   ú<module>r“      sš   ðØ "Ð "Ð "Ð "Ð "Ð "à 2à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ðAð Að Að Að Añ Aô Að Að Að ArX   