§
    s�’jõ  ã                  ó¾  — d dl mZ d dlmZ d dlmZmZ ddlmZ  G d„ de¦  «        Z	 G d„ d	e¦  «        Z
 G d
„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Ze                     ¦   «          e                     ¦   «          dS )é    )Úannotations)ÚAny)Ú	BaseModelÚFieldé   )ÚDossierReviewSessionRecordc                  óf   — e Zd ZU dZded<   ded<   dZded<   dZded	<    ee¬
¦  «        Z	ded<   dS )Ú!WorkflowReviewPolicyViolationItemz2Single policy violation or hard guardrail failure.ÚstrÚcodeÚmessageÚmediumÚseverityNú
str | NoneÚ
field_name©Údefault_factoryúdict[str, Any]Úmetadata)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   Údictr   © ó    úOC:\Projects\DSCons\app\models\workflow_review_schemas\workflow_policy_models.pyr
   r
   
   sj   € € € € € € Ø<Ð<à€I€I�IØ€L€L�LØ€HÐÐÐÑØ!€JÐ!Ð!Ð!Ñ!Ø$˜u°TÐ:Ñ:Ô:€HÐ:Ð:Ð:Ñ:Ð:Ð:r   r
   c                  ó\   — e Zd ZU dZded<   dZded<   dZded<    ee¬	¦  «        Z	d
