+
    `ØjÞ!  ã                   ó‚   € R t ^ RIHtHtHt ^ RIHtHtHt ^ RIH	t	 ^ RI
HtHtHt ^ RIHt ^ RIHt R R ltR	 R
 ltR# )uÁ   
Production Dashboard â€” aggregation service.
Computes KPIs, station pipeline counts with exact IN/OUT breakdown,
chassis list with live station status and dwell timers, and today's activity.
)ÚdateÚdatetimeÚtimezone)ÚselectÚfuncÚand_)ÚAsyncSession)ÚChassisMasterÚChassisStatusLogÚVehicleModelMaster)ÚStationMaster)ÚChassisLocationMasterc                ó>   € V ^8„  d   QhR\         R,          R\        /# )é   ÚminsNÚreturn)ÚintÚstr)Úformats   "ÚG/var/www/html/audi_dev/backend/app/modules/yard/production_dashboard.pyÚ__annotate__r      s   € ÷ ñ ”s˜T•zð ¤cñ ó    c                 óh   € V e   V ^ 8  d   R# V ^<,          pV ^<,          pV^ 8”  d	   V RV R2# V R2# )NÚ0mzh Úm© )r   ÚhoursÚrems   &  r   Ú_fmt_minutesr      sH   € Ø‚|�t˜a”xÙØ�B�J€EØ
��)€CØˆq„yØ�˜˜3˜%˜qÐ!Ð!ØˆU�!ˆ9Ðr   c                ó0   € V ^8„  d   QhR\         R\        /# )r   Údbr   )r   Údict)r   s   "r   r   r      s   € ÷ @ñ @¤|ð @¼ñ @r   c           "   ƒ  óÈ  "  € \         P                  ! 4       p\        P                  ! \        P
                  4      pV P                  \        \        P                  ! 4       P                  \        P                  R8H  4      P                  R4      \        P                  ! 4       P                  \        \        P                  R8H  \        P                  R8H  4      4      P                  R4      \        P                  ! 4       P                  \        P                  R8H  4      P                  R4      \        P                  ! 4       P                  \        \        P                  R8H  \        P                   ! \        P                   4      V8H  4      4      P                  R	4      \        P                  ! 4       P                  \        P                  R8H  4      P                  R
4      \        P                  ! 4       P                  R4      4      4      G Rj  x€L
 pVP#                  4       pRVP$                  RVP$                  RVP$                  RVP&                  RVP(                  R	VP*                  R
VP,                  RVP.                  /pV P                  \        \0        P2                  \0        P4                  \0        P6                  \0        P8                  \        P                  ! 4       P                  \        \        P:                  \0        P2                  8H  \        P<                  P?                  R4      \        P@                  PC                  R4      \        P                  R8H  4      4      P                  R4      \        P                  ! 4       P                  \        \        P:                  \0        P2                  8H  \        P@                  P?                  R4      \        P                  R8H  4      4      P                  R4      4      PE                  \        \        P:                  \0        P2                  8H  4      PG                  \0        PH                  R8H  4      PK                  \0        P2                  \0        P4                  \0        P6                  \0        P8                  4      PM                  \0        P8                  4      4      G Rj  x€L
 pVPO                  4        Uu. uF}  pR\Q        VP2                  4      RVP4                  RVP6                  RVP8                  ;'       g    ^ RVPR                  RVPT                  RVPR                  VPT                  ,           /NK  	  ppV P                  \        \        PV                  \        PX                  \        PZ                  \        P                  \        P                  \        P\                  \        P<                  \        P@                  \        P^                  \`        Pb                  \0        P6                  P                  R4      \0        P4                  P                  R4      \d        Pf                  P                  R4      4      PE                  \`        \        Ph                  \`        Ph                  8H  4      PE                  \0        \        P:                  \0        P2                  8H  4      PE                  \d        \        Pj                  \d        Pl                  8H  4      PG                  \        P                  Po                  RR.4      4      PM                  \        P\                  Pq                  4       4      Ps                  ^24      4      G Rj  x€L
 p	. p
V	PO                  4        EF7  pVPt                  pRpRpV'       dr   VP<                  '       d`   VP@                  '       gN   RpV R2p\w        ^ \y        W'P<                  ,
          P{                  4       ^<,          4      4      p\}        V4      pM¢V'       d�   VP@                  '       do   RpV R2pVP<                  ;'       g    VP@                  p\w        ^ \y        VP@                  V,
          P{                  4       ^<,          4      4      p\}        V4      pMVP                  R8X  d   RpRpMR pR!pT
