§
    s�’jõ  ã                  ó|  — 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 d dlmZmZ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  e¦   «         Ze                     de¬	¦  «         e eg d
¢¦  «        ¦  «        fd3d„¦   «         Ze                     de¬	¦  «         ed¬¦  «         ed¬¦  «         ee
¦  «        fd4d„¦   «         Ze                     de¬	¦  «         ee
¦  «        fd5d„¦   «         Z e                     de¬	¦  «         e eg d
¢¦  «        ¦  «        fd6d„¦   «         Z!e                     d e¬	¦  «         e eg d!¢¦  «        ¦  «        fd7d$„¦   «         Z"e                     d%e¬	¦  «         e eg d
¢¦  «        ¦  «        fd8d(„¦   «         Z#e                     d)e¬	¦  «         e eg d!¢¦  «        ¦  «        fd9d+„¦   «         Z$e                     d,e¬	¦  «         e eg d!¢¦  «        ¦  «        fd:d.„¦   «         Z%e                     d/e¬	¦  «         e eg d
¢¦  «        ¦  «        fd;d2„¦   «         Z&dS )<é    )Úannotations)ÚAny)Ú	APIRouterÚDependsÚHTTPExceptionÚQuery)Úget_current_userÚrequire_role)
Ú!DossierReviewFindingCreateRequestÚ!DossierReviewSessionCreateRequestÚDossierReviewSessionRecordÚDossierReviewSessionsResponseÚWorkflowReviewAssignmentRequestÚWorkflowReviewCloseRequestÚWorkflowReviewRunSummaryÚWorkflowReviewStartRequestÚWorkflowReviewSubmissionRequestÚ!WorkflowReviewVerificationRequesté   )Ú_build_postgres_clientÚ#_build_workflow_persistence_serviceÚ_get_review_or_404z/v1/dossiers/reviews)Úresponse_model)Ú
superadminÚdirectorÚpmÚsite_engineerÚpayloadr   Úcurrent_userúdict[str, Any]Úreturnr   c                óî   — t          ¦   «         }	 |                     |                      d¬¦  «        ¦  «        }n1# t          $ r$}t	          dt          |¦  «        ¬¦  «        |‚d}~ww xY wt          di |¤ŽS )z.Create a dossier review session in PostgreSQL.T©Úexclude_noneé�  ©Ústatus_codeÚdetailN© )r   Úcreate_dossier_review_sessionÚ
model_dumpÚ
ValueErrorr   Ústrr   )r   r   Úpostgres_clientÚsessionÚexcs        úKC:\Projects\DSCons\app\api\routers\dossier_modules\dossier_review_routes.pyÚcreate_dossier_reviewr2      s”   € õ -Ñ.Ô.€OðGØ!×?Ò?Ø×Ò¨DÐÑ1Ô1ñ
ô 
ˆˆøõ ð Gð Gð GÝ¨µC¸±H´HÐ=Ñ=Ô=À3ÐFøøøøðGøøøå%Ð0Ð0¨Ð0Ð0Ð0s   �): º
A(ÁA#Á#A(N)ÚdefaultÚproject_codeú
str | NoneÚstatusr   c                ó¦   ‡— t          ¦   «         }|                     | ¬¦  «        }‰rˆfd„|D ¦   «         }t          d„ |D ¦   «         ddd¬¦  «        S )z-List dossier review sessions from PostgreSQL.)r4   c                óò   •— g | ]s}t          |                     d d¦  «        ¦  «                             ¦   «                              ¦   «         ‰                     ¦   «                              ¦   «         k    ¯q|‘ŒtS )r6   Ú )r-   ÚgetÚstripÚlower)Ú.0Úitemr6   s     €r1   ú
<listcomp>z(list_dossier_reviews.<locals>.<listcomp>:   sp   ø€ ð 
ð 
ð 
àÝ�4—8’8˜H bÑ)Ô)Ñ*Ô*×0Ò0Ñ2Ô2×8Ò8Ñ:Ô:¸f¿lºl¹n¼n×>RÒ>RÑ>TÔ>TÒTÐTð àTÐTÐTó    c                ó&   — g | ]}t          d i |¤Ž‘ŒS )r)   )r   )r=   r>   s     r1   r?   z(list_dossier_reviews.<locals>.<listcomp>@   s'   € ÐDÐDÐD°dÕ)Ð1Ð1¨DÐ1Ð1ÐDÐDÐDr@   ÚpostgresFuO   Dossier review workflow Ä‘ang dÃ¹ng PostgreSQL lÃ m nguá»“n dá»¯ liá»‡u chÃ­nh.)ÚitemsÚsourceÚused_fallbackÚmessage)r   Úfetch_dossier_review_sessionsr   )r4   r6   r   r.   rC   s    `   r1   Úlist_dossier_reviewsrH   0   s‰   ø€ õ -Ñ.Ô.€OØ×9Ò9À|Ð9ÑTÔT€EØð 
ð
ð 
ð 
ð 
àð
ñ 
ô 
ˆõ
 )ØDÐD¸eÐDÑDÔDØØØað	ñ ô ð r@   z /v1/dossiers/reviews/{review_id}Ú	review_idr-   c                ó:   — t          t          ¦   «         | ¦  «        S )z3Return one dossier review session by its review_id.)r   r   )rI   r   s     r1   Úget_dossier_reviewrK   G   s   € õ Õ4Ñ6Ô6¸	ÑBÔBÐBr@   z)/v1/dossiers/reviews/{review_id}/findingsr   c                óø   — t          ¦   «         }	 |                     | |                     d¬¦  «        ¦  «         n1# t          $ r$}t	          dt          |¦  «        ¬¦  «        |‚d}~ww xY wt          || ¦  «        S )zGCreate a finding in PostgreSQL and return the refreshed review session.Tr#   r%   r&   N)r   Úcreate_dossier_review_findingr+   r,   r   r-   r   )rI   r   r   r.   r0   s        r1   Úadd_dossier_review_findingrN   Q   s˜   € õ -Ñ.Ô.€OðGØ×5Ò5Ø�w×)Ò)°tÐ)Ñ<Ô<ñ	
