§
    wK¶jc  ã                  ó*  — d Z ddlmZ ddl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 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 dd
lmZ ddl m!Z! ddl"m#Z# ddl$m%Z%  e¦   «         Z&e& '                    de¬¦  «         ee¦  «        fd9d„¦   «         Z(e& '                    de¬¦  «         ee¦  «        fd:d„¦   «         Z)e& '                    de¬¦  «         ee¦  «        fd;d„¦   «         Z*e& '                    de¬¦  «         e
d¬¦  «         e
d¬¦  «         ee¦  «        fd<d!„¦   «         Z+e& '                    d"e¬¦  «         e
d¬¦  «         e
d¬¦  «         ee¦  «        fd=d$„¦   «         Z,e& '                    d%e¬¦  «         e
d¬¦  «         ee¦  «        fd>d'„¦   «         Z-e& '                    d(e¬¦  «         e
d¬¦  «         e
d¬¦  «         e
d¬¦  «         ee¦  «        fd?d,„¦   «         Z.e& /                    d-e¬¦  «         e eg d.¢¦  «        ¦  «        fd@d2„¦   «         Z0e& '                    d3e¬¦  «         e
d¬¦  «         e
d¬¦  «         ee¦  «        fdAd5„¦   «         Z1e& '                    d6¦  «        dBd8„¦   «         Z2dS )Cz#Operational data routes for DSCons.é    )ÚannotationsN)ÚAny)Ú	APIRouterÚDependsÚHTTPExceptionÚQuery)ÚJSONResponseÚStreamingResponse)Úget_current_userÚrequire_role)
ÚCompanyOperationalStateResponseÚEmployeeLogsResponseÚOperationsActionsResponseÚOperationsBlockersResponseÚOperationsCasesResponseÚProjectManagementResponseÚRemediationBuildRequestÚRemediationBuildResponseÚRemediationGapsResponseÚRemediationListResponse)ÚCompanyOperationalStateService)ÚEmployeeLogsService)ÚOperationsCaseManagementService)ÚProjectManagementService)ÚRemediationPlanningServicez/v1/employees/logs)Úresponse_modelÚcurrent_userúdict[str, Any]Úreturnr   c                óB   — t          ¦   «                              ¦   «         S )zIReturn employee log data with source metadata and safe fallback behavior.)r   Úget_employee_logs©r   s    úDC:\Projects\DSCons\app\modules\operations\presentation\operations.pyÚemployee_logsr$   %   s   € õ
 Ñ Ô ×2Ò2Ñ4Ô4Ð4ó    z/v1/projects/managementr   c                óB   — t          ¦   «                              ¦   «         S )zOReturn project management data with source metadata and safe fallback behavior.)r   Úget_project_management_datar"   s    r#   Úproject_management_datar(   -   s   € õ
 $Ñ%Ô%×AÒAÑCÔCÐCr%   z/v1/company/operational-stater   c                óB   — t          ¦   «                              ¦   «         S )zFReturn aggregated company operational state for the digital twin view.)r   Úget_company_operational_stater"   s    r#   Úcompany_operational_stater+   5   s   € õ *Ñ+Ô+×IÒIÑKÔKÐKr%   z/v1/operations/cases)ÚdefaultÚproject_codeú
str | NoneÚstatusr   c                óH   — t          ¦   «                              | |¬¦  «        S )zJReturn Phase 1 operations cases derived from dossier review workflow data.©r-   r/   )r   Ú
list_cases©r-   r/   r   s      r#   Úoperations_casesr4   ?   s-   € õ +Ñ,Ô,×7Ò7Ø!Øð 8ñ ô ð r%   z/v1/operations/actionsr   c                óH   — t          ¦   «                              | |¬¦  «        S )zQReturn Phase 1 operations action queue derived from dossier review workflow data.r1   )r   Úlist_actionsr3   s      r#   Úoperations_actionsr7   L   s-   € õ +Ñ,Ô,×9Ò9Ø!Øð :ñ ô ð r%   z/v1/operations/blockersr   c                óF   — t          ¦   «                              | ¬¦  «        S )zRReturn Phase 1 operations blocker queue derived from dossier review workflow data.)r-   )r   Úlist_blockers)r-   r   s     r#   Úoperations_blockersr:   Y   s!   € õ +Ñ,Ô,×:Ò:ÈÐ:ÑUÔUÐUr%   z/v1/remediation/plansÚ	review_idÚfinding_coder   c                óJ   — t          ¦   «                              | ||¬¦  «        S )z=Return remediation plans inferred from open dossier findings.)r-   r;   r<   )r   Ú
list_plans)r-   r;   r<   r   s       r#   Úlist_remediation_plansr?   b   s0   € õ &Ñ'Ô'×2Ò2Ø!ØØ!ð 3ñ ô ð r%   z/v1/remediation/plans/build)Ú
superadminÚdirectorÚpmÚsite_engineerÚpayloadr   r   c                óD   — t          ¦   «                              | ¦  «        S )z=Build one remediation plan from an explicit selector payload.)r   Ú
build_plan)rD   r   s     r#   Úbuild_remediation_planrG   q   s   € õ &Ñ'Ô'×2Ò2°7Ñ;Ô;Ð;r%   z/v1/remediation/gapsr   c                óH   — t          ¦   «                              | |¬¦  «        S )zGReturn normalized remediation gaps inferred from open dossier findings.)r-   r;   )r   Ú	list_gaps)r-   r;   r   s      r#   Úlist_remediation_gapsrJ   |   s-   € õ &Ñ'Ô'×1Ò1Ø!Øð 2ñ ô ð r%   z$/v1/company/operational-state/streamr
   c               ƒ  óH   K  — d„ } t           | ¦   «         dddddœ¬¦  «        S )z=Stream aggregated company operational state updates over SSE.c                ó  K  — ddl m}  t          ¦   «         }	  | |j        ¦  «        ƒ d {V —†}|                     ¦   «         }dt          |¬¦  «        j                             d¦  «        › d�W V — t          j	        d¦  «        ƒ d {V —† Œt)	Nr   )Úrun_in_threadpoolTzevent: operational_state