P                  R"\Q        VPV                  4      R#VPX                  R$VPZ                  R%VP                  R&VP                  R'VPb                  ;'       g    R(RT;'       g    R(RVP€                  ;'       g    R(R)TR*TR+TR,TRVP‚                  ;'       g    R(R-VP\                  '       d   VP\                  P…                  4       MRR.VP^                  '       d   VP^                  P…                  4       MR/4       EK:  	  V P                  \        \†        Pˆ                  \†        PŠ                  \†        PŒ                  \†        P4                  \†        PŽ                  \†        P�                  \†        P’                  \        PX                  4      P•                  \        \†        PV                  \        PV                  8H  4      PG                  \        P                   ! \†        P�                  4      V8H  4      PM                  \†        P�                  Pq                  4       4      Ps                  ^4      4      G Rj  x€L
 pVPO                  4        Uu. uF¤  pR/\Q        VPˆ                  4      R#VPX                  R0VPŠ                  R1VPŒ                  RVP4                  ;'       g    R(R2VPŽ                  ;'       g    R(R3VP�                  '       d   VP�                  P…                  4       MRR4VP’                  /NK¦  	  ppR5VR6VR7V
R8V/#  E	L¹ ELu upi  EL` LÚu upi 5i)9z-Return the full production dashboard payload.ÚWIPÚwipÚHANDED_TO_PRODUCTIONÚ
CHASSIS_INÚawaiting_inductionÚREADY_FOR_DISPATCHÚready_for_dispatchÚ
DISPATCHEDÚdispatched_todayÚin_yardÚtotalNÚin_productionÚon_floorÚin_countÚ	out_countTÚ
station_idÚstation_codeÚstation_nameÚsequence_noÚchassis_countÚcurrent_station_nameÚcurrent_station_codeÚcurrent_location_nameÚINz INÚOUTz OUTÚREADYzReady for DispatchÚPENDINGzAwaiting Station 1Ú
chassis_idÚ
chassis_noÚ	fuel_typeÚtracking_statusÚcurrent_statusÚmodel_numberu   â€”Ústation_stateÚstation_statusÚdwell_minutesÚdwell_formattedÚlast_updatedÚhanded_to_production_atÚlog_idÚfrom_statusÚ	to_statusÚscan_locationÚ
changed_atÚremarksÚkpisÚstation_pipelineÚchassis_listÚactivity_feed)Kr   Útodayr   Únowr   ÚutcÚexecuter   r   ÚcountÚfilterr	   rA   Úlabelr   rB   Údispatched_atÚoner$   r'   r)   r+   r,   r-   r   r2   r3   r4   r5   Úcurrent_station_idÚstation_arrived_atÚisnotÚstation_completed_atÚis_Ú	outerjoinÚwhereÚ	is_activeÚgroup_byÚorder_byÚallr   r0   r1   r>   r?   r@   Ú
updated_atrI   r   rC   r   Úlocation_nameÚmodel_idÚcurrent_location_idÚlocation_idÚin_ÚdescÚlimitr7   Úmaxr   Útotal_secondsr   Úappendr8   r9   Ú	isoformatr
   rJ   rK   rL   rM   rN   rO   Újoin)r    rT   Únow_utcÚkpi_qÚrowrP   Ú
stations_qÚrrQ   Úactive_qrR   Úst_nameÚ
dwell_minsÚ	dwell_fmtÚst_stateÚ	st_statusÚarrÚ
activity_qrS   s   &                  r   Úget_production_dashboardr‚      s×  é € ä�JŠJ‹L€EÜ�lŠlœ8Ÿ<™<Ó(€Gð —*‘*ÜÜ�JŠJ‹L×Ñ¤× =Ñ =ÀÑ FÓG×MÑMÈeÓTÜ�JŠJ‹L×ÑÜÜ!×0Ñ0Ð4JÑJÜ!×1Ñ1°\ÑAóó÷
 ‰eÐ(Ó)Ü�JŠJ‹L×Ñ¤× =Ñ =ÐAUÑ UÓV×\Ñ\Ð]qÓrÜ�JŠJ‹L×ÑÜÜ!×1Ñ1°\ÑAÜ—I’Iœm×9Ñ9Ó:¸eÑCóó÷
 ‰eÐ&Ó'Ü�JŠJ‹L×Ñ¤× =Ñ =ÀÑ MÓN×TÑTÐU^Ó_Ü�JŠJ‹L×Ñ˜wÓ'ó!	
ó÷ €Eð( �)‰)‹+€Càˆs�w‰wØ˜Ÿ™Ø�C—G‘GØ˜c×4Ñ4Ø˜c×4Ñ4Ø˜C×0Ñ0Ø�3—;‘;Ø�—‘ð	€Dð —z‘zÜÜ×$Ñ$Ü×&Ñ&Ü×&Ñ&Ü×%Ñ%Ü�JŠJ‹L×ÑÜÜ!×4Ñ4¼×8PÑ8PÑPÜ!×4Ñ4×:Ñ:¸4Ó@Ü!×6Ñ6×:Ñ:¸4Ó@Ü!×1Ñ1°UÑ:ó	ó÷ ‰e�JÓÜ�JŠJ‹L×ÑÜÜ!×4Ñ4¼×8PÑ8PÑPÜ!×6Ñ6×<Ñ<¸TÓBÜ!×1Ñ1°UÑ:óó÷ ‰e�KÓ ó'	
÷* 
‰ÜÜ×,Ñ,´×0HÑ0HÑHó