ô 	
ð 	
ð 	
øõ ð Gð Gð GÝ¨µC¸±H´HÐ=Ñ=Ô=À3ÐFøøøøðGøøøå˜o¨yÑ9Ô9Ð9ó   �*; »
A)ÁA$Á$A)zB/v1/dossiers/reviews/{review_id}/findings/{finding_id}/assignments)r   r   r   Ú
finding_idr   c                óú   — t          ¦   «         }	 |                     | ||                     d¬¦  «        ¦  «         n1# t          $ r$}t	          dt          |¦  «        ¬¦  «        |‚d}~ww xY wt          || ¦  «        S )zGAssign a finding in PostgreSQL and return the refreshed review session.Tr#   r%   r&   N)r   Úassign_dossier_review_findingr+   r,   r   r-   r   )rI   rP   r   r   r.   r0   s         r1   rR   rR   g   sš   € õ -Ñ.Ô.€OðGØ×5Ò5Ø�z 7×#5Ò#5À4Ð#5Ñ#HÔ#Hñ	
ô 	
ð 	
ð 	
øõ ð Gð Gð GÝ¨µC¸±H´HÐ=Ñ=Ô=À3ÐFøøøøðGøøøå˜o¨yÑ9Ô9Ð9s   �+< ¼
A*ÁA%Á%A*z^/v1/dossiers/reviews/{review_id}/findings/{finding_id}/assignments/{assignment_id}/submissionsÚassignment_idr   c                ó  — t          ¦   «         }	 |                     d¬¦  «        }||d<   |                     | ||¦  «         n1# t          $ r$}t	          dt          |¦  «        ¬¦  «        |‚d}~ww xY wt          || ¦  «        S )zMSubmit supplement data in PostgreSQL and return the refreshed review session.Tr#   rS   r%   r&   N)r   r+   Ú submit_dossier_review_supplementr,   r   r-   r   )rI   rP   rS   r   r   r.   Úsubmission_payloadr0   s           r1   rU   rU   ~   s¬   € õ -Ñ.Ô.€OðGØ$×/Ò/¸TÐ/ÑBÔBÐØ.;Ð˜?Ñ+Ø×8Ò8Ø�zÐ#5ñ	
ô 	
ð 	
ð 	
øõ ð Gð Gð GÝ¨µC¸±H´HÐ=Ñ=Ô=À3ÐFøøøøðGøøøå˜o¨yÑ9Ô9Ð9ó   �2A Á
A1ÁA,Á,A1zY/v1/dossiers/reviews/{review_id}/findings/{finding_id}/assignments/{assignment_id}/verifyr   c                ó  — t          ¦   «         }	 |                     d¬¦  «        }||d<   |                     | ||¦  «         n1# t          $ r$}t	          dt          |¦  «        ¬¦  «        |‚d}~ww xY wt          || ¦  «        S )zGVerify a finding in PostgreSQL and return the refreshed review session.Tr#   rS   r%   r&   N)r   r+   Úverify_dossier_review_findingr,   r   r-   r   )rI   rP   rS   r   r   r.   Úverify_payloadr0   s           r1   rY   rY   ˜   s©   € õ -Ñ.Ô.€OðGØ ×+Ò+¸Ð+Ñ>Ô>ˆØ*7ˆ�Ñ'Ø×5Ò5Ø�z >ñ	
ô 	
ð 	
ð 	
øõ ð Gð Gð GÝ¨µC¸±H´HÐ=Ñ=Ô=À3ÐFøøøøðGøøøå˜o¨yÑ9Ô9Ð9rW   z&/v1/dossiers/reviews/{review_id}/closer   c                óð   — t          ¦   «         }	 |                     | |                     d¬¦  «        ¦  «        }n1# t          $ r$}t	          dt          |¦  «        ¬¦  «        |‚d}~ww xY wt          di |¤ŽS )z-Close a dossier review session in PostgreSQL.Tr#   r%   r&   Nr)   )r   Úclose_dossier_review_sessionr+   r,   r   r-   r   )rI   r   r   r.   r/   r0   s         r1   Úclose_dossier_reviewr]   ²   s–   € õ -Ñ.Ô.€OðGØ!×>Ò>Ø�w×)Ò)°tÐ)Ñ<Ô<ñ
ô 
ˆˆøõ ð Gð Gð GÝ¨µC¸±H´HÐ=Ñ=Ô=À3ÐFøøøøðGøøøå%Ð0Ð0¨Ð0Ð0Ð0rO   z"/v1/workflows/dossier-review/startr   r   c                ó¬   — t          ¦   «         }	 |                     | ¦  «        S # t          $ r$}t          dt	          |¦  «        ¬¦  «        |‚d}~ww xY w)zPStart a persisted dossier review workflow run and return its structured summary.r%   r&   N)r   Ústart_review_runr,   r   r-   )r   r   Úservicer0   s       r1   Ústart_dossier_review_workflowra   Ç   sg   € õ 2Ñ3Ô3€GðGØ×'Ò'¨Ñ0Ô0Ð0øÝð Gð Gð GÝ¨µC¸±H´HÐ=Ñ=Ô=À3ÐFøøøøðGøøøs   �% ¥
A¯AÁA)r   r   r   r    r!   r   )r4   r5   r6   r5   r   r    r!   r   )rI   r-   r   r    r!   r   )rI   r-   r   r   r   r    r!   r   )
rI   r-   rP   r-   r   r   r   r    r!   r   )rI   r-   rP   r-   rS   r-   r   r   r   r    r!   r   )rI   r-   rP   r-   rS   r-   r   r   r   r    r!   r   )rI   r-   r   r   r   r    r!   r   )r   r   r   r    r!   r   )'Ú
__future__r   Útypingr   Úfastapir   r   r   r   Úapp.api.routers.authr	   r
   Úapp.models.schemasr   r   r   r   r   r   r   r   r   r   Úhelpersr   r   r   ÚrouterÚpostr2   r:   rH   rK   rN   rR   rU   rY   r]   ra   r)   r@   r1   ú<module>rj      s¬  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð 
