
    4hp                          S SK J r Jr  S SKJrJr  S SKrS SKJrJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  S	 S
 S S S S S.r\" 5       rS rg)    )datetime	timedelta)	json_utilObjectIdN)PointPolygon)AIOKafkaConsumer)database)connected_clients)notify_nearby_subscribersc                 
    X:H  $ N abs     MC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\consumers\kafka_consumer.py<lambda>r          qv    c                 
    X:  $ r   r   r   s     r   r   r          aer   c                 
    X:  $ r   r   r   s     r   r   r      r   r   c                 
    X:  $ r   r   r   s     r   r   r      r   r   c                 
    X:*  $ r   r   r   s     r   r   r      r   r   c                 
    X:g  $ r   r   r   s     r   r   r      r   r   )z==><z>=z<=z!=c                    #    [        SSSSSS9n U R                  5       I S h  vN   [        R                  " 5       n[	        U5      nUS   nUS   nUS	   nUS
   nUS   nUS   nUS   n	US   n
 [        S5        U   S h  vN n[        S5         [        R                  " UR                  R                  S5      5      n[        SU5        [        R                  " 5       US'   SUS'   UR                  S5      nUR                  S0 5      R                  S/ 5      nUR                  U5        / nUR                  SU0S/S9nU(       a  US   n[        R                  " 5       nUU-
  nU[!        SS9:  aj  USSU S 3US!.nUR                  U5        UR#                  U5        US"SU S#UR$                  S$-   S%3US!.nUR                  U5        UR#                  U5        ['        UR)                  S&U05      5      nU GH  nUR                  S'5      nUR                  S(5      nUR                  S)[+        U5      05      nU(       a  U(       d  MR  [-        U5      n[/        US*   S   S+   5      nUR1                  U5      nUR                  S,5      S-:X  d  M  U(       a  M  U(       a  UR                  S)[+        U5      05      OS nSn U(       a  UR                  S.5      (       a  US.    H  n!U!R                  S/5      n"U!R                  S05      n#U!R                  S15      n$U#[2        ;  a  S2n   OMUR                  U"5      n% [5        U$5      n&U%b  [5        U%5      OS n'U'b  [2        U#   " U'U&5      (       d  S2n   OM     U (       d  GM  U(       a  UR                  S35      OSU S43n(US5US6   U(US   S7.nUR                  U5        UR#                  U5        GM     UR                  S)[+        U5      05      n)UUR                  S85      UR                  S95      UR                  S:5      UR                  S;5      S<.[        R                  " 5       S=.n*U)(       a  U)R                  S>5      n+U)R                  S?5      n,U+S@:X  a   U	R7                  S)[+        U,5      0SAU*05        O%U+S:X  a  U
R7                  S)[+        U,5      0SAU*05        [9        U5      I S h  vN   O;[        SBU SC35        U	R;                  SDU0SAU*05        U
R;                  SDU0SAU*05        [<        R>                  " 5        H  n- U-RA                  [        RB                  " U[D        RF                  SE95      I S h  vN   U H  nU-RA                  [        RB                  " SFUR                  SGSH5      UR                  S5      UR                  SI5      UR                  SJ5      UR                  SK5      SL.[D        RF                  SE95      I S h  vN   M     M     GM   GN GN! [         a  n[        SU5         S nAGM  S nAff = f! [         a    S2n    GM  f = f GNq N NT! [         a.  n[<        RH                  " U-5        [        SMU5         S nAGMU  S nAff = f
 U RK                  5       I S h  vN     [	        U5        g ! [L         a     g f = f! U RK                  5       I S h  vN     [	        U5        f ! [L         a     f f = f= f7f)NNvehicle_trackingz127.0.0.1:9092ztracking-groupearliestT)bootstrap_serversgroup_idauto_offset_resetenable_auto_committracking_logs
alert_logs	geofencesgeofence_rulesgeofence_rule_mappingiot_devicesfleets	workforceu   ✅ Kafka consumer startedu    📩 Message received from Kafkazutf-8u   🔹 Kafka payload:u   ❌ Error decoding message:received_atW
alert_type	device_idlocationcoordinates)r.   )sort   )minutes
inactivityzDevice z inactive for over 30 minutes.)r1   typemessagetriggered_atrecoveryz is back online after <   z minutes of inactivity.assigned_entity_idgeofence_idgeofence_rule_id_idlocr   trigger_eventsexit
conditions	parameteroperatorvalueFalert_messagez exited geofence.zgeofence-exitname)r1   r9   geofencer:   r;   speedheadingfuel	timestamp)r3   rL   rM   rN   rO   )last_locationlast_updatedassociated_entity_typeassociated_entity_idvehiclez$setu   ⚠️ Device z# not found. Fallback update applieddevices)defaultalertr:    r9   rK   r;   )r9   r:   r1   r0   rK   r;   u   ❌ WebSocket error:)'r	   startr
   get_mongo_dbnextprintjsonloadsrH   decode	Exceptionr   utcnowget
insert_onefind_oner   appendsecondslistfindr   r   r   contains	OPERATORSfloat
update_oner   update_manyr   copy	send_textdumpsr   rV   removestopStopIteration).consumer	mongo_genmongor&   r'   r(   r)   geofence_mappingsrU   r,   r-   msgdataer1   r3   alerts
last_entry	last_timecurrent_timegaprW   online_alertmappingsmappinggeo_idrule_idrK   pointpolygoninsideruleconditions_passedcondparamopexpectedactualexpected_val
actual_val	alert_msgdevicelast_location_updateassociated_typeassociated_idwss.                                                 r   consume_tracking_datar      s    *!$H ..
%%'IOE/*M|$Jk"I+,N56M"G8_Fk"I[*+! Q	5#45zz#))"2"27";<+T2
 #+//"3D!$D-I((:r266}bIK $$T*F '//i()* 0 J &}5	'0"Y.2..%. ,%,YK7U#V(4	E ))%0MM%( &/ *%,YK7Mckk]_N_M``w#x(4	$L )),7MM,/ -224H)3TUVH# ]3!++&89$--uhv6F.GH{k*!(5/-"@"CD ))%0;;/0F:66RY>22E8G;L3MN_cD(,% 6 6$($6D$(HH[$9E!%*!5B'+xx'8H!249 1 %%)XXe_F&/4X>D>PU6]VZ
#-#5Yr]:Wc=d=d8=$5$) >e %7( )(AEDHH_$=WU^T__pKq	)2$3(0(8'0,0,?! #--e4e,_ $d %%uhy.A&BCF $/!XXg.#xx	2 HHV,!%+!6" !) 1	$  "(**-E"F &

+A B"i/%%uh}.E&FQeHfg$3((%-1H)IFThKij 0	:::yk1TUV""Iy#9FDX;YZ%%y)&<vG[>\] (,,.5,,tzz$	@Q@Q'RSSS!' ll4::$+',yyB'?).;)?*/))F*;(-		*(=,1IIn,E7 $-#4#4,6 7 7 7 "( /i "Q	5
  3Q7^ $- &49 1 %&P ; T7 ! 5%,,R00!445_ "h mmo	O 		 mmo	O 		sk  ![4XA[41Z: >ZXZZ: ;XGZ: Z: !BZ:  5X,5Z: EZ: YAZ: *5YY BY1Y
2Y:Z: [4Z
X)X$Z: $X))Z: ,X>	8Z: =X>	>Z: YY
Z "Y;4Z: ;Z  Z: [4Z[4Z* )[4*
Z74[46Z77[4:[1[[1[! [1!
[.+[1-[..[11[4)r   r   bsonr   r   r]   shapely.geometryr   r   aiokafkar	   app.dbr
   app.utils.connectionsr   app.v1.sockets.tracking_datar   rj   setr   r   r   r   <module>r      sH    ( $  + %  3 B 		


	 E qr   