÷ 
‰Œ}×&Ñ&¨$Ñ.Ó	/ß	‰Ü×$Ñ$Ü×&Ñ&Ü×&Ñ&Ü×%Ñ%ó	

÷ 
‰”-×+Ñ+Ó	,óC"÷ "€JðZ —‘Ô!óñ "ˆAð œ#˜aŸl™lÓ+Ø˜AŸN™NØ˜AŸN™NØ˜1Ÿ=™=×-Ð-¨AØ˜Ÿ
™
Ø˜Ÿ™Ø˜QŸZ™Z¨!¯+©+Õ5ó	
ñ "ð ð ð —Z‘ZÜÜ×$Ñ$Ü×$Ñ$Ü×#Ñ#Ü×)Ñ)Ü×(Ñ(Ü×$Ñ$Ü×,Ñ,Ü×.Ñ.Ü×1Ñ1Ü×+Ñ+Ü×&Ñ&×,Ñ,Ð-CÓDÜ×&Ñ&×,Ñ,Ð-CÓDÜ!×/Ñ/×5Ñ5Ð6MÓNó	
÷ 
‰Ô%¤}×'=Ñ'=ÔAS×A\ÑA\Ñ'\Ó	]ß	‰”=¤-×"BÑ"BÄm×F^ÑF^Ñ"^Ó	_ß	‰Ô(¬-×*KÑ*KÔOd×OpÑOpÑ*pÓ	qß	‰Ü×)Ñ)×-Ñ-¨uÐ6JÐ.KÓLó

÷ 
‰”-×*Ñ*×/Ñ/Ó1Ó	2ß	‰ˆr‹ó/÷ €Hð4 €LØ�\‰\�^ˆØ×(Ñ(ˆØˆ
Øˆ	ç�q×+×+Ð+°A×4J×4JÐ4JØˆHØ"˜) 3˜ˆIÜ˜Q¤ W×/CÑ/CÕ%C×$RÑ$RÓ$TÐWYÕ$YÓ ZÓ[ˆJÜ$ ZÓ0‰Iß˜×/×/Ð/ØˆHØ"˜) 4Ð(ˆIØ×&Ñ&×@Ð@¨!×*@Ñ*@ˆCÜ˜Q¤ Q×%;Ñ%;¸cÕ%A×$PÑ$PÓ$RÐUWÕ$WÓ XÓYˆJÜ$ ZÓ0‰IØ×ÑÐ"6Ô6ØˆHØ,‰Ià ˆHØ,ˆIà×ÑØœ#˜aŸl™lÓ+Ø˜!Ÿ,™,Ø˜Ÿ™Ø˜q×0Ñ0Ø˜a×.Ñ.Ø˜AŸN™N×3Ð3¨eØ" G×$4Ð$4¨uØ" A×$:Ñ$:×$CÐ$C¸eØ˜XØ˜iØ˜ZØ˜yØ# Q×%<Ñ%<×%EÐ%EÀØ¸¿¿¸˜AŸL™L×2Ñ2Ô4È$Ø%ÐPQ×Pi×PiÐPi q×'@Ñ'@×'JÑ'JÔ'LÐosð
÷ 	ñ/ ðT —z‘zÜÜ×#Ñ#Ü×(Ñ(Ü×&Ñ&Ü×)Ñ)Ü×*Ñ*Ü×'Ñ'Ü×$Ñ$Ü×$Ñ$ó		
÷ 
‰ŒmÔ-×8Ñ8¼M×<TÑ<TÑTÓ	Uß	‰Œt�yŠyÔ)×4Ñ4Ó5¸Ñ>Ó	?ß	‰Ô"×-Ñ-×2Ñ2Ó4Ó	5ß	‰ˆr‹ó÷ €Jð6 —‘Ô!óñ "ˆAð ”c˜!Ÿ(™(“mØ˜!Ÿ,™,Ø˜1Ÿ=™=Ø˜Ÿ™Ø˜AŸN™N×3Ð3¨eØ˜QŸ_™_×5Ð5°Ø°a·l·l°l˜!Ÿ,™,×0Ñ0Ô2ÈØ�q—y‘yó		
ñ "ð ð ð 	�ØÐ,Ø˜Ø˜ð	ð òkòB"ùòFòñJùò ùsÈ   ‚Ho"ÈoÈJ:o"ÓoÓo"Ó&AoÔ,=oÕ)Ho"Ý8oÝ9Ao"Þ=o"ßAo"à$o"à6o"áCo"ä"o"ä.o"åo"å"o"å7-o"æ%Eo"ì oìo"ìAoí)oí?oî-oïo"ïo"ïo"ïo"ïo"N)Ú__doc__r   r   r   Ú
sqlalchemyr   r   r   Úsqlalchemy.ext.asyncior   Úapp.models.yard_modelsr	   r
   r   Úapp.models.rm_modelsr   Úapp.models.location_modelsr   r   r‚   r   r   r   Ú<module>r‰      s2   ðñ÷
 .Ñ -ß )Ñ )Ý /ç VÑ VÝ .Ý <õ÷@r   