data: )Úcontentzutf-8z

é   )
Ústarlette.concurrencyrM   r   r*   Ú
model_dumpr	   ÚbodyÚdecodeÚasyncioÚsleep)rM   ÚserviceÚstaterD   s       r#   Úevent_generatorz9company_operational_state_stream.<locals>.event_generator�   s¼   è è € à;Ð;Ð;Ð;Ð;Ð;Ý0Ñ2Ô2ˆð	#Ø+Ð+¨GÔ,QÑRÔRÐRÐRÐRÐRÐRÐRˆEØ×&Ò&Ñ(Ô(ˆGØmµ\È'Ð5RÑ5RÔ5RÔ5W×5^Ò5^Ð_fÑ5gÔ5gÐmÐmÐmÐmÐmÐmÐmÝ”- Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ð		#r%   ztext/event-streamzno-cachez
keep-aliveÚno)zCache-ControlÚ
ConnectionzX-Accel-Buffering)Ú
media_typeÚheaders)r
   )rX   s    r#   Ú company_operational_state_streamr]   ‰   sO   è è € ð#ð #ð #õ ØˆÑÔØ&à'Ø&Ø!%ð
ð 
ðñ ô ð r%   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r-   r.   r/   r.   r   r   r   r   )r-   r.   r/   r.   r   r   r   r   )r-   r.   r   r   r   r   )
r-   r.   r;   r.   r<   r.   r   r   r   r   )rD   r   r   r   r   r   )r-   r.   r;   r.   r   r   r   r   )r   r
   )3Ú__doc__Ú
__future__r   rT   Útypingr   Úfastapir   r   r   r   Úfastapi.responsesr	   r
   Ú"app.modules.auth.presentation.authr   r   Úapp.models.schemasr   r   r   r   r   r   r   r   r   r   ÚDapp.modules.operations.application.company_operational_state_servicer   Ú2app.modules.core.application.employee_logs_servicer   ÚEapp.modules.operations.application.operations_case_management_servicer   Ú;app.modules.projects.application.project_management_servicer   Ú9app.modules.core.application.remediation_planning_servicer   ÚrouterÚgetr$   r(   r+   r4   r7   r:   r?   ÚpostrG   rJ   r]   © r%   r#   ú<module>rn      s  ðØ )Ð )à "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =à MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð SÐ RÐ RÐ RÐ RÐ Rðð ð ð ð ð ð aÐ `Ð `Ð `Ð `Ð `Ø `Ð `Ð `Ð `Ð `Ð `à	ˆ‰Œ€ð ‡‚Ð Ð1E€ÑFÔFà#* 7Ð+;Ñ#<Ô#<ð5ð 5ð 5ð 5ñ GÔFð5ð ‡‚Ð%Ð6O€ÑPÔPà#* 7Ð+;Ñ#<Ô#<ðDð Dð Dð Dñ QÔPðDð ‡‚Ø#Ð4Sð ñ ô ð $+ 7Ð+;Ñ#<Ô#<ðLð Lð Lð Lñô ðLð ‡‚Ð"Ð3J€ÑKÔKà$˜u¨TÐ2Ñ2Ô2Ø˜ tÐ,Ñ,Ô,Ø#* 7Ð+;Ñ#<Ô#<ð	ð 	ð 	ð 	ñ LÔKð	ð ‡‚Ð$Ð5N€ÑOÔOà$˜u¨TÐ2Ñ2Ô2Ø˜ tÐ,Ñ,Ô,Ø#* 7Ð+;Ñ#<Ô#<ð	ð 	ð 	ð 	ñ PÔOð	ð ‡‚Ð%Ð6P€ÑQÔQà$˜u¨TÐ2Ñ2Ô2Ø#* 7Ð+;Ñ#<Ô#<ðVð Vð Vð Vñ RÔQðVð ‡‚Ð#Ð4K€ÑLÔLà$˜u¨TÐ2Ñ2Ô2Ø!˜E¨$Ð/Ñ/Ô/Ø$˜u¨TÐ2Ñ2Ô2Ø#* 7Ð+;Ñ#<Ô#<ð	ð ð ð ñ MÔLðð ‡‚Ð*Ð;S€ÑTÔTð $+ 7ØˆÐFÐFÐFÑGÔGñ$ô $ð<ð <ð <ð <ñ UÔTð<ð ‡‚Ð"Ð3J€ÑKÔKà$˜u¨TÐ2Ñ2Ô2Ø!˜E¨$Ð/Ñ/Ô/Ø#* 7Ð+;Ñ#<Ô#<ð	ð 	ð 	ð 	ñ LÔKð	ð ‡‚Ð2Ñ3Ô3ðð ð ñ 4Ô3ðð ð r%   