§
    ÔŸ’j8  ã            	      ó    — d dl mZ 	 d dlmZ d dlmZ d dlmZmZm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZ dd
lmZ  G d„ deeeee¦  «        ZdS )é    )Úannotations)ÚAny)ÚPostgresClient)ÚOperationsActionsResponseÚOperationsBlockersResponseÚOperationsCasesResponseé   )ÚActionsBuilderMixin)ÚBlockersBuilderMixin)ÚCasesBuilderMixin)ÚFollowUpCollectorMixin)ÚCaseHelpersMixinc                  óP   — e Zd ZdZddd„Z	 	 ddd„Z	 	 ddd„Z	 ddd„Z	 ddd„ZdS )ÚOperationsCaseManagementServicezMBuild Phase 1 operations cases/actions/blockers from dossier review sessions.NÚpostgres_clientúPostgresClient | NoneÚreturnÚNonec                ó0   — |pt          ¦   «         | _        d S ©N)r   Ú_postgres_client)Úselfr   s     úEC:\Projects\DSCons\app\services\operations_case_management\service.pyÚ__init__z(OperationsCaseManagementService.__init__   s   € Ø /Ð Cµ>Ñ3CÔ3CˆÔÐÐó    Úproject_codeú
str | NoneÚstatusr   c                óê   ‡ ‡— ‰                       |¬¦  «        \  }}}}ˆ fd„|D ¦   «         }|r4|                     ¦   «                              ¦   «         Šˆfd„|D ¦   «         }t          ||||¬¦  «        S )z>Return operational cases derived from dossier review findings.©r   c                óD   •— g | ]}‰                      |¦  «        D ]}|‘ŒŒS © )Ú_build_cases_from_session)Ú.0ÚsessionÚcaser   s      €r   ú
<listcomp>z>OperationsCaseManagementService.list_cases.<locals>.<listcomp>*   sN   ø€ ð 
ð 
ð 
àØ×6Ò6°wÑ?Ô?ð
ð 
ð ð ð
ð 
ð 
ð 
r   c                óv   •— g | ]5}|j         pd                      ¦   «                              ¦   «         ‰k    ¯3|‘Œ6S ©Ú )Úcurrent_statusÚstripÚlower©r$   ÚitemÚnormalized_statuss     €r   r'   z>OperationsCaseManagementService.list_cases.<locals>.<listcomp>2   sO   ø€ ð ð ð àØÔ'Ð-¨2×4Ò4Ñ6Ô6×<Ò<Ñ>Ô>ÐBSÒSÐSð àSÐSÐSr   ©ÚitemsÚsourceÚused_fallbackÚmessage)Ú_load_sessionsr,   r-   r   ©	r   r   r   Úsessionsr3   r4   r5   r2   r0   s	   `       @r   Ú
list_casesz*OperationsCaseManagementService.list_cases!   sÆ   øø€ ð 48×3FÒ3FØ%ð 4Gñ 4
ô 4
Ñ0ˆ�&˜-¨ð
ð 
ð 
ð 
à#ð
ñ 
ô 
ˆð ð 	Ø &§¢¡¤× 4Ò 4Ñ 6Ô 6Ððð ð ð à!ðñ ô ˆEõ 'ØØØ'Øð	
ñ 
ô 
ð 	
r   r   c                óê   ‡ ‡— ‰                       |¬¦  «        \  }}}}ˆ fd„|D ¦   «         }|r4|                     ¦   «                              ¦   «         Šˆfd„|D ¦   «         }t          ||||¬¦  «        S )zHReturn operational action queue derived from dossier review assignments.r    c                óD   •— g | ]}‰                      |¦  «        D ]}|‘ŒŒS r"   )Ú_build_actions_from_session)r$   r%   Úactionr   s      €r   r'   z@OperationsCaseManagementService.list_actions.<locals>.<listcomp>H   sN   ø€ ð 
ð 
ð 
àØ×:Ò:¸7ÑCÔCð
ð 
ð ð ð
ð 
ð 
ð 
r   c                óv   •— g | ]5}|j         pd                      ¦   «                              ¦   «         ‰k    ¯3|‘Œ6S r)   )r   r,   r-   r.   s     €r   r'   z@OperationsCaseManagementService.list_actions.<locals>.<listcomp>P   sN   ø€ ð ð ð àØ”KÐ% 2×,Ò,Ñ.Ô.×4Ò4Ñ6Ô6Ð:KÒKÐKð àKÐKÐKr   r1   )r6   r,   r-   r   r7   s	   `       @r   Úlist_actionsz,OperationsCaseManagementService.list_actions?   sÆ   øø€ ð 48×3FÒ3FØ%ð 4Gñ 4
ô 4
Ñ0ˆ�&˜-¨ð
ð 
ð 
ð 
à#ð
ñ 
ô 
ˆð ð 	Ø &§¢¡¤× 4Ò 4Ñ 6Ô 6Ððð ð ð à!ðñ ô ˆEõ )ØØØ'Øð	
ñ 
ô 
ð 	
r   r   c                ó|   ‡ — ‰                       |¬¦  «        \  }}}}ˆ fd„|D ¦   «         }t          ||||¬¦  «        S )zCReturn blocker queue derived from blocking dossier review findings.r    c                óD   •— g | ]}‰                      |¦  «        D ]}|‘ŒŒS r"   )Ú_build_blockers_from_session)r$   r%   Úblockerr   s      €r   r'   zAOperationsCaseManagementService.list_blockers.<locals>.<listcomp>d   sN   ø€ ð 
ð 
ð 
àØ×<Ò<¸WÑEÔEð
ð 
ð ð ð
ð 
ð 
ð 
r   r1   )r6   r   )r   r   r8   r3   r4   r5   r2   s   `      r   Úlist_blockersz-OperationsCaseManagementService.list_blockers]   sy   ø€ ð 48×3FÒ3FØ%ð 4Gñ 4
ô 4
Ñ0ˆ�&˜-¨ð
ð 
ð 
ð 
à#ð
ñ 
ô 
ˆõ *ØØØ'Øð	
ñ 
ô 
ð 	
r   ú+tuple[list[dict[str, Any]], str, bool, str]c                óÆ   — | j                              ¦   «         sg dddfS 	 | j                              |¬¦  «        }n # t          $ r}g ddd|› �fcY d}~S d}~ww xY w|ddd	fS )
z9Load dossier review sessions with safe fallback behavior.ÚfallbackTuk   DATABASE_URL chÆ°a Ä‘Æ°á»£c cáº¥u hÃ¬nh; operations case management Ä‘ang tráº£ danh sÃ¡ch rá»—ng an toÃ n.r    u<   KhÃ´ng thá»ƒ táº£i dossier review sessions tá»« PostgreSQL: NÚpostgresFuc   Operations case management Ä‘ang Ä‘Æ°á»£c suy diá»…n tá»« dossier review workflow trong PostgreSQL.)r   Ú
is_enabledÚfetch_dossier_review_sessionsÚ	Exception)r   r   r8   Úexcs       r   r6   z.OperationsCaseManagementService._load_sessionsq   sÉ   € ð
 Ô$×/Ò/Ñ1Ô1ð 	àØØØ}ð	ð ð
	ØÔ,×JÒJØ)ð Kñ ô ˆHˆHøõ ð 	ð 	ð 	àØØØTÈsÐTÐTð	ð ð ð ð ð ð øøøøð	øøøð ØØØqð	
ð 	
s   ¡= ½
AÁAÁAÁAr   )r   r   r   r   )NN)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   rE   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r9   r?   rD   r6   r"   r   r   r   r      sº   € € € € € ð XÐWðDð Dð Dð Dð Dð
 $(Ø!ð
ð 
ð 
ð 
ð 
ð@ $(Ø!ð
ð 
ð 
ð 
ð 
ð> *.ð
ð 
ð 
ð 
ð 
ð, $(ð
ð 
ð 
ð 
ð 
ð 
ð 
r   r   N)Ú
__future__r   Útypingr   Úapp.core.postgresr   Úapp.models.schemasr   r   r   Úactions_builderr
   Úblockers_builderr   Úcases_builderr   Úfollow_up_collectorr   Úhelpersr   r   r"   r   r   ú<module>rZ      s  ðØ "Ð "Ð "Ð "Ð "Ð "à Sà Ð Ð Ð Ð Ð à ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð 1Ð 0Ð 0Ð 0Ð 0Ð 0Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø %Ð %Ð %Ð %Ð %Ð %ðz
ð z
ð z
ð z
ð z
ØØØØØñz
ô z
ð z
ð z
ð z
r   