§
    ÔŸ’j£  ã                  ó~  — 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d<d„¦   «         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dAd'„¦   «         Z-e& '                    d(e¬¦  «         e
d¬¦  «         e
d¬¦  «         e
d¬¦  «         ee¦  «        fdBd,„¦   «         Z.e& /                    d-e¬¦  «         e eg d.¢¦  «        ¦  «        fdCd2„¦   «         Z0e& '                    d3e¬¦  «         e
d¬¦  «         e
d¬¦  «         ee¦  «        fdDd5„¦   «         Z1e& '                    d6¦  «        dEd8„¦   «         Z2e& '                    d9¦  «         ee¦  «        fdFd;„¦   «         Z3dS )Gz#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    ú0C:\Projects\DSCons\app\api\routers\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  — t          ¦   «         } 	 |                      ¦   «                              ¦   «         }dt          |¬¦  «        j                             d¦  «        › d�W V — t          j        d¦  «        ƒ d {V —† Œp)NTzevent: operational_state
data: )Úcontentzutf-8z

é   )r   r*   Ú
model_dumpr	   ÚbodyÚdecodeÚasyncioÚsleep)ÚservicerD   s     r#   Úevent_generatorz9company_operational_state_stream.<locals>.event_generator�   s‘   è è € å0Ñ2Ô2ˆð	#Ø×;Ò;Ñ=Ô=×HÒHÑJÔJˆ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
   )rU   s    r#   Ú company_operational_state_streamrZ   ‰   sO   è è € ð#ð #ð #õ ØˆÑÔØ&à'Ø&Ø!%ð
ð 
ðñ ô ð r%   z$/v1/dossiers/{project_code}/coverageÚstrc                ó¨   — 	 t          ¦   «                              | ¦  «        S # t          $ r$}t          dt	          |¦  «        ¬¦  «        |‚d}~ww xY w)zAReturn manifest-based dossier coverage report for a project code.i”  )Ústatus_codeÚdetailN)r   Úget_project_coverageÚ
ValueErrorr   r[   )r-   r   Úexcs      r#   Údossier_coveragerb       s`   € ð
GÝ)Ñ+Ô+×@Ò@ÀÑNÔNÐNøÝð Gð Gð GÝ¨µC¸±H´HÐ=Ñ=Ô=À3ÐFøøøøðGøøøs   ‚ # £
A­AÁA)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
   )r-   r[   r   r   )4Ú__doc__Ú
__future__r   rR   Útypingr   Úfastapir   r   r   r   Úfastapi.responsesr	   r
   Úapp.api.routers.authr   r   Úapp.models.schemasr   r   r   r   r   r   r   r   r   r   Ú.app.services.company_operational_state_servicer   Ú"app.services.employee_logs_servicer   Ú/app.services.operations_case_management_servicer   Ú'app.services.project_management_servicer   Ú)app.services.remediation_planning_servicer   ÚrouterÚgetr$   r(   r+   r4   r7   r:   r?   ÚpostrG   rJ   rZ   rb   © r%   r#   ú<module>rs      sV  ðØ )Ð )à "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð CÐ BÐ BÐ BÐ BÐ Bðð ð ð ð ð ð MÐ LÐ LÐ LÐ LÐ LØ PÐ PÐ PÐ PÐ PÐ Pà	ˆ‰Œ€ð ‡‚Ð Ð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ðð, ‡‚Ð2Ñ3Ô3à6=°gÐ>NÑ6OÔ6OðGð Gð Gð Gñ 4Ô3ðGð Gð Gr%   