ˆ‰Œ€ð ‡‚Ð#Ð4N€ÑOÔOð $+ 7ØˆÐFÐFÐFÑGÔGñ$ô $ð1ð 1ð 1ð 1ñ PÔOð1ð" ‡‚Ð"Ð3P€ÑQÔQà$˜u¨TÐ2Ñ2Ô2Ø˜ tÐ,Ñ,Ô,Ø#* 7Ð+;Ñ#<Ô#<ðð ð ð ñ RÔQðð, ‡‚Ø&Ð7Qð ñ ô ð 4;°7Ð;KÑ3LÔ3LðCð Cð Cð Cñô ðCð ‡‚Ø/Ø-ð ñ ô ð $+ 7ØˆÐFÐFÐFÑGÔGñ$ô $ð:ð :ð :ð :ñ	ô ð:ð$ ‡‚ØHØ-ð ñ ô ð $+ 7ØˆÐ5Ð5Ð5Ñ6Ô6ñ$ô $ð	:ð :ð :ð :ñ	ô ð:ð& ‡‚ØdØ-ð ñ ô ð $+ 7ØˆÐFÐFÐFÑGÔGñ$ô $ð:ð :ð :ð :ñ	ô ð:ð, ‡‚Ø_Ø-ð ñ ô ð $+ 7ØˆÐ5Ð5Ð5Ñ6Ô6ñ$ô $ð:ð :ð :ð :ñ	ô ð:ð, ‡‚Ø,Ð=Wð ñ ô ð $+ 7ØˆÐ5Ð5Ð5Ñ6Ô6ñ$ô $ð1ð 1ð 1ð 1ñô ð1ð$ ‡‚Ø(Ð9Qð ñ ô ð
 $+ 7ØˆÐFÐFÐFÑGÔGñ$ô $ðGð Gð Gð Gñô ðGð Gð Gr@   