ed<   dS )Ú"WorkflowReviewEscalationTargetItemz7Single escalation target selected by policy evaluation.r   Ú
agent_codeNr   Úreasonr   Úpriorityr   r   r   )
r   r   r   r   r   r"   r#   r   r   r   r   r   r   r    r       sa   € € € € € € ØAÐAà€O€O�OØ€FÐÐÐÑØ€HÐÐÐÑØ$˜u°TÐ:Ñ:Ô:€HÐ:Ð:Ð:Ñ:Ð:Ð:r   r    c                  ó  — e Zd ZU dZded<   dZded<   dZded<   d	Zd
ed<   dZded<   dZ	ded<   dZ
ded<    ee¬¦  «        Zded<    ee¬¦  «        Zded<    ee¬¦  «        Zded<    ee¬¦  «        Zded<    ee¬¦  «        Zded<   dS )ÚWorkflowReviewPolicyCheckResultzQPolicy evaluation result used for workflow/session/finding/assignment guardrails.r   ÚscopeTÚboolÚallowedÚlowÚ
risk_levelr   ÚintÚ
risk_scoreFÚrequires_escalationÚrequires_manual_reviewÚcircuit_breaker_triggeredr   z'list[WorkflowReviewPolicyViolationItem]Ú
violationsú	list[str]Úwarningsz(list[WorkflowReviewEscalationTargetItem]Úescalation_targetsÚapplied_rulesr   r   N)r   r   r   r   r   r(   r*   r,   r-   r.   r/   r   Úlistr0   r2   r3   r4   r   r   r   r   r   r%   r%      s6  € € € € € € Ø[Ð[à€J€J�JØ€GÐÐÐÑØ€JÐÐÐÑØ€JÐÐÐÑØ %ÐÐ%Ð%Ð%Ñ%Ø#(ÐÐ(Ð(Ð(Ñ(Ø&+ÐÐ+Ð+Ð+Ñ+Ø:?¸%ÐPTÐ:UÑ:UÔ:U€JÐUÐUÐUÑUØ˜%°Ð5Ñ5Ô5€HÐ5Ð5Ð5Ñ5ØCHÀ5ØðDñ Dô DÐð ð ð ñ ð  %˜u°TÐ:Ñ:Ô:€MÐ:Ð:Ð:Ñ:Ø$˜u°TÐ:Ñ:Ô:€HÐ:Ð:Ð:Ñ:Ð:Ð:r   r%   c                  óÈ   — e Zd ZU dZdZded<   dZded<   dZded<   dZded<   dZ	ded<   dZ
ded	<   dZded
<   dZded<    ee¬¦  «        Zded<    ee¬¦  «        Zded<   dS )ÚWorkflowReviewTriggerSummaryzHCompact trigger metadata used to explain why a workflow run was started.Nr   Útrigger_sourceÚtrigger_modeÚtrigger_reasonÚinitiated_by_employee_codeÚlead_reviewer_employee_codeÚlead_agent_codeÚproject_codeÚdossier_scoper   r1   Úassigned_departmentsr   r   )r   r   r   r   r8   r   r9   r:   r;   r<   r=   r>   r?   r   r5   r@   r   r   r   r   r   r7   r7   0   sß   € € € € € € ØRÐRà!%€NÐ%Ð%Ð%Ñ%Ø#€LÐ#Ð#Ð#Ñ#Ø!%€NÐ%Ð%Ð%Ñ%Ø-1ÐÐ1Ð1Ð1Ñ1Ø.2ÐÐ2Ð2Ð2Ñ2Ø"&€OÐ&Ð&Ð&Ñ&Ø#€LÐ#Ð#Ð#Ñ#Ø $€MÐ$Ð$Ð$Ñ$Ø&+ e¸DÐ&AÑ&AÔ&AÐÐAÐAÐAÑAØ$˜u°TÐ:Ñ:Ô:€HÐ:Ð:Ð:Ñ:Ð:Ð:r   r7   c                  óþ   — e Zd ZU dZdZded<   dZded<   dZded<   dZded<   dZ	ded<   dZ
ded	<   d
Zded<    ee¬¦  «        Zded<    ee¬¦  «        Zded<    ee¬¦  «        Zded<    ee¬¦  «        Zded<   dS )ÚWorkflowReviewPolicySummaryzACompact summary of workflow policy outcome for response payloads.r   r+   Útotal_checksÚallowed_checksÚblocked_checksÚescalation_countÚmanual_review_countÚcircuit_breaker_countr)   r   Úhighest_risk_levelr   r1   Úscopes_requiring_attentionr2   r4   r   r   N)r   r   r   r   rC   r   rD   rE   rF   rG   rH   rI   r   r5   rJ   r2   r4   r   r   r   r   r   rB   rB   ?   s  € € € € € € ØKÐKà€LÐÐÐÑØ€NÐÐÐÑØ€NÐÐÐÑØÐÐÐÐÑØ ÐÐ Ð Ð Ñ Ø!"ÐÐ"Ð"Ð"Ñ"Ø#ÐÐ#Ð#Ð#Ñ#Ø,1¨EÀ$Ð,GÑ,GÔ,GÐÐGÐGÐGÑGØ˜%°Ð5Ñ5Ô5€HÐ5Ð5Ð5Ñ5Ø$˜u°TÐ:Ñ:Ô:€MÐ:Ð:Ð:Ñ:Ø$˜u°TÐ:Ñ:Ô:€HÐ:Ð:Ð:Ñ:Ð:Ð:r   rB   c                  óÈ   — e Zd ZU dZdZded<   dZded<   dZded<   d	Zd
ed<   d	Z	d
ed<   d	Z
d
ed<   d	Zd
ed<   d	Zd
ed<    ee¬¦  «        Zded<    ee¬¦  «        Zded<   dS )Ú WorkflowOperationalStateSnapshotzILightweight operational twin snapshot attached to a workflow run summary.Nr   Úgenerated_atÚsourceFr'   Úused_fallbackr   r+   Útotal_projectsÚ
open_risksÚblocked_items_countÚbacklog_items_countÚactive_review_sessionsr   r1   Úavailable_sourcesr   r   )r   r   r   r   rM   r   rN   rO   rP   rQ   rR   rS   rT   r   r5   rU   r   r   r   r   r   rL   rL   O   sà   € € € € € € ØSÐSà#€LÐ#Ð#Ð#Ñ#Ø€FÐÐÐÑØ€MÐÐÐÑØ€NÐÐÐÑØ€JÐÐÐÑØ ÐÐ Ð Ð Ñ Ø ÐÐ Ð Ð Ñ Ø"#ÐÐ#Ð#Ð#Ñ#Ø#( 5¸Ð#>Ñ#>Ô#>ÐÐ>Ð>Ð>Ñ>Ø$˜u°TÐ:Ñ:Ô:€HÐ:Ð:Ð:Ñ:Ð:Ð:r   rL   c                  óÎ   — e Zd ZU dZded<   ded<   dZded<   dZded<   dZded	<   ded
<   ded<   dZded<   dZ	ded<   dZ
ded<   dZded<   dZded<    ee¬¦  «        Zded<   dS )ÚWorkflowReviewNextActionItema&  Machine-readable next action emitted after workflow automation.

    Metadata may optionally carry richer projection hints such as finding_code,
    project_code, assignment_id, review_id, post_close_source, replay_scope,
    or trigger context without changing the public schema contract.
    r   r&   Útarget_typeNr   Ú	target_idÚdepartment_codeÚowner_employee_codeÚtitleÚaction_typer   r#   r"   ÚpendingÚstatusÚexecution_channelÚ
