+
    `Øj^Ž  ã                   ó2  € ^ RI H t HtHt ^ RIHt ^ RIHtHtHtH	t	 ^ RI
HtHtHtHt ^ RIHt ^ RIHt ^ RIHtHtHtHt ^ RIHtHt ^ R	IHtHt ^ R
IHt ^ RI H!t!H"t"H#t# ^ RI$H%t%H&t& ^ RI'H(t(H)t)H*t* ^ RI+H,t, ^RI-H.t.H/t/H0t0H1t1H2t2 ^RI3H4t4  ! R R4      t5R# )é    )ÚdatetimeÚtimezoneÚdate)ÚUUID)ÚListÚDictÚAnyÚOptional)ÚselectÚor_Úand_Úfunc©ÚAsyncSession)ÚHTTPException)ÚChassisMasterÚChassisMovementLogÚChassisStoreHandoverÚVehicleModelMaster)ÚCustomerMasterÚClientMaster)ÚDealerOrderVehicleÚDealerOrder)ÚStationMaster)ÚChassisStationLogÚProductionHoldÚDelayReasonMaster)ÚQaChecksheetInstanceÚQaCheckpointResponse)ÚDispatchThermalChecksheetÚDispatchGatePassÚDispatchGatePassItem)Ú
LoginUsers)ÚChassisSearchResultÚChassisLifecycleResponseÚStationVisitLogÚTimelineMilestoneÚClientUpdateMessages)Úresolve_chassis_order_specc                   ó¦   a € ] tR t^t o V 3R lR ltRV 3R lR lltV 3R lR ltRV 3R lR	 lltV 3R
 lR ltV 3R lR lt	V 3R lR lt
RtV tR# )ÚChassisTrackerServicec                ó    <€ V ^8„  d   QhRS[ /# )é   Údbr   )ÚformatÚ__classdict__s   "€ÚE/var/www/html/audi_dev/backend/app/modules/chassis_tracker/service.pyÚ__annotate__Ú"ChassisTrackerService.__annotate__   s   ø€ ÷ ñ ™<ñ ó    c                ó   € Wn         R # ©N©r.   )Úselfr.   s   &&r1   Ú__init__ÚChassisTrackerService.__init__   s   € ØŽr4   c                ó<   <€ V ^8„  d   QhRS[ RS[RS[S[,          /# )r-   ÚqueryÚlimitÚreturn)ÚstrÚintr   r$   )r/   r0   s   "€r1   r2   r3      s-   ø€ ÷ Mñ M©#ð M±cð MÁ4ÑH[ÕC\ñ Mr4   c              ƒ  óâ  "  € T;'       g    R P                  4       pV'       gL   \        \        4      P                  \        P                  P                  4       4      P                  V4      pEM&RV R2p\        \        4      P                  \        \        P                  \        P                  8H  4      P                  \        \        P                  \        P                  8H  4      P                  \        \        P                  P!                  V4      \        P"                  P!                  V4      \        P$                  P!                  V4      4      4      P                  \        P                  P                  4       4      P                  V4      pV P&                  P)                  V4      G Rj  x€L
 pVP+                  4       P-                  4       pV'       g   . # V Uu0 uF"  qˆP                  '       g   K  VP                  kK$  	  p	pV Uu0 uF"  qˆP                  '       g   K  VP                  kK$  	  p
pV Uu0 uF"  qˆP.                  '       g   K  VP.                  kK$  	  ppV Uu0 uF"  qˆP0                  '       g   K  VP0                  kK$  	  pp/ pV	'       d”   V P&                  P)                  \        \        4      P                  \        P                  P3                  V	4      4      4      G Rj  x€L
 pVP+                  4       P-                  4        Uu/ uF  qÿP                  VbK  	  pp/ pV
'       dŸ   V P&                  P)                  \        \        4      P                  \        P                  P3                  V
4      4      4      G Rj  x€L
 pVP+                  4       P-                  4        Uu/ uF  pVP                  VP$                  bK  	  pp/ pV'       dž   V P&                  P)                  \        \4        4      P                  \4        P.                  P3                  V4      4      4      G Rj  x€L
 pVP+                  4       P-                  4        Uu/ uF  qˆP.                  VP$                  bK  	  pp/ pV'       dŸ   V P&                  P)                  \        \6        4      P                  \6        P8                  P3                  V4      4      4      G Rj  x€L
 pVP+                  4       P-                  4        Uu/ uF  pVP8                  VP:                  bK  	  pp. pV EF   pVP=                  VP                  4      pVP=                  VP                  4      pVP=                  VP.                  4      pVP=                  VP0                  4      pV P?                  V4      pTPA                  \C        VPD                  VP                  V'       d   VP"                  MRV'       d   VP"                  MRVVVPF                  VPH                  VVVPJ                  R7      4       EK  	  V#  EL„u upi u upi u upi u upi  ELUu upi  ELÀu upi  EL u upi  EL�u upi 5i)Ú Ú%N)Ú
chassis_idÚ
chassis_noÚ
model_nameÚ
model_codeÚdealer_nameÚclient_nameÚcurrent_statusÚtracking_statusÚcurrent_station_nameÚprogress_percentÚarrival_date)&Ústripr   r   Úorder_byÚ
created_atÚdescr=   Ú	outerjoinr   Úmodel_idr   Ú	dealer_idÚcustomer_idÚwherer   rE   ÚilikeÚmodel_numberÚnamer.   ÚexecuteÚscalarsÚallÚ	client_idÚcurrent_station_idÚin_r   r   Ú
station_idÚstation_nameÚgetÚ_calculate_progress_percentÚappendr$   rD   rJ   rK   rN   )r8   r<   r=   ÚqÚstmtÚsearch_patternÚresultÚchassis_listÚcÚ	model_idsÚ
dealer_idsÚ
client_idsÚstation_idsÚ
models_mapÚm_resÚmÚdealers_mapÚd_resÚdÚclients_mapÚc_resÚstations_mapÚs_resÚsÚoutÚmodelrH   rI   rb   Úprogresss   &&&                           r1   Úsearch_chassisÚ$ChassisTrackerService.search_chassis   s�  é € Ø�[ˆ[�b×ÑÓ!ˆßÜœ-Ó(×1Ñ1´-×2JÑ2J×2OÑ2OÓ2QÓR×XÑXÐY^Ó_ŠDà    1˜XˆNä”}Ó%ß‘Ô-¬}×/EÑ/EÔI[×IdÑIdÑ/dÓeß‘œ>¬=×+BÑ+BÄn×F`ÑF`Ñ+`Óaß‘ÜÜ%×0Ñ0×6Ñ6°~ÓFÜ*×7Ñ7×=Ñ=¸nÓMÜ&×+Ñ+×1Ñ1°.ÓAóó÷ ‘œ-×2Ñ2×7Ñ7Ó9Ó:ß‘�u“ð ð —w‘w—‘ tÓ,×,ˆØ—~‘~Ó'×+Ñ+Ó-ˆçØˆIñ *6ÓD© A¿½”Z�Q—Z”Z©ˆ	ÐDÙ+7ÓG©< a¿;½;”k�a—k”k©<ˆ
ÐGÙ+7ÓG©< a¿;½;”k�a—k”k©<ˆ
ÐGÙ5AÓZ±\°×EYÕEYÔ+�q×+Ô+±\ˆÐZàˆ
ßØŸ'™'Ÿ/™/¬&Ô1CÓ*D×*JÑ*JÔK]×KfÑKf×KjÑKjÐktÓKuÓ*vÓw×wˆEØ16·±³×1DÑ1DÔ1FÓGÑ1F¨AŸ*™* aš-Ñ1FˆJÐGàˆßØŸ'™'Ÿ/™/¬&´Ó*@×*FÑ*FÄ~×GaÑGa×GeÑGeÐfpÓGqÓ*rÓs×sˆEØ:?¿-¹-»/×:MÑ:MÔ:OÓPÑ:O°Q˜1Ÿ=™=¨!¯&©&Ò0Ñ:OˆKÐPàˆßØŸ'™'Ÿ/™/¬&´Ó*>×*DÑ*DÄ\×E[ÑE[×E_ÑE_Ð`jÓEkÓ*lÓm×mˆEØ8=¿¹»×8KÑ8KÔ8MÓNÑ8M°1Ÿ;™;¨¯©Ò.Ñ8MˆKÐNàˆßØŸ'™'Ÿ/™/¬&´Ó*?×*EÑ*EÄm×F^ÑF^×FbÑFbÐcnÓFoÓ*pÓq×qˆEØBGÇ-Á-Ã/×BUÑBUÔBWÓXÑBW¸Q˜AŸL™L¨!¯.©.Ò8ÑBWˆLÐXàˆÜˆAØ—N‘N 1§:¡:Ó.ˆEØ%Ÿ/™/¨!¯+©+Ó6ˆKØ%Ÿ/™/¨!¯+©+Ó6ˆKØ'×+Ñ+¨A×,@Ñ,@ÓAˆLà×7Ñ7¸Ó:ˆHà�J‰JÜ#Ø Ÿ|™|Ø Ÿ|™|ß5:˜u×1Ò1Àß5:˜u×1Ò1ÀØ +Ø +Ø#$×#3Ñ#3Ø$%×$5Ñ$5Ø)5Ø%-Ø!"§¡ô÷ñ ð. ˆ
òq -ùò EùÚGùÚGùÚZò xùÚGò tùÚPò nùÚNò rùÚXùs  ‚"Y/¥FY/Æ4X8Æ5)Y/ÇY/Ç%X;Ç=X;ÈY/ÈY È+Y È;Y/ÉYÉYÉ)Y/É/Y
ÊY
ÊA#Y/Ë:YË;$Y/ÌYÌ4Y/Í AY/ÎYÎ$Y/Î< YÏY/Ï(AY/Ð?YÑ $Y/Ñ$Y"ÒY/ÒAY/Ó&Y'Ó'$Y/Ô Y*Ô+C	Y/×5AY/Ø;Y/ÙY/ÙY/Ù"Y/Ù*Y/c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r-   Úchassis_identifierr>   )r?   r%   )r/   r0   s   "€r1   r2   r3   n   s    ø€ ÷ g
ñ g
¹cð g
ÑF^ñ g
r4   c               ƒ  ó0-  aK"  € T;'       g    R P                  4       pV'       g   \        RRR7      hRp \        V4      pV P                  P	                  \        \        4      P                  \        P                  V8H  4      4      G Rj  x€L
 P                  4       pV'       gk   V P                  P	                  \        \        4      P                  \        P                  P                  V4      4      4      G Rj  x€L
 P                  4       pV'       g   \        RRV R2R7      hRpRpVP                  '       d‹   V P                  P	                  \        \        4      P                  \        P                  VP                  8H  4      4      G Rj  x€L
 P                  4       pV'       d   \        VRR4      p\        VRR4      pRp. p	VP                   '       d}   V P                  P	                  \        \"        4      P                  \"        P$                  VP                   8H  4      4      G Rj  x€L
 P                  4       p
V
'       d   V
P&                  pRpRpVP(                  '       d‰   V P                  P	                  \        \*        4      P                  \*        P(                  VP(                  8H  4      4      G Rj  x€L
 P                  4       pV'       d   VP&                  pVP,                  pRpRpRpVP.                  '       Ed   V P                  P	                  \        \0        4      P                  \0        P2                  VP.                  8H  4      4      G Rj  x€L
 P                  4       pV'       d•   V P                  P	                  \        \4        4      P                  \4        P6                  VP6                  8H  4      4      G Rj  x€L
 P                  4       pV'       d%   VP8                  pVP:                  pVP<                  pRpVP>                  '       d}   V P                  P	                  \        \@        4      P                  \@        PB                  VP>                  8H  4      4      G Rj  x€L
 P                  4       pV'       d   VPD                  pV P                  P	                  \        \@        4      P                  \@        PF                  R	8H  4      PI                  \@        PJ                  PM                  4       4      4      G Rj  x€L
 pVPO                  4       PQ                  4       pV P                  P	                  \        \R        4      P                  \R        P                  VP                  8H  4      PI                  \R        PT                  PW                  4       4      4      G Rj  x€L
 pVPO                  4       PQ                  4       pV Uu0 uF#  pVPX                  '       g   K  VPX                  kK%  	  ppV Uu0 uF#  pVPZ                  '       g   K  VPZ                  kK%  	  ppV P                  P	                  \        \\        4      P                  \\        P                  VP                  8H  4      PI                  \\        P^                  PW                  4       4      4      G Rj  x€L
 pVPO                  4       PQ                  4       pV F2  oKSKP`                  '       g   K  VPc                  SKP`                  4       K4  	  V P                  P	                  \        \d        4      P                  \d        P                  VP                  8H  4      4      G Rj  x€L
 P                  4       pV'       d.   VPf                  '       d   VPc                  VPf                  4       V P                  P	                  \        \h        4      P                  \h        P                  VP                  8H  4      PI                  \h        Pj                  Pm                  4       4      4      G Rj  x€L
 pVPO                  4       PQ                  4       p V  F_  p!V!Pn                  '       d   VPc                  V!Pn                  4       V!Pp                  '       g   KD  VPc                  V!Pp                  4       Ka  	  V P                  P	                  \        \r        4      P                  \r        P                  VP                  8H  4      PI                  \r        Pt                  Pm                  4       4      4      G Rj  x€L
 p"V"PO                  4       Pw                  4       p#V P                  P	                  \        \x        4      P                  \x        P                  VP                  8H  4      PI                  \x        Pz                  Pm                  4       4      4      G Rj  x€L
 p$V$PO                  4       Pw                  4       p%. p&V%'       d¬   V P                  P	                  \        \|        4      P                  \|        P~                  V%P~                  8H  4      4      G Rj  x€L
 p'V'PO                  4       PQ                  4        U(u. uF)  p(R
V(P€                  RV(P‚                  RV(P„                  /NK+  	  p&p(/ p)V'       dŸ   V P                  P	                  \        \†        4      P                  \†        Pˆ                  P‹                  V4      4      4      G Rj  x€L
 p*V*PO                  4       PQ                  4        U+u/ uF  p+V+Pˆ                  V+P&                  bK  	  p)p+/ p,V'       dŸ   V P                  P	                  \        \Œ        4      P                  \Œ        PZ                  P‹                  V4      4      4      G Rj  x€L
 p-V-PO                  4       PQ                  4        U.u/ uF  p.V.PZ                  V.PŽ                  bK  	  p,p./ p/V F¡  p0V0PB                  V/9  d   R. R. RV0/V/V0PB                  &   V0P�                  R8X  d,   V/V0PB                  ,          R,          P“                  V04       Ke  V0P�                  R8X  g   Kx  V/V0PB                  ,          R,          P“                  V04       K£  	  / p1. p2V EFÆ  oKV P                  P	                  \        \”        P–                  ! 4       P™                  R4      \”        P–                  ! 4       P›                  \œ        Pž                  R8H  4      P™                  R4      4      P                  \œ        P                   SKP                   8H  4      4      G Rj  x€L
 p3V3P£                  4       p4V4P¤                  p5V4P¦                  p6\©        VK3R lV 4       R4      p7RSKP                   RSKPB                  RV7RSKP^                  RSKPª                  RSKP¬                  RV)P¯                  SKP`                  R4      RV6R V5R!SKP°                  R"SKP²                  R#SKP´                  /p8V2P“                  V84       SKPB                  V19  g   SKPª                  R$8X  g   EK·  V8V1SKPB                  &   EKÉ  	  . p9V EFf  p:V/P¯                  V:PB                  4      p;V1P¯                  V:PB                  4      p<R%p=Rp>Rp?Rp@RpAR&pBRpCRpDV;'       Ed&   V;R,          '       d   V;R,          ^ ,          MRpEV;R,          '       d   V;R,          R‹,          MRpFXE'       d(   XEPT                  p>V)P¯                  VEPX                  4      p@XF'       dO   XFPT                  p?VFP¶                  pAVFP¸                  pBV,P¯                  VFPZ                  4      pCVFPº                  pDR'p=M‡XE'       dV   R(p=\½        \¾        PÀ                  ! \Â        PÄ                  4      XEPT                  ,
          PÇ                  4       ^<,          4      pAM)VP>                  V:PB                  8X  d   R(p=VPÈ                  p>T9P“                  \Ë        RŒ/ RV:PB                  bR)V:PÌ                  bRV:PD                  bR*V:PJ                  bR+V=bR,V>bR-V?bR.X@bR/XAbR0V:PÎ                  bR1XBbR2XCbR3XDbR4V<'       d   V<P¯                  R4      MRbR5V<'       d   V<P¯                  R4      MRbR6V<'       d   V<P¯                  R 4      MRb 4       EKi  	  V PÑ                  VV9V%V#4      pGV PÓ                  VVV%V#4      pHV PÕ                  VVV9V2V#V%4      pIT P×                  TT;'       g    R7T;'       g    T;'       g    R8T;'       g    R9VP                   2XHXGXIVV%R:7	      pJ\Ù        VP                  VP                  R;VP                  R<T;'       g    R=R>T;'       g    R?R@VPÚ                  ;'       g    RARBVPÜ                  RCVPÞ                  ;'       g    RDREVPà                  ;'       g    RFRGVPâ                  /RHVP                   RIVRJVP(                  RKVRLVRMVRNVROV/RPVPä                  RQVPæ                  ;'       g    RRRS\é        VPê                  ;'       g    ^ 4      RTVPì                  ;'       g    RRUVPî                  RVVPð                  RWVPò                  RXVPô                  RYVPö                  ;'       g    VPø                  RZVPú                  ;'       g    R%R[VPü                  R\VPþ                  R]VEP                   /R^V'       d   VEP                  MRR_V'       d   VEP                  MR&R`V'       d   VEP                  MR&RaV'       d   VEP                  MR&RbV'       d.   VPf                  '       d   V)P¯                  VPf                  4      MRRcVEP
                  ;'       g    R%/RdVEP                  ReVEP                  RfVEP                  ;'       g    RgRhVP>                  RiT;'       g    VEP                  Rj8X  d   RkMRlRmXHRnXGRoVPÈ                  RpVEP                  RqVEP                  /
T9V  U!u. uF•  p!RrV!EP                  RsV!EP                  RtV!EP                  R+V!Pž                  RuV)P¯                  V!Pn                  Rv4      RwV!Pj                  RxV)P¯                  V!Pp                  4      RyV!EP                  RzV!EP                  /	NK—  	  up!T2V#'       dx   R{V#EP                   R|V#EP"                  R}V#EP$                  R~V#EP&                  RV#EP(                  R€V#EP*                  R�V#EP,                  R‚V#EP.                  RƒV#EP0                  /	MRV%'       dƒ   R„V%P~                  R…V%Pz                  RWV%Pò                  R†V%EP2                  R‡\é        V%EP4                  ;'       g    ^ 4      Rˆ\é        V%EP6                  ;'       g    ^ 4      R‰V&RqVEP                  /MRXIXJE\9        V P                  V4      G Rj  x€L
 RŠ7      #  ELŸ  \         d     EL�i ; i ELB EL® EL EL‚ ELä ELw ELÒ EL8 EL˜u upi u upi  EL¤ EL÷ EL2 EL- EL� ELu up(i  EL_u up+i  E
L¿u up.i  E	Lu up!i  Lr5i)�rB   i�  zChassis number or ID required)Ústatus_codeÚdetailNi”  z	Chassis 'z' not found in the system.rY   TÚlabelÚcheckedÚqtyÚarrivalsÚcompletionsÚlatestÚARRIVALÚ
COMPLETIONÚtotalÚOKÚpassedc              3   ót   <"  € T F-  qP                   SP                   8X  g   K  VP                  x € K/  	  R # 5ir6   )ra   rb   )Ú.0rz   rf   s   & €r1   Ú	<genexpr>Ú>ChassisTrackerService.get_chassis_lifecycle.<locals>.<genexpr>  s'   øé € Ð"h¹<°aÏ<É<Ð[\×[gÑ[gÑKg¤> 1§>¦>»<ùs   ƒ8¤8ÚStationÚinstance_idra   rb   Úinspection_dateÚoverall_resultÚstation_qa_statusÚinspector_namezQA InspectorÚpassed_countÚtotal_countÚremarksÚrework_notesÚcompleted_atÚPASSEDÚPENDINGFÚ	COMPLETEDÚ
AT_STATIONÚstation_codeÚsequence_noÚstatusÚarrival_timeÚcompletion_timeÚscanned_by_nameÚelapsed_minutesÚstandard_cycle_time_minÚ
is_overdueÚdelay_reasonÚdelay_remarksÚ	qa_statusÚqa_passed_countÚqa_total_countzStandard BuszValued ClientzORD-)	rk   rF   rH   Úorder_noÚstage_labelrM   ÚtimelinerL   Ú	gate_passrT   rF   z	Bus ModelrG   úN/AÚ	fuel_typeÚDIESELÚ
light_typeÚvoltageÚ12VÚoemÚOEMÚyear_of_manufacturerU   rH   r^   rI   Úclient_phoner±   Úrep_nameÚrep_contactrN   Úyard_locationz
Plant YardÚfuel_receiving_qtyÚchassis_conditionÚchassis_odometerÚinbound_vehicle_noÚdriver_nameÚdriver_phoneÚtransport_companyÚda_lite_statusÚda_lite_checked_atÚda_lite_remarksÚda_lite_photo_urlÚhandover_dateÚ	is_lockedÚsigned_store_personÚsigned_yard_supervisorÚstore_keeper_nameÚprocurement_statusrJ   rK   Úproduction_hold_statusÚNONEr_   rL   Ú
DISPATCHEDÚ
DispatchedÚYardr²   rM   Ústation_arrived_atÚscheduled_induction_dateÚdispatched_atÚhold_idÚ	hold_typeÚhold_reasonÚ	raised_byÚStaffÚ	raised_atÚresolved_byÚresolved_atÚresolution_notesÚchecksheet_idÚ
check_dateÚall_okÚ	signatureÚphoto_frontÚ
photo_rearÚphoto_rhÚphoto_lhÚsubmitted_atÚgate_pass_idÚgenerated_atÚdispatch_authorityÚfuel_before_ltrÚfilling_fuel_qty_ltrÚitems)rD   rE   r|   ÚcustomerÚyardÚstoreÚcurrent_stateÚproduction_stationsÚproduction_holdsÚqa_inspectionsÚfvi_testingÚdispatchr³   Úclient_messagesÚ
order_specéÿÿÿÿ© )�rO   r   r   r.   r[   r   r   rW   rD   Úscalar_one_or_noneÚ
ValueErrorrE   rX   rT   r   ÚgetattrrU   r   rV   rZ   r^   r   ÚphoneÚdealer_order_vehicle_idr   Úorder_vehicle_idr   Úorder_idr±   r¿   rÀ   r_   r   ra   rb   Ú	is_activerP   r¤   Ú
nulls_lastr\   r]   r   Ú
scanned_atÚascÚ
scanned_byÚdelay_reason_idr   r–   Úinspector_idÚaddr   Ústore_keeper_idr   rà   rR   rÞ   rá   r    rQ   Úfirstr!   rî   r"   rí   Ú
item_labelÚ
is_checkedr‡   r#   Úuser_idr`   r   Úreason_labelÚ
event_typere   r   Úcountr…   Úfilterr   r¥   r•   Úoner�   r�   Únextr—   r˜   rc   rœ   r�   rž   r©   r«   r­   r@   r   Únowr   ÚutcÚtotal_secondsrØ   r&   r£   rª   rd   Ú_determine_stage_labelÚ_build_timelineÚ_generate_client_messagesr%   r¶   r¸   r¹   r»   r½   rN   rÁ   ÚfloatrÂ   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   Útransport_idrÉ   rÊ   rË   rÌ   rÍ   rÎ   rÏ   rÐ   rÒ   rJ   rK   rÓ   rÙ   rÚ   rÛ   rÜ   rÝ   râ   rã   rä   rå   ræ   rç   rè   ré   rê   rë   rì   rï   rð   rñ   r)   )Lr8   r�   Úidentrk   Úval_uuidrF   rG   rr   rH   Údealer_contactsÚdealerrI   r¾   Úclientr±   r¿   rÀ   ÚdovÚdorL   Úcurr_sÚstations_queryÚall_stationsÚ
s_logs_resÚstation_logsÚlogÚuser_idsÚdelay_reason_idsÚqa_resÚqa_instancesÚstore_hoÚ	holds_resÚholdsÚhÚthermal_resÚthermal_checkÚgp_resr´   Úgp_itemsÚgpi_resÚiÚ	users_mapÚu_queryÚuÚ	delay_mapÚdr_queryÚdrÚlogs_by_stationÚlÚqa_by_stationÚqa_inspections_listÚchk_resÚrowÚtotal_itemsÚpassed_itemsÚstation_name_qÚqa_datar÷   rz   Úst_logsÚqa_infor¥   Úarr_timeÚ	comp_timer¨   Ú	elapsed_mr«   r¬   r­   Ú	first_arrÚ	last_comprM   r²   r³   Úclient_msgsrf   sL   &&                                                                         @r1   Úget_chassis_lifecycleÚ+ChassisTrackerService.get_chassis_lifecyclen   së  øé € Ø#×)Ð) r×0Ñ0Ó2ˆßÜ¨CÐ8WÔXÐXð ˆð	Ü˜E“{ˆHØ—w‘w—‘¤v¬mÓ'<×'BÑ'BÄ=×C[ÑC[Ð_gÑCgÓ'hÓi×i×}Ñ}ÓˆA÷ Ø—w‘w—‘¤v¬mÓ'<×'BÑ'BÄ=×C[ÑC[×CaÑCaÐbgÓChÓ'iÓj×j×~Ñ~ó  AˆAçÜ¨C¸)ÀEÀ7ÐJdÐ8eÔfÐfð ˆ
Øˆ
Ø�:�:ˆ:Ø—w‘w—‘¤vÔ.@Ó'A×'GÑ'GÔHZ×HcÑHcÐgh×gqÑgqÑHqÓ'rÓs×s÷  Hñ  Hó  JˆAßÜ$ Q¨¸Ó=�
Ü$ Q¨¸Ó=�
ð ˆØˆØ�;�;ˆ;Ø ŸG™GŸO™O¬F´>Ó,B×,HÑ,HÌ×IcÑIcÐgh×grÑgrÑIrÓ,sÓt×t÷  Iñ  Ió  KˆFßØ$Ÿk™k�àˆØˆØ�;�;ˆ;Ø ŸG™GŸO™O¬F´<Ó,@×,FÑ,FÄ|×G]ÑG]Ðab×alÑalÑGlÓ,mÓn×n÷  Cñ  Có  EˆFßØ$Ÿk™k�Ø%Ÿ|™|�àˆØˆØˆØ×$×$Ñ$ØŸ™Ÿ™¬Ô0BÓ)C×)IÑ)IÔJ\×JmÑJmÐqr÷  rKñ  rKñ  KKó  *Ló  M÷  M÷  añ  aó  cˆCßØ ŸG™GŸO™O¬F´;Ó,?×,EÑ,EÄk×FZÑFZÐ^a×^jÑ^jÑFjÓ,kÓl×l÷  Añ  Aó  C�ßØ!Ÿ{™{�HØ!Ÿ{™{�HØ"$§.¡.�Kð  $ÐØ××ÐØ ŸG™GŸO™O¬F´=Ó,A×,GÑ,GÌ×H`ÑH`Ðde×dxÑdxÑHxÓ,yÓz×z÷  Oñ  Oó  QˆFßØ'-×':Ñ':Ð$ð  $Ÿw™wŸ™Ü”=Ó!×'Ñ'¬×(?Ñ(?À4Ñ(GÓH×QÑQÔR_×RkÑRk×RvÑRvÓRxÓyó 
÷ 
ˆð &×-Ñ-Ó/×3Ñ3Ó5ˆàŸ7™7Ÿ?™?ÜÔ$Ó%×+Ñ+Ô,=×,HÑ,HÈAÏLÉLÑ,XÓY×bÑbÔct×cÑc÷  dDñ  dDó  dFó  Gó
÷ 
ˆ
ð "×)Ñ)Ó+×/Ñ/Ó1ˆñ /;ÓM©l s¸c¿n½n”N�C—N”N©lˆÐMÙ;GÓ_¹<°CÈ3×K^ÕK^Ô/˜C×/Ô/¹<ÐÐ_ð —w‘w—‘ÜÔ'Ó(×.Ñ.Ô/C×/NÑ/NÐRS×R^ÑR^Ñ/^Ó_×hÑhÔi}÷  jNñ  jN÷  jRñ  jRó  jTó  Uó
÷ 
ˆð —~‘~Ó'×+Ñ+Ó-ˆÛˆAØ�~�~Š~Ø—‘˜QŸ^™^Ö,ñ ð
 Ÿ'™'Ÿ/™/¬&Ô1EÓ*F×*LÑ*LÔMa×MlÑMlÐpq×p|Ñp|ÑM|Ó*}Ó~×~÷  Sñ  Só  Uˆß˜×0×0Ð0Ø�L‰L˜×1Ñ1Ô2ð Ÿ'™'Ÿ/™/Ü”>Ó"×(Ñ(¬×)BÑ)BÀaÇlÁlÑ)RÓS×\Ñ\Ô]k×]uÑ]u×]zÑ]zÓ]|Ó}ó
÷ 
ˆ	ð ×!Ñ!Ó#×'Ñ'Ó)ˆÛˆAØ�{�{ˆ{Ø—‘˜QŸ[™[Ô)Ø�}�}Š}Ø—‘˜QŸ]™]Ö+ñ	 ð !ŸG™GŸO™OÜÔ,Ó-×3Ñ3Ô4M×4XÑ4XÐ\]×\hÑ\hÑ4hÓi×rÑrô  tM÷  tXñ  tX÷  t]ñ  t]ó  t_ó  `ó
÷ 
ˆð $×+Ñ+Ó-×3Ñ3Ó5ˆð —w‘w—‘ÜÔ#Ó$×*Ñ*Ô+;×+FÑ+FÈ!Ï,É,Ñ+VÓW×`Ñ`Ôaq×a~Ña~÷  bDñ  bDó  bFó  Gó
÷ 
ˆð —N‘NÓ$×*Ñ*Ó,ˆ	ØˆßØ ŸG™GŸO™OÜÔ+Ó,×2Ñ2Ô3G×3TÑ3TÐXa×XnÑXnÑ3nÓoó÷ ˆGð ah×`oÑ`oÓ`q×`uÑ`uÔ`wÓxÑ`wÐ[\˜ !§,¡,°	¸1¿<¹<ÈÐPQ×PUÑPUÓVÑ`wˆHÐxð ˆ	ßØ ŸG™GŸO™O¬F´:Ó,>×,DÑ,DÄZ×EWÑEW×E[ÑE[Ð\dÓEeÓ,fÓg×gˆGØ4;·O±OÓ4E×4IÑ4IÔ4KÓLÑ4K¨q˜Ÿ™ A§F¡FÒ*Ñ4KˆIÐLð ˆ	ßØ!ŸW™WŸ_™_¬VÔ4EÓ-F×-LÑ-LÔM^×MnÑMn×MrÑMrð  tDó  NEó  .Fó  G÷  GˆHØGO×GWÑGWÓGY×G]ÑG]ÔG_Ó`ÑG_À˜×+Ñ+¨R¯_©_Ò<ÑG_ˆIÐ`ð 79ˆÛˆAØ�|‰| ?Ô2à Ø! 2Ø˜að1� §¡Ñ-ð
 �|‰|˜yÔ(Ø §¡Õ-¨jÕ9×@Ñ@ÀÖCØ—‘ Ö-Ø §¡Õ-¨mÕ<×CÑCÀAÖFñ ð 57ˆØ ÐÜˆAà ŸG™GŸO™OÜÜ—J’J“L×&Ñ& wÓ/Ü—J’J“L×'Ñ'Ô(<×(CÑ(CÀtÑ(KÓL×RÑRÐS[Ó\ó÷ ‘%Ô,×8Ñ8¸A¿M¹MÑIÓJó	÷ ˆGð —+‘+“-ˆCØŸ)™)ˆKØŸ:™:ˆLä!Ô"h¹<Ó"hÐjsÓtˆNð ˜qŸ}™}Ø˜aŸl™lØ Ø! 1×#4Ñ#4Ø  !×"2Ñ"2Ø# Q×%8Ñ%8Ø  )§-¡-°·±ÀÓ"OØ Ø˜{Ø˜1Ÿ9™9Ø §¡Ø §¡ðˆGð  ×&Ñ& wÔ/à�|‰| =Ô0°A×4DÑ4DÈ×4PØ.5�˜aŸl™lÔ+ñ? ðD 68ÐÜˆAØ%×)Ñ)¨!¯,©,Ó7ˆGØ#×'Ñ'¨¯©Ó5ˆGàˆFØˆHØˆIØ"ˆOØˆIØˆJØˆLØ ˆMçˆwØ6=¸j×6IÔ6I˜G JÕ/°Ö2Èt�	Ø:AÀ-×:PÔ:P˜G MÕ2°2Ö6ÐVZ�	çØ(×3Ñ3�HØ&/§m¡m°I×4HÑ4HÓ&I�OçØ )× 4Ñ 4�IØ )× 9Ñ 9�IØ!*×!5Ñ!5�JØ#,§=¡=°×1JÑ1JÓ#K�LØ$-×$;Ñ$;�MØ(‘FßØ)�FÜ #¤X§\¢\´(·,±,Ó%?À)×BVÑBVÕ%V×$eÑ$eÓ$gÐjlÕ$lÓ m�IøØ×%Ñ%¨¯©Ô5Ø%�Ø×/Ñ/�à×&Ñ&Üò Ø Ÿ|š|ðà!"§¢ðð "#§¢ðð !"§¢ð	ñ
 "ðñ "*ðñ %.ðñ %4ðñ %.ðð -.×,EÒ,Eðñ  *ðñ ".ðñ #0ð÷ @G˜gŸk™kÐ*:Ô;ÈDøð÷ DK G§K¡K°Ô$?ÐPTøð÷  BI 7§;¡;¨}Ô#=Èdøð!÷ñG ðr  ×;Ñ;¸AÐ?RÐT]Ð_lÓmÐØ×1Ñ1°!Ð5IÈ9ÐVcÓdˆð ×'Ñ'¨¨8Ð5HÐJ]Ð_lÐnwÓxˆð ×4Ñ4ØØ!×3Ð3 ^Ø#×EÐE {×EÐE°oØ×6Ð6 4¨¯© ~Ð!6Ø#Ø-ØØ!5Øð 5ó 

ˆô (Ø—|‘|Ø—|‘|à˜AŸJ™JØ˜j×7Ð7¨KØ˜j×1Ð1¨EØ˜QŸ[™[×4Ð4¨HØ˜aŸl™lØ˜1Ÿ9™9×-Ð-¨Ø�q—u‘u—~�~ Ø% q×'<Ñ'<ð	ð ˜QŸ[™[Ø˜{Ø˜QŸ[™[Ø˜{Ø Ø˜HØ˜HØ˜{ð	ð  §¡Ø §¡×!@Ð!@°LØ$¤e¨A×,@Ñ,@×,EÐ,EÀAÓ&FØ# Q×%8Ñ%8×%@Ð%@¸DØ" A×$6Ñ$6Ø$ a×&:Ñ&:Ø˜qŸ}™}Ø §¡Ø# Q×%8Ñ%8×%JÐ%J¸A¿N¹NØ  !×"2Ñ"2×"?Ð"?°iØ$ a×&:Ñ&:Ø! 1×#4Ñ#4Ø# Q×%8Ò%8ðð   ¿8 ×!7Ó!7ÈØ·8˜X×/Ó/ÀØ%Çx x×'CÓ'CÐUZØ(ÏX¨(×*IÓ*IÐ[`Ø#×PXÐ]e×]u×]uÐ]u Y§]¡]°8×3KÑ3KÔ%LÐ{Ø$ a×&:Ò&:×&GÐ&G¸iðð ! !×"2Ò"2Ø! 1×#4Ò#4Ø(¨!×*BÒ*B×*LÐ*LÀfØ$ a×&:Ñ&:Ø&Ð(<×(Ð(ÐQR×QbÒQbÐfrÔQrÁÐx~Ø˜{Ø"Ð$4Ø$ a×&:Ñ&:Ø*¨A×,FÒ,FØ §¢ðð !4ñ óñ �Að ˜qŸyšyØ §¢Ø! 1§=¢=Ø˜aŸh™hØ §¡¨q¯{©{¸GÓ!DØ §¡Ø! 9§=¡=°·±Ó#?Ø! 1§=¢=Ø&¨×(:Ò(:ó
ñ ñð /÷ ð   ×!<Ò!<Ø˜m×6Ò6Ø˜-×.Ò.Ø˜]×4Ò4Ø˜}×8Ò8Ø˜m×6Ò6Ø˜M×2Ò2Ø˜M×2Ò2Ø × :Ò :ñ
ð %)÷ ð  	× 6Ñ 6Ø 	× 6Ñ 6Ø˜y×4Ñ4Ø$ i×&BÒ&BØ!¤5¨×)BÒ)B×)GÐ)GÀaÓ#HØ&¬¨i×.LÒ.L×.QÐ.QÐPQÓ(RØ˜Ø §¢ñ	ð !%ØØ'Ý7¸¿¹ÀÓC×CôCb
ð b	
òy jøÜô 	Úð	úò kò tò uò oò Mâlò {ò

ò

ùò NùÚ_ò
ò ò

ò
ò
òùò yò
 hùÚLò
 GùÚ`ò*ùòPñL Dùs  ƒ"AZ¦AZ¶AAX. ÂAX+ÂAX. ÂAZÂ'AAZÃ>AY Ã?AZÄ&AZÅ AAZÆAYÆAZÆ0/AZÇ AAZÈ5AYÈ6AZÉ!AZÉ2AAZËAY	ËAZË"0AZÌAAZÍ(AYÍ)AZÎAAZÏAYÏAZÏ37AZÐ+AAZÒ AYÒAZÒBAZÔAYÔB"AZ× AY×&AZ×'AYØ AYØAZØAY Ø/AY Ø?BAZÛAY%Û6AZÛ=A4AZÝ1AY(Ý2AZÞAZÞBAZà9AY+à:A#AZâ"BAZåAY.åB"AZç$AY1ç%+AZèAAZé&AY4é'$AZê/AY7ê:AZëAAZìAY<ì$AZí AY?í"AZí.AAZïAZï$AZï* AZð
A9AZòC-AZõ5AZõ6C6AZù2A9AZû, AZüAZü'.AZýAAZþ,DAZÁB;AZÁCA0AZÁE
AZÁE	AZÁE
AZÁE(A
AZÁF3AZÁF?AZÁG!AZÁG7AZÁHAAZÁI!AZÁI<AZÁJAAZÁKAZÁK<0AZÁL-AZÁMAZÁMAZÁM2AZÁN	AZÁN0AZÁO1AZÁO>AZÁPAAZÁQBAZÁS7
AZÁTA?AZÁVA
AZÁWAZÁW-4AZÁX!AZ$ÁX"	AZÁX+AX. ÁX.AX=ÁX9AZÁX<AX=ÁX=AZÁYAZÁYAZÁY	AZÁYAZÁYAZÁYAZÁYAZÁYAZÁYAZÁY(AZÁY+AZÁY.AZÁY1AZÁY4AZÁY7AZÁY?AZÁZAZÁZAZNc          
      óx   <€ V ^8„  d   QhRS[ RS[S[S[,          ,          RS[S[,          RS[S[,          RS[/# )r-   rk   Ústationsr´   r8  r>   )r   r
   r   r&   r!   r    r@   )r/   r0   s   "€r1   r2   r3   ×  sS   ø€ ÷ ñ áðñ ™4¡Õ0Õ1ðñ Ñ,Õ-ð	ñ
  Ñ 9Õ:ðñ 
ñr4   c                óJ  € VP                   R 8X  g$   VP                  R 8X  g   VP                  '       d   ^d# V'       d   ^_# V'       d   VP                  '       d   ^Z# V'       dr   \	        V4      ^ 8”  db   \        R V 4       4      p\        R V 4       4      p\	        V4      pYV'       d   RM^ ,           V,          p\        ^V^<,          ,           4      # VP                  '       g   VP                  '       d   ^# VP                  R8X  d   ^# VP                  '       d   ^
# ^# )rÕ   c              3   óJ   "  € T F  qP                   R 8X  g   K  ^x € K  	  R# 5i)r¡   N©r¥   ©r‘   rz   s   & r1   r’   ÚDChassisTrackerService._calculate_progress_percent.<locals>.<genexpr>æ  s   é € Ð!Q©X¨¿¹À[Ñ9P§!¢!«Xùó   ‚#™
#c              3   óJ   "  € T F  qP                   R 8X  g   K  ^x € K  	  R# 5i)r¢   Nr[  r\  s   & r1   r’   r]  ç  s   é € Ð#T©x¨!¿8¹8À|Ñ;S§A¢A«xùr^  g      à?rŽ   )rK   rJ   rÚ   ræ   ÚlenÚsumr@   Úhanded_to_production_atrÙ   rÉ   rN   )	r8   rk   rX  r´   r8  Úcompleted_countÚin_progress_countr�   Úprod_fractions	   &&&&&    r1   rd   Ú1ChassisTrackerService._calculate_progress_percent×  sá   € ð ×Ñ Ô,°×0@Ñ0@ÀLÔ0PÐTU×Tc×TcÐTcÙßÙß˜]×1×1Ð1Ùçœ˜H›¨Ô)Ü!Ñ!Q©XÓ!QÓQˆOÜ #Ñ#T©xÓ#TÓ TÐÜ˜“MˆEà,Ö7H±ÈaÕPÐTYÕYˆMÜ�r˜]¨RÕ/Õ0Ó1Ð1à×$×$Ð$¨×(B×(BÐ(BÙØ×Ñ˜tÔ#ÙØ�>�>ˆ>ÙÙr4   c          
      óh   <€ V ^8„  d   QhRS[ RS[S[,          RS[S[,          RS[S[,          RS[/# )r-   rk   Úcurrent_stationr´   r8  r>   )r   r
   r?   r!   r    )r/   r0   s   "€r1   r2   r3   õ  sM   ø€ ÷ ñ áðñ "¡#�ðñ Ñ,Õ-ð	ñ
  Ñ 9Õ:ðñ 
ñr4   c                óH  € VP                   R 8X  g   VP                  R 8X  d   R# V'       d   R# V'       d   R# VP                  R8X  d   RT;'       g    R R2# V'       d   RV 2# VP                  '       d   R	# VP                  R
8X  d   R# VP
                  '       d   R# R# )rÕ   zDispatched & Deliveredz Ready for Gate Exit / Dispatchedz$Final Inspection & Testing CompletedÚON_HOLDzProduction On Hold (Ú	ShopfloorÚ)zIn Assembly - zHanded over to Production LinerŽ   z#Yard Inspected / Awaiting InductionzInwarded at YardÚ
Registered)rK   rJ   rÓ   rb  rÉ   rN   )r8   rk   rh  r´   r8  s   &&&&&r1   r  Ú,ChassisTrackerService._determine_stage_labelõ  s”   € ð ×Ñ Ô,°×0@Ñ0@ÀLÔ0PÙ+ßÙ5ßÙ9Ø×#Ñ# yÔ0Ø)¨/×*HÐ*H¸[Ð)IÈÐKÐKßØ# OÐ#4Ð5Ð5Ø×$×$Ð$Ù3Ø×Ñ˜tÔ#Ù8Ø�>�>ˆ>Ù%Ùr4   c                óº   <€ V ^8„  d   QhRS[ RS[S[,          RS[S[,          RS[S[S[S[3,          ,          RS[S[,          RS[S[	,          RS[S[
,          /# )r-   rk   r3  rX  rù   r8  r´   r>   )r   r
   r   r   r&   r   r?   r	   r    r!   r'   )r/   r0   s   "€r1   r2   r3     s„   ø€ ÷ tñ táðtñ Ñ/Õ0ðtñ ‘Õ'ð	tñ
 ™T¡#¡s (�^Õ,ðtñ  Ñ 9Õ:ðtñ Ñ,Õ-ðtñ 
ÑÕ	 ñtr4   c                ó^  € . pVP                   '       d   R MRpRVP                   '       d   VP                   P                  R4      MR RVP                  ;'       g    R 2p	VP                  R8X  d
   V	R,          p	TP	                  \        R	R
TVP                   '       d\   \        P                  ! VP                   \        P                  P                  4       4      P                  \        P                  R7      MRT	RVP                   RVP                  '       d   VP                  R8X  d   RMRMR 2RVP                  ;'       g    RRVP                   RVP"                  RVP                  /R7      4       Rp
RpRpV'       dÉ   VP$                  '       g   VP&                  '       d¥   R p
VP(                  '       d\   \        P                  ! VP(                  \        P                  P                  4       4      P                  \        P                  R7      MRpRVP(                  '       d   VP(                  P                  R4      MR 2pM>VP*                  '       d-   R p
VP*                  pRVP*                  P                  R4       2pTP	                  \        RRT
TTRVP,                  RVP.                  '       d   VP.                  P                  R4      MR/R7      4       V Uu. uF  qÝP0                  R 8X  g   K  VNK  	  ppV Uu. uF  qÝP0                  R 8X  g   K  VNK  	  ppRpRp\3        V4      \3        V4      8X  d6   \3        V4      ^ 8”  d&   R pVRU,          P4                  pR!\3        V4       R"2pMˆV'       dF   R#pV^ ,          P6                  pR$V^ ,          P8                   R%\3        V4       R&\3        V4       R'2pM;V'       d2   R#pVRU,          P4                  pR(\3        V4       R)\3        V4       R*2pMR+pTP	                  \        R,R-TTTR.\3        V4      R/\3        V4      R0V'       d   V^ ,          P8                  MRR1VP:                  R28H  /R7      4       V Uu. uF  pVP=                  R34      R48X  g   K  VNK  	  ppV Uu. uF  pVP=                  R34      RV9   g   K  VNK  	  ppV Uu. uF  pVP=                  R34      R58X  g   K  VNK  	  ppRpRpV'       d:   V'       g2   V'       g*   R pVRU,          P=                  R64      p\3        V4       R72pMgV'       d^   V'       g   R#MR2pVRU,          P=                  R64      p\3        V4       R8\3        V4       R92V'       d   R:\3        V4       R;2MR,           pMR<pVP	                  \        R=R>VVVR?\3        V4      R@\3        V4      /R7      4       RpRpRApV'       d9   VP>                  '       d   R MR2pVP@                  pVP>                  '       d   RBMRCpTP	                  \        RDRETTTRFV'       d   VP>                  MRGRHV'       d   VPB                  MR/R7      4       RpRpRIpVPD                  '       g   VPF                  RJ8X  dL   R pVPD                  ;'       g    V'       d   VPH                  MRpRKV'       d   VP                  RL4      MRM 2pMZV'       dS   R#pVPH                  pRN\K        VPL                  4      RO,          PO                  4        RPVP                   ;'       g    R 2pTP	                  \        RQRRTTTRV'       d   VP                   MRRSV'       d   VPP                  MRRTV'       d   \K        VPL                  4      MR/R7      4       V# u upi u upi u upi u upi u upi )Wr¡   r    zArrived on ú%d-%b-%YÚPendingz at r×   rŽ   u    â€¢ DA Lite Inspection PassedÚyard_inwardz1. Yard Reception & Inwarding)ÚtzinfoNÚfuel_receivedÚ r·   ÚLitresÚKgrB   Ú	conditionrÆ   Úinbound_vehiclerÉ   )Ústage_idÚ
stage_namer¥   Ú	timestampÚsummaryÚdetailsz*Awaiting store parts handover & allocationzParts handover completed on ÚVerifiedzHanded to production on Ústore_handoverz'2. Store Handover & Material AllocationrÒ   Úscheduled_inductionr¢   zAll z  stations successfully completedÚIN_PROGRESSzCurrently at ú (Ú/z stations done)z
Completed z of z	 stationsz$Scheduled for induction on shopfloorÚ
productionz3. Assembly Line & StationsÚcompleted_stationsÚtotal_stationsrh  Úon_holdrj  r—   rŸ   ÚFAILEDr–   z$ QA inspections cleared with 100% OKz
 cleared, z in-progressz, z rework requiredz*Station checkpoint QA inspections in queueÚqa_inspectionz4. Quality Assurance & AuditsÚpassed_inspectionsÚtotal_inspectionsz0Awaiting final road testing & thermal inspectionz>Final 26-point thermal inspection & 4-view bus photos approvedz$Inspection recorded with open issuesrú   z%5. Final Inspection & Thermal Testingræ   Frç   z*Pending final gate pass & vehicle dispatchrÕ   zDispatched on z%d-%b-%Y %I:%M %pÚ	DeliveredzGate Pass #ºNé   Nz issued to driver rû   z6. Vehicle Dispatch & Deliveryrï   rí   rþ   )r    rƒ  ))rN   ÚstrftimerÁ   rÉ   re   r'   r   ÚcombineÚminÚtimeÚreplacer   r  rÂ   r¶   rÃ   rÆ   rÅ   rÏ   rÎ   rÍ   rb  rÒ   rÙ   r¥   r`  r§   r¦   rb   rÓ   rc   ræ   rì   rç   rÚ   rK   rî   r?   rí   Úupperrï   ) r8   rk   r3  rX  rù   r8  r´   r³   Úyard_statusÚyard_summaryÚstore_statusÚstore_tsÚstore_summaryrz   Úcomp_stationsÚcurr_stationsÚprod_statusÚprod_tsÚprod_summaryrf   Ú	qa_passedÚ
qa_pendingÚ	qa_failedr®   Úqa_tsÚ
qa_summaryÚ
fvi_statusÚfvi_tsÚfvi_summaryÚdisp_statusÚdisp_tsÚdisp_summarys    &&&&&&&                         r1   r  Ú%ChassisTrackerService._build_timeline  sn  € ð -/ˆð &'§^§^ ^‘k¸ˆØ$ÈAÏNÏNÈN Q§^¡^×%<Ñ%<¸ZÔ%HÐ`iÐ$jÐjnÐop×o~Ño~÷  pIð  pIð  CIð  oJð  KˆØ×Ñ˜tÔ#ØÐ<Õ<ˆLØ�‰ÜØ&Ø:Ø"Øpq×p~×p~Ðp~œ(×*Ò*¨1¯>©>¼8¿<¹<×;LÑ;LÓ;NÓO×WÑWÔ_g×_kÑ_kÐWÔlð  EIØ$à#¨×(<Ñ(<Ð'=¸QÐrs÷  sG÷  sGð  sGÈAÏKÉKÐ[cÔLcÁÑimð  MOð  ?Pð  &QØ ×!4Ñ!4×!<Ð!<¸Ø! 1§=¡=Ø% q×';Ñ';Ø$ a×&6Ñ&6ðôô	
ð$ !ˆØˆØDˆß˜×5×5Ð5¸×9K×9KÐ9KØ&ˆLØu}÷  vL÷  vLð  vL”x×'Ò'¨×(>Ñ(>ÄÇÁ×@QÑ@QÓ@SÓT×\Ñ\Ôdl×dpÑdpÐ\Ôqð  RVˆHØ:Ðjr÷  kA÷  kAð  kA¸8×;QÑ;Q×;ZÑ;ZÐ[eÔ;fð  GQð  ;Rð  S‰MØ×&×&Ð&Ø&ˆLØ×0Ñ0ˆHØ6°q×7PÑ7P×7YÑ7YÐZdÓ7eÐ6fÐgˆMà�‰ÜØ)ØDØ#Ø"Ø%à(¨!×*>Ñ*>Ø)Ð^_×^x×^xÐ^x¨1×+EÑ+E×+NÑ+NÈzÔ+Zð  Cðô
ô	
ñ %-ÓH¡H˜q·±¸KÑ0GŸ˜¡HˆÐHÙ$,ÓI¡H˜q·±¸LÑ0HŸ˜¡HˆÐIàˆØˆÜˆ}Ó¤ X£Ô.´3°x³=À1Ô3DØ%ˆKØ# BÕ'×7Ñ7ˆGØ!¤# h£- Ð0PÐQ‰LßØ'ˆKØ# AÕ&×3Ñ3ˆGØ*¨=¸Õ+;×+HÑ+HÐ*IÈÌCÐP]ÓL^ÐK_Ð_`ÔadÐemÓanÐ`oÐo~Ð‰LßØ'ˆKØ# BÕ'×7Ñ7ˆGØ'¬¨MÓ(:Ð';¸4ÄÀHÃ¸ÈiÐX‰LàAˆLà�‰ÜØ%Ø8Ø"Ø!Ø$à(¬#¨mÓ*<Ø$¤c¨(£mØ%Ï }°QÕ'7×'DÒ'DÐ[_Ø˜q×7Ñ7¸9ÑDð	ôô	
ñ" !/ÓV¡˜1°!·%±%Ð8HÓ2IÈXÑ2U—Q�Q¡ˆ	ÐVÙ!/Ói¡˜A°1·5±5Ð9IÓ3JÐNhÑ3h—a�a¡ˆ
ÐiÙ .ÓV¡˜1°!·%±%Ð8HÓ2IÈXÑ2U—Q�Q¡ˆ	ÐVàˆ	ØˆßŸZ·	Ø#ˆIØ˜b•M×%Ñ%Ð&7Ó8ˆEÜ 	›NÐ+Ð+OÐP‰Jßß-6™¸IˆIØ" 2Õ&×*Ñ*Ð+<Ó=ˆEÜ 	›NÐ+¨:´c¸*³oÐ5FÀlÐS÷  AJÐY[Ô\_Ð`iÓ\jÐ[kÐk{ÑW|ð  PRõ  S‰JàEˆJà�‰ÜØ(Ø:Ø ØØ"à(¬#¨i«.Ø'¬¨^Ó)<ðô
ô	
ð ˆ
ØˆØHˆßØ(5×(<×(<Ð(<™À)ˆJØ"×/Ñ/ˆFØ^k×^r×^rÐ^rÑZð  y_ˆKà�‰ÜØ&ØBØ!Ø Ø#à·m˜m×2Ò2ÈØ¿M ×!8Ò!8Ètðô
ô	
ð  ˆØˆØCˆØ�?�?ˆ?˜a×/Ñ/°<Ô?Ø%ˆKØ—o‘o×XÐXÇI¨)×*@Ò*@ÐSWˆGØ+×U\¨G×,<Ñ,<Ð=PÔ,QÐbmÐ+nÐo‰LßØ'ˆKØ×,Ñ,ˆGØ(¬¨Y×-CÑ-CÓ)DÀRÕ)H×)NÑ)NÓ)PÐ(QÐQcÐdm×dyÑdy×dÐdÐ}ð  dAð  BˆLà�‰ÜØ#Ø;Ø"Ø!Ø$à!¿I 9×#8Ò#8È4Ø(Ï)¨)×*FÒ*FÐY]Ø"Ç9¤C¨	×(>Ñ(>Ô$?ÐRVðôô	
ð ˆùòo IùÚIùòH WùÚiùÚVs<   Ë.^Ì^Ì^Ì(^Ñ0^ Ò^ Ò^%Ò6^%Ó^*Ó^*c                ó†   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[RS[RS[S[,          RS[S[,          R	S[S[,          R
S[/
# )r-   rk   rF   rH   r±   r²   rM   r³   rL   r´   r>   )r   r?   r@   r   r'   r
   r!   r(   )r/   r0   s   "€r1   r2   r3   Ä  s‹   ø€ ÷ a
ñ a
áða
ñ ða
ñ ð	a
ñ
 ða
ñ ða
ñ ða
ñ Ñ(Õ)ða
ñ '¡s�mða
ñ Ñ,Õ-ða
ñ 
ña
r4   c
                óˆ  € \         P                  ! 4       P                  R 4      p
VP                  '       d   VP                  P                  R 4      MRp\	        V^
,          4      p^
V,
          pRV,          RV,          ,           pV Uu. uF  qÿP
                  R8X  g   K  VNK  	  ppV'       d   VR0,          P                  MRpRVP                   RV RV R	V R
V RV RV RV
 RV RV R2pV'       d   VRV R2,          pV	'       dN   TR\        V	P                  4      R,          P                  4        RV	P                  ;'       g    R R2,          pMV^Z8¼  d   VR,          pM	VR,          pVR,          pRVP                   RV R2pRT RVP                   R T RVP                  ;'       g    R! R"V R#V R$V R%V R&V R2pV'       d   VR'V R2,          pV	'       d"   TR(V	P                  ;'       g    R R2,          pVR),          pR*VP                   RV R+V R,V R-V
 R.2p\        VVVVR/7      # u upi )1rq  rµ   u   â–ˆu   â–‘r¡   zYard Inwardingu…   ðŸš� *VEHICLE PRODUCTION STATUS UPDATE*
â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�
*Chassis No:* z
*Model / Variant:* z
*Client / Dealer:* z
*Order Reference:* #ug   
â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�
ðŸ“� *Current Status:* u   
ðŸ“Š *Progress:* [z] *u   %*
ðŸ“… *As of:* u+   

*Milestone Highlights:*
â€¢ Inward Date: u   
â€¢ Latest Completed Stage: Ú
u-   â€¢ Active Operation: Fitting & assembly at *z*
u   â€¢ Gate Pass: #r�  z
 (Driver: ÚAssignedz)
u@   â€¢ Final inspection cleared. Preparing dispatch documentation.
uB   â€¢ Assembly proceeding smoothly adhering to strict QA standards.
uÊ   
Should you have any inquiries, please contact your account representative.
â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�
_Astute Bridge Â· Automobile Manufacturing ERP_z,Vehicle Production Status Update - Chassis #r„  rl  zDear uÍ   ,

We are pleased to provide you with the latest progress update for your vehicle currently in production.

VEHICLE & ORDER DETAILS:
--------------------------------------------------
â€¢ Chassis Number : u   
â€¢ Vehicle Model  : ÚDieselu   )
â€¢ Order Reference: #u   
â€¢ Inward Date    : ue   

CURRENT PRODUCTION STATUS:
--------------------------------------------------
â€¢ Stage Status   : u   
â€¢ Progress Level : u"   % Completed
â€¢ Latest Milestone: u   â€¢ Current Station: u%   â€¢ Dispatch Pass  : Issued (Driver: zï
Our production and quality assurance teams ensure every step meets rigorous specifications.

Please feel free to reach out to us if you need further details.

Warm regards,
Customer Success & Operations Team
Bhagirath ERP / Astute Bridge
zStatus Update: Chassis z) is currently at 'z' with z% overall completion as of z. - Bhagirath ERP)Úwhatsapp_textÚemail_subjectÚ
email_bodyÚsms_textrþ   )r   r  r‘  rN   r@   r¥   r|  rE   r?   rí   r–  rÆ   r¶   r(   )r8   rk   rF   rH   r±   r²   rM   r³   rL   r´   Ú	today_strÚarrival_strÚfilled_barsÚunfilled_barsÚprogress_barrr   Úcompleted_milestonesÚlast_milestoneÚwaÚ
email_subjr´  Úsmss   &&&&&&&&&&            r1   r  Ú/ChassisTrackerService._generate_client_messagesÄ  sô  € ô —L’L“N×+Ñ+¨JÓ7ˆ	Ø=>¿^¿^¸^�a—n‘n×-Ñ-¨jÔ9ÐQVˆô Ð*¨RÕ/Ó0ˆØ˜[Õ(ˆØ˜{Õ*¨U°]Õ-BÕBˆñ ,4ÓO©8 a·x±xÀ;Ñ7N§ ©8ÐÐOß@TÐ-¨bÕ1×<Ò<ÐZjˆðàŸ\™\˜Nð +"Ø", ð ."Ø"- ð /#Ø#+ *ð -&à&1 ]ð 3!Ø!- ¨cÐ2BÐ1Cð DØ&˜Kð ( à +˜}ð -+Ø+9Ð*:¸"ð>ð 	÷   ØÐAÐBVÐAWÐWZÐ[Õ[ˆBßØÐ$¤S¨×)?Ñ)?Ó%@ÀÕ%D×%JÑ%JÓ%LÐ$MÈZÐXa×XmÑXm×X{ÐX{Ðq{ÐW|Ð|ð  Aõ  A‰BØ Ô#ØÐUÕV‰BàÐWÕXˆBà
ð>õ	
ˆð DÀAÇLÁLÀ>ÐQSÐT^ÐS_Ð_`Ðaˆ
à�K�=ð !$ð %&§L¡L >ð 2$Ø$. <¨r°!·+±+×2IÐ2IÀÐ1Jð K%Ø%- Jð /$Ø$/ =ð 1$ð %0 =ð 1$Ø$4Ð#5ð 6%Ø%3Ð$4°Bð8ð 	÷  ØÐ1Ð2FÐ1GÀrÐJÕJˆJßØÐAÀ)×BWÑBW×B`ÐB`Ð[`ÐAaÐadÐeÕeˆJàð.õ	
ˆ
ð & a§l¡l ^°2°j°\ÐATÐU`ÐTað bØ$Ð%Ð%@ÀÀÐK\ð^ð 	ô
 $ØØ$Ø!Øô	
ð 	
ùòO  Ps   Â
H?Â!H?r7   )é   )NNN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r9   r~   rU  rd   r  r  r  Ú__static_attributes__Ú__classdictcell__)r0   s   @r1   r+   r+      sV   ø‡ € ÷ð ÷Mò M÷^g
ð g
÷Rò ÷<ð ÷2tð t÷la
ö a
r4   r+   N)6r   r   r   Úuuidr   Útypingr   r   r	   r
   Ú
sqlalchemyr   r   r   r   Úsqlalchemy.ext.asyncior   Úfastapir   Úapp.models.yard_modelsr   r   r   r   Úapp.models.sales_modelsr   r   Úapp.models.dealer_modelsr   r   Úapp.models.rm_modelsr   Úapp.models.production_modelsr   r   r   Úapp.models.qa_modelsr   r   Úapp.models.dispatch_modelsr    r!   r"   Úapp.models.core_modelsr#   Úschemasr$   r%   r&   r'   r(   Úorder_spec_servicer)   r+   rÿ   r4   r1   Ú<module>r×     sc   ðç -Ñ -Ý ß ,Ó ,ß .Ó .Ý /Ý !÷ó ÷ Aß DÝ .ß ]Ñ ]ß Kß hÑ hÝ -÷õ õ ;÷J
ó J
r4   