trigger_atr   r   r   )r   r   r   r   r   rY   rZ   r[   r#   r"   r_   r`   ra   r   r   r   r   r   r   rW   rW   ^   sð   € € € € € € ðð ð €J€J�JØÐÐÑØ €IÐ Ð Ð Ñ Ø"&€OÐ&Ð&Ð&Ñ&Ø&*ÐÐ*Ð*Ð*Ñ*Ø€J€J�JØÐÐÑØ€HÐÐÐÑØ€FÐÐÐÑØ€FÐÐÐÑØ$(ÐÐ(Ð(Ð(Ñ(Ø!€JÐ!Ð!Ð!Ñ!Ø$˜u°TÐ:Ñ:Ô:€HÐ:Ð:Ð:Ñ:Ð:Ð:r   rW   c                  óf   — e Zd ZU dZded<   ded<   ded<   ded<   dZded	<   dZded
<   dZded<   dS )ÚWorkflowReviewFindingSummaryz?Summary for one persisted finding and any generated assignment.r   Ú
finding_idÚfinding_coder_   Úresponsible_department_codeNr   Úassignment_idÚassignment_statusr   r+   Úemployee_action_count)r   r   r   r   r   rg   rh   ri   r   r   r   rc   rc   u   sw   € € € € € € ØIÐIà€O€O�OØÐÐÑØ€K€K�KØ$Ð$Ð$Ñ$Ø $€MÐ$Ð$Ð$Ñ$Ø$(ÐÐ(Ð(Ð(Ñ(Ø!"ÐÐ"Ð"Ð"Ñ"Ð"Ð"r   rc   c                  óP   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded	<   d
S )Ú WorkflowReviewEmployeeLogSummaryzBSummary for one employee work log session touched by the workflow.r   Úemployee_codeÚwork_log_session_idr_   r+   Úaction_countr>   Ú
shift_dateN)r   r   r   r   r   r   r   r   rk   rk   �   sX   € € € € € € ØLÐLàÐÐÑØÐÐÑØ€K€K�KØÐÐÑØÐÐÑØ€O€O�O€O€Or   rk   c                  ó¾   — e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded	<   d
Z	ded<   d
Z
ded<   d
Zded<   d
Zded<   d
Zded<    ee¬¦  «        Zded<   d
S )ÚWorkflowReviewStepOutcomez9Machine-readable lifecycle outcome for one workflow step.r   ÚstepFr'   ÚexecutedÚ	succeededÚrequires_manual_interventionÚblockedNr   rX   rY   Útarget_coder_   r"   r   r   r   )r   r   r   r   r   rs   rt   ru   rv   rX   rY   rw   r_   r"   r   r   r   r   r   r   rq   rq   Œ   sÙ   € € € € € € ØCÐCà€I€I�IØ€HÐÐÐÑØ€IÐÐÐÑØ).Ð Ð.Ð.Ð.Ñ.Ø€GÐÐÐÑØ"€KÐ"Ð"Ð"Ñ"Ø €IÐ Ð Ð Ñ Ø"€KÐ"Ð"Ð"Ñ"Ø€FÐÐÐÑØ€FÐÐÐÑØ$˜u°TÐ:Ñ:Ô:€HÐ:Ð:Ð:Ñ:Ð:Ð:r   rq   c                  ó2  — e Zd ZU dZded<    ee¬¦  «        Zded<    ee¬¦  «        Zded<    ee¬¦  «        Z	d	ed
<    ee¬¦  «        Z
ded<    ee¬¦  «        Zded<    ee¬¦  «        Zded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded <   dZded!<   dZded"<   dZded#<    ee¬¦  «        Zd	ed$<   dZded%<   dZd&ed'<    ee¬¦  «        Zd(ed)<    ee¬¦  «        Zd*ed+<    ee¬¦  «        Zded,<   ded-<   dS ).ÚWorkflowReviewRunSummaryzHStructured response summarizing the persisted proactive review workflow.r   Úreviewr   z"list[WorkflowReviewFindingSummary]Úfinding_summariesz&list[WorkflowReviewEmployeeLogSummary]Úemployee_log_summariesr1   Úcreated_snapshot_idsz"list[WorkflowReviewNextActionItem]Únext_actionsz%list[WorkflowReviewPolicyCheckResult]Úpolicy_checkszlist[WorkflowReviewStepOutcome]Úlifecycle_outcomesNr   Úcorrelation_idÚrun_idÚ	completedr   Úautomation_statusFr'   ru   Úresumable_from_stepÚclose_executedr   r+   Úassigned_findings_countÚsubmitted_findings_countÚverified_findings_countÚescalated_findings_countÚmanual_follow_up_countÚblocked_reasonsÚreview_action_countz8WorkflowOperationalStateSnapshot | dict[str, Any] | NoneÚoperational_state_snapshotz,WorkflowReviewPolicySummary | dict[str, Any]Úpolicy_summaryz-WorkflowReviewTriggerSummary | dict[str, Any]Útrigger_summaryÚpost_close_actionsr   ) r   r   r   r   r   r   r5   r{   r|   r}   r~   r   r€   r�   r‚   r„   ru   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   rB   r�   r7   r�   r‘   r   r   r   ry   ry   œ   s–  € € € € € € ØRÐRà&Ð&Ð&Ñ&Ø<A¸EÐRVÐ<WÑ<WÔ<WÐÐWÐWÐWÑWØEJÀUØðFñ Fô FÐð ð ð ñ ð ', e¸DÐ&AÑ&AÔ&AÐÐAÐAÐAÑAØ7<°uÈTÐ7RÑ7RÔ7R€LÐRÐRÐRÑRØ;@¸5ÐQUÐ;VÑ;VÔ;V€MÐVÐVÐVÑVØ:?¸%ÐPTÐ:UÑ:UÔ:UÐÐUÐUÐUÑUØ!%€NÐ%Ð%Ð%Ñ%Ø€FÐÐÐÑØ(ÐÐ(Ð(Ð(Ñ(Ø).Ð Ð.Ð.Ð.Ñ.Ø&*ÐÐ*Ð*Ð*Ñ*Ø €NÐ Ð Ð Ñ Ø#$ÐÐ$Ð$Ð$Ñ$Ø$%ÐÐ%Ð%Ð%Ñ%Ø#$ÐÐ$Ð$Ð$Ñ$Ø$%ÐÐ%Ð%Ð%Ñ%Ø"#ÐÐ#Ð#Ð#Ñ#Ø!& °tÐ!<Ñ!<Ô!<€OÐ<Ð<Ð<Ñ<Ø ÐÐ Ð Ð Ñ ð 	ð ð ð ð ñ ð DIÀ5Ø3ðDñ Dô D€Nð ð ð ñ ð FKÀUØ4ðFñ Fô F€Oð ð ð ñ ð >C¸UÐSWÐ=XÑ=XÔ=XÐÐXÐXÐXÑXØ€L€L�L€L€Lr   ry   N)Ú
__future__r   Útypingr   Úpydanticr   r   Údossier_session_modelsr   r
   r    r%   r7   rB   rL   rW   rc   rk   rq   ry   Úmodel_rebuildr   r   r   ú<module>r—      sN  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à >Ð >Ð >Ð >Ð >Ð >ð;ð ;ð ;ð ;ð ;¨	ñ ;ô ;ð ;ð;ð ;ð ;ð ;ð ;¨ñ ;ô ;ð ;ð;ð ;ð ;ð ;ð ; iñ ;ô ;ð ;ð&;ð ;ð ;ð ;ð ; 9ñ ;ô ;ð ;ð;ð ;ð ;ð ;ð ; )ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ; yñ ;ô ;ð ;ð;ð ;ð ;ð ;ð ; 9ñ ;ô ;ð ;ð.	#ð 	#ð 	#ð 	#ð 	# 9ñ 	#ô 	#ð 	#ðð ð ð ð  yñ ô ð ð;ð ;ð ;ð ;ð ; 	ñ ;ô ;ð ;ð #ð #ð #ð #ð #˜yñ #ô #ð #ðL × &Ò &Ñ (Ô (Ð (Ø × 'Ò 'Ñ )Ô )Ð )Ð )Ð )r   