ó
    ¿Äj>]  ã                   óÈ  • S SK r S SKJrJrJrJr  S SKJr  S SKJr  S SK	r	S SK
Jr  S SKJr  S SKJr  S SKrS SKJrJrJrJrJr  S	S
1rSrSBS\S\S\4S jjrS\S\4S jr SCS\S\S\S\S\S\4S jjrS rS\4S jr S\!S\4S jr"S\4S jr#S r$S\%S\4S jr&SDS\S\4S jjr'0 SS _S!S"_S#S$_S%S&_S'S(_S)S*_S+S,_S-S._S/S0_S1S2_S3S4_S5S6_S7S8_S9S:_S;S<_S=S>_r(S? r)SES@ jr*SA r+g)Fé    N)ÚdateÚdatetimeÚ	timedeltaÚtimezone)ÚBackgroundTasks)ÚSession)ÚSessionLocal)Úsend_alert_email_task)Úertesitesi_emailek_berlet_miatt)Ú
MSZ_MATRIXÚMSZ_9750_CSOPORT_MATRIXÚ
add_monthsÚcompute_vizsgalati_esedekessegÚ!get_vizsgalati_datum_kotelezo_modu   KorlÃ¡tozÃ¡ssal alkalmaszNem alkalmas / Nem felelt megu(   Kivonva (vizsgÃ¡n nem megfelelÃ©s miatt)ÚdbÚ	kategoriaÚreturnc           	      ó˜   • [         R                  " XR                  U5      n[        [        R                  U[        X5      -   5      5      $ )uF  A gÃ©p tulajdonos cÃ©gÃ©nek cÃ­mzettjei a megadott levÃ©lkategÃ³riÃ¡ra (C szelet: a cÃ©ges szabÃ¡ly Ã©s a
felhasznÃ¡lÃ³i feliratkozÃ¡s szerint - l. email_feliratkozas.py), + a bÃ©rlÅ‘ cÃ©g "berlet" kategÃ³riÃ¡t kapÃ³
felhasznÃ¡lÃ³i, ha a gÃ©p ki van helyezve. Az aktivÃ¡lÃ¡sra vÃ¡rÃ³ Ã©s az inaktÃ­v felhasznÃ¡lÃ³k kimaradnak.)Úemail_feliratkozasÚ	cimzettekÚ
company_idÚlistÚdictÚfromkeysr   )Úgepr   r   Úcimeks       Ú/var/www/website/msz_logic.pyÚ_ertesitendo_cimekr      s9   € ô ×(Ò(¨¯^©^¸YÓG€EÜ”—‘˜eÔ&EÀcÓ&NÑNÓOÓPÐPó    c                 ó,  • UR                  [        R                  5      R                  [        R                  R                  U R                  :H  [        R                  R
                  S:H  5      R                  5       nU(       a  UR                  S:H  $ S$ )NÚ!VizsgalatSikertelenEmailErtesitesÚTrueT)ÚqueryÚmodelsÚ
DictionaryÚfilterr   r   ÚfirstÚertek)r   r   Ú	beallitass      r   Ú_email_engedelyezve_er*       sr   € Ø—‘œ×*Ñ*Ó+×2Ñ2Ü×Ñ×$Ñ$¨¯©Ñ6Ü×Ñ×#Ñ#Ð'JÑJó÷ �eƒgð ö )2ˆ9�?‰?˜fÑ$Ð;°tÐ;r   Ú	minositesÚforras_leirasÚbackground_tasksÚhatarido_objc                 óT  • U[         ;  a  gSU;   nU(       a‚  U R                  n[        U l        U SU 3U l        UR	                  [
        R                  " U R                  U(       a  UR                  OSSU[         SU SU 3S95        U S	U S
3n	Sn
SnSnO¥Uc  [        R                  " 5       [        SS9-   nUR	                  [
        R                  " U R                  U(       a  UR                  OSSU R                  SUR                  S5       SU SU 3S95        U SUR                  S5       S3n	Sn
UnSnUR	                  [
        R                  " U R                  U(       a  UR                  OSU	U
SUS95        [        X5      (       a•  Ub’  [        X5      nU(       a€  U R                   =(       d    SU R"                  =(       d    SU R$                  =(       d    SU R                  U R&                  S.nUR)                  [*        XÞXœU(       a  UR                  OS5        g)uŒ  Ha egy vizsgÃ¡lat (checklist-jegyzÅ‘kÃ¶nyv) vagy egy feltÃ¶ltÃ¶tt vizsgÃ¡lati dokumentum
"KorlÃ¡tozÃ¡ssal alkalmas" vagy "Nem alkalmas" minÅ‘sÃ­tÃ©st kapott, hibajegyet (dashboard
"hibalap") nyit rÃ¡, Ã©s - a cÃ©g beÃ¡llÃ­tÃ¡sÃ¡tÃ³l fÃ¼ggÅ‘en - e-mailben is Ã©rtesÃ­ti a feliratkozott
felhasznÃ¡lÃ³kat (a bÃ©rlÅ‘ cÃ©g EÃœI-jÃ©t is, ha a gÃ©p ki van helyezve). Visszaadja, hogy tÃ¶rtÃ©nt-e
bÃ¡rmilyen beavatkozÃ¡s - ha a minÅ‘sÃ­tÃ©s "Alkalmas / Megfelelt" volt, nem csinÃ¡l semmit.

A kÃ©t minÅ‘sÃ­tÃ©s eltÃ©rÅ‘en viselkedik (2026-09-30-i user-kÃ©rÃ©s nyomÃ¡n szÃ©tvÃ¡lasztva):
- "Nem alkalmas / Nem felelt meg": a gÃ©p AZONNAL "Kivonva (vizsgÃ¡n nem megfelelÃ©s miatt)"
  stÃ¡tuszba kerÃ¼l - ez a rÃ©gi, vÃ¡ltozatlan viselkedÃ©s.
- "KorlÃ¡tozÃ¡ssal alkalmas": a gÃ©p a `hatarido_obj`-ig HASZNÃ�LHATÃ“ marad (nem vonjuk ki), csak
  egy "FIGYELMEZTETES" sÃºlyossÃ¡gÃº, hatÃ¡ridÅ‘s hibajegy nyÃ­lik rÃ¡. Ha a hatÃ¡ridÅ‘ig valaki
  lezÃ¡rja a hibajegyet (javÃ­tÃ¡s megtÃ¶rtÃ©nt, l. routers/mobile_qr.py ticket_feloldas), a gÃ©p
  AktÃ­v marad. Ha nem, a naponta lefutÃ³ `korlatozott_gepek_hataridejenek_ellenorzese()` a
  hatÃ¡ridÅ‘ elteltÃ©vel automatikusan kivonja.FzNem alkalmasu    - minÅ‘sÃ­tÃ©s: Nu   StÃ¡tusz (automatikus)z - ú: ©Ú
machine_idÚuser_idÚ
field_nameÚ	old_valueÚ	new_valueu>    miatt a gÃ©p automatikusan kivonÃ¡sra kerÃ¼lt. MinÅ‘sÃ­tÃ©s: Ú.ÚLETILTASTé   )Údaysu&   KorlÃ¡tozÃ¡ssal alkalmas (hatÃ¡ridÅ‘s)u   A gÃ©p z%Y-%m-%duX   -ig hasznÃ¡lhatÃ³ marad, utÃ¡na javÃ­tÃ¡s hiÃ¡nyÃ¡ban automatikusan kivonÃ¡sra kerÃ¼l - uF    miatt a gÃ©p "KorlÃ¡tozÃ¡ssal alkalmas" minÅ‘sÃ­tÃ©st kapott. A gÃ©p u‘   -ig HASZNÃ�LHATÃ“, de eddig a hibÃ¡t el kell hÃ¡rÃ­tani - ha addig nem tÃ¶rtÃ©nik javÃ­tÃ¡s rÃ¶gzÃ­tÃ©se, a gÃ©p automatikusan kivonÃ¡sra kerÃ¼l.ÚFIGYELMEZTETESÚRendszerÚNyitott)r2   Úbejelento_nevÚhiba_leirasaÚ	sulyossagÚstatuszÚhataridoõ   Ismeretlen gÃ©pÚ-©ÚnevÚ
gyari_szamÚtipusÚgep_idr   )Ú#VIZSGALATI_MINOSITES_KIVONO_ERTEKEKrA   Ú!GEP_STATUSZ_VIZSGAN_NEM_MEGFELELTÚstatusz_okaÚaddr$   ÚAuditLogÚidr   Útodayr   ÚstrftimeÚMaintenanceTicketÚusernamer*   r   Ú
megnevezesrG   rH   r   Úadd_taskr
   )r   r+   r,   Úcurrent_userr   r-   r.   Únem_alkalmasÚregi_statuszÚhiba_leirasr@   Úticket_hataridoÚkritikus_emailr   Úgep_ads                  r   Ú'kezeli_sikertelen_vizsgalati_minositestr]   (   s  € ð  Ô;Ó;Øà! YÑ.€LæØ—{‘{ˆÜ7ˆŒØ*˜OÐ+<¸Y¸KÐHˆŒà
�‰Œv�ŠØ—v‘vÞ'3�L—O’O¸Ø/Ø"Ü:Ð;¸3¸}¸oÈRÐPYÈ{Ð[ñ
ô 	ð '˜Ð'eÐfoÐepÐpqÐrˆØˆ	ØˆØ‰àÑÜŸ:š:›<¬)¸Ñ*<Ñ<ˆLà
�‰Œv�ŠØ—v‘vÞ'3�L—O’O¸Ø?Ø—k‘kà˜,×/Ñ/°
Ó;Ð<ð =AØANÀÈrÐR[ÐQ\ð^ñ	
ô 		ð ˆoÐeØ×$Ñ$ ZÓ0Ð1ð 2fðgð 	ð
 %ˆ	Ø&ˆØˆà‡F�FŒ6×#Ò#Ø—6‘6Þ/;�l×+Ò+ÀØ ØØØ ñô ô ˜S×%Ñ%Ð*:Ñ*FÜ" 3Ó+ˆÞà—~‘~×:Ð):Ø!Ÿn™n×3°ØŸ™×) cØŸ&™&Ø!Ÿn™nñˆFð ×%Ñ%Ü% u°kÞ)5�×%Ò%¸:ôð
 r   c                  óV  • [        5       n  [        R                  " 5       nU R                  [        R
                  5      R                  [        R
                  R                  S:H  [        R
                  R                  S:H  [        R
                  R                  R                  S5      [        R
                  R                  U:  5      R                  5       nU GHK  nUR                  nU(       a  UR                  S:w  a  M)  UR                  n[        Ul        SUR                   S3Ul        U R                  [        R                   " UR"                  SSUUR                  S95        S	Ul        UR$                   S
UR                   S3Ul        ['        X@5      (       d  MÊ  [)        X@5      nU(       d  MÞ  UR*                  =(       d    SUR,                  =(       d    SUR.                  =(       d    SUR"                  UR0                  S.n[3        XgUR                  SS5        GMN     U R5                  5         U RA                  5         g! [6         a>  nU R9                  5         [;        S[=        U5      R>                   SU 35         SnANTSnAff = f! U RA                  5         f = f)u  Naponta lefutÃ³ Ã¼temezett feladat (l. main.py scheduler): minden mÃ©g "Nyitott",
"FIGYELMEZTETES" sÃºlyossÃ¡gÃº, hatÃ¡ridÅ‘s hibajegyet megnÃ©z - ha a hatÃ¡ridÅ‘ letelt Ã©s a gÃ©p
idÅ‘kÃ¶zben nem lett kÃ©zzel kivonva/javÃ­tva, automatikusan "Kivonva" stÃ¡tuszba kerÃ¼l.r=   r;   Nu   AktÃ­vu3   KorlÃ¡tozÃ¡ssal alkalmas minÅ‘sÃ­tÃ©s hatÃ¡rideje (u   ) letelt javÃ­tÃ¡s nÃ©lkÃ¼l.u*   StÃ¡tusz (automatikus - hatÃ¡ridÅ‘ letelt)r1   r8   u2    [Automatikusan kivonva: a javÃ­tÃ¡si hatÃ¡ridÅ‘ (z
) letelt.]rC   rD   rE   Tr<   u<   â�Œ Hiba a korlÃ¡tozott gÃ©pek hatÃ¡ridÅ‘-ellenÅ‘rzÃ©sekor: r0   )!r	   r   rP   r#   r$   rR   r&   rA   r@   rB   ÚisnotÚallÚmachinerK   rL   rM   rN   rO   r?   r*   r   rT   rG   rH   r   r
   ÚcommitÚ	ExceptionÚrollbackÚprintÚtypeÚ__name__Úclose)	r   ÚmaÚlejart_jegyekÚjegyr   rX   r   r\   Úes	            r   Ú+korlatozott_gepek_hataridejenek_ellenorzeserm   �   s!  € ô 
‹€Bð.Ü�ZŠZ‹\ˆØŸ™¤×!9Ñ!9Ó:×AÑAÜ×$Ñ$×,Ñ,°	Ñ9Ü×$Ñ$×.Ñ.Ð2BÑBÜ×$Ñ$×-Ñ-×3Ñ3°DÓ9Ü×$Ñ$×-Ñ-°Ñ2ó	
÷
 ‰#‹%ð 	ô "ˆDØ—,‘,ˆCÞ˜#Ÿ+™+¨Ó1ÙàŸ;™;ˆLÜ;ˆCŒKØ SÐTX×TaÑTaÐSbÐb~ÐˆCŒOà�F‰F”6—?’?ØŸ6™6ØØGØ&ØŸ/™/ñô ð (ˆDŒNØ#'×#4Ñ#4Ð"5Ð5gÐhl×huÑhuÐgvð  wAð  !BˆDÔä$ S×-Ó-Ü*¨3Ó3�ß�5à"Ÿ~™~×BÐ1BØ&)§n¡n×&;¸Ø!$§¡×!1¨cØ"%§&¡&Ø&)§n¡nñ�Fô *¨%¸¿¹È$ÐPZ×[ñ= "ð@ 	�	‰	Œð
 	�‰�
øô	 ó fØ
�‰ŒÜÐLÌTÐRSËW×M]ÑM]ÐL^Ð^`ÐabÐ`cÐd×eÑeûðfûð 	�‰�
ús7   ŒFI Æ$I Æ8BI É
JÉ4JÊ	J ÊJÊJ ÊJ(c                 ó0  •  [        U R                  5      R                  SS5      n[        R                  " SSU5      nU(       a  [        U5      OSnUS:”  a  gU R                  (       a  U R                  =(       d    SS:”  a  gg	! [         a    Sn NAf = f)
uG  EBSZ 7.2.10 - egy EmelÅ‘gÃ©p Ã¼gyintÃ©zÅ‘ csak akkor jogosult FÅ‘vizsgÃ¡latra VAGY IdÅ‘szakos
biztonsÃ¡gi felÃ¼lvizsgÃ¡latra (utÃ³bbi tartalmazza az elÅ‘bbit), ha a gÃ©p megengedett
teherbÃ­rÃ¡sa legfeljebb 1000 kg, Ã‰S a gÃ©pnek nincs olyan kezelÅ‘i munkahelye, ami az
emelÅ‘kocsin van Ã©s 1,5 mÃ©ternÃ©l magasabbra emelhetÅ‘.Ú,r7   z[^\d.]Ú r   iè  FiÜ  T)	ÚstrÚ
teherbirasÚreplaceÚreÚsubÚfloatrc   Úkezelo_egyutt_emelkedikÚkezeloi_munkahely_magassaga)r   Ú	teher_strÚtisztitott_szamÚ	teher_nums       r   Úeui_fovizsgalatra_jogosult_er|   ·   s‡   € ð
Ü˜Ÿ™Ó'×/Ñ/°°SÓ9ˆ	ÜŸ&š& ¨B°	Ó:ˆÞ.=”E˜/Ô*À1ˆ	ð �4ÓØà
×"×"¨×(GÑ(G×(LÈ1ÐPTÓ'TØàøô ó ØŠ	ðús   ‚AB ÂBÂBÚhc                 ó<   • U S::  a  gU S::  a  gU S::  a  gU S::  a  gg	)
um   A napi Ã¡tlagos Ã¼zemidÅ‘bÅ‘l (Ã³ra) szÃ¡molt M-fokozat - tÃ¼krÃ¶zi az index.html JS calculateKtValue()-jÃ¡t.é   ÚM1é   ÚM2é	   ÚM3é   ÚM4ÚM5© )r}   s    r   Úmsz_m_fokozatr‰   Ì   s-   € àˆAƒvØØ	
ˆa‹ØØ	
ˆa‹ØØ	
ˆb‹ØØr   c                 ó`   • U R                   (       a  gU R                  S;   a  U R                  $ g)NÚT3)ÚT1ÚT2r‹   rŒ   )Úveszelyes_kornyezetÚteher_class)r   s    r   Úmsz_t_fokozatr�   Ù   s(   € Ø
××ØØ
‡�Ð,Ó,Ø�‰ÐØr   c                 ó¨  • U R                   (       a  g[        U R                  =(       d    S5      n[        U 5      nX l        [
        U   U   nU R                  (       a:   [        UR                  S5      5      nUS:  d  US:”  a  Un[        U5      U l        gU R                  (       a  g[        U5      U l        g! [        [        4 a    Un NVf = f)uT  
BiztonsÃ¡gi validÃ¡ciÃ³ (IDOR/adatintegritÃ¡s): az M-fokozatot Ã©s a csoportszÃ¡mot
a szerver szÃ¡molja Ãºjra a mentett adatokbÃ³l, nem a kliens JS-bÅ‘l kapott Ã©rtÃ©ket
fogadja el vakon - kivÃ©ve az explicit, kockÃ¡zatÃ©rtÃ©kelÃ©sen alapulÃ³ egyedi felÃ¼lbÃ­rÃ¡lÃ¡st.
TÃ¼krÃ¶zi az index.html-ben lÃ©vÅ‘ calculateKtValue() JS logikÃ¡jÃ¡t.
Nç        Úcalculated_csoportszamé   é   )Úis_teherfelvevor‰   Únapi_atlag_uzemidor�   Úcalculated_m_fokozatr   Ú#egyedi_csoportszam_kockazat_alapjanÚintÚgetÚ	TypeErrorÚ
ValueErrorrq   r“   Ú"vizsgaloi_csoportszam_felulbiralas)r   Ú	form_dataÚ	m_fokozatÚ	t_fokozatÚszamolt_csoportszamÚbeirt_csoportszams         r   Úrecompute_msz_classificationr¤   á   sÆ   € ð ××Øä˜c×4Ñ4×;¸Ó<€IÜ˜cÓ"€Ià(ÔÜ1°)Ñ<¸YÑGÐà
×.×.ð	4Ü # I§M¡MÐ2JÓ$KÓ LÐð ˜qÓ Ð$5¸Ó$9Ø 3ÐÜ%(Ð):Ó%;ˆÕ"Ø	×	/×	/ð 	ä%(Ð)<Ó%=ˆÕ"øô œ:Ð&ó 	4Ø 3Òð	4ús   Á B< Â<CÃCr   c                 ó|  • UR                  [        R                  5      R                  [        R                  R                  U :H  [        R                  R
                  S:H  5      R                  5       nU(       a  UR                  OSnUR                  [        R                  5      R                  [        R                  R                  U :H  [        R                  R
                  S:H  5      R                  5       n U(       a  [        UR                  5      OSnUS:  a  SnX54$ ! [        [        4 a    Sn Nf = f)uc   Visszaadja a cÃ©g Ã¼zemÃ³ra-eltÃ©rÃ©s kezelÃ©si beÃ¡llÃ­tÃ¡sait: (mÃ³d, Ã¡tlagolÃ¡si napok szÃ¡ma).ÚUzemoraEltertesModÚFigyelmeztetesÚUzemoraAtlagNapokr9   r”   )r#   r$   r%   r&   r   r   r'   r(   rš   rœ   r�   )r   r   Úmod_objÚmodÚ	napok_objÚnapoks         r   Úget_uzemora_beallitasokr­     s  € à�h‰h”v×(Ñ(Ó)×0Ñ0Ü×Ñ×$Ñ$¨
Ñ2Ü×Ñ×#Ñ#Ð';Ñ;ó÷ �eƒgð ö #ˆ'�-Š-Ð(8€Cà—‘œ×*Ñ*Ó+×2Ñ2Ü×Ñ×$Ñ$¨
Ñ2Ü×Ñ×#Ñ#Ð':Ñ:ó÷ �eƒgð ðÞ(1”�I—O‘OÔ$°rˆð ˆqƒyØˆàˆ:Ðøô ”zÐ"ó ØŠðús   Ã=D& Ä&D;Ä:D;c                 óv  • U R                   (       d  U R                  (       a  gU R                  (       a  U R                  c  g[	        U R
                  U5      u  p4U R                  nUR                  c  UR                  [        R                  S9n[        R                  " [        R                  5      U-
  R                  5       S-  nXd:  a  gU R                  =(       d    SU R                  -
  nUS::  a  gXv-  nU R                  =(       d    Sn	X‰S-  ::  a  gU R                  n
U R                   n[#        U5      n[%        U 5      n['        [(        U   U   5      nUS:X  a   XÊ:X  a  Xë:X  a  gXÀl        Xàl        XÀl        [,        R.                  " U R0                  SSU
=(       d    S	 S
U=(       d    S	 S3U S
U SUS SU	S S3S9nUR3                  U5        SUS SU	S SU
=(       d    S	 SU=(       d    S	 SU SU S3nO›U R*                  U:X  a  gXÀl        [,        R.                  " U R0                  SSSU
=(       d    S	 S
U=(       d    S	 S3SU S
U SUS SU	S S3	S9nUR3                  U5        SUS SU	S SU
=(       d    S	 S
U=(       d    S	 SU S
U S3nUb™  [4        R6                  " XR
                  S5      nU(       ap  U R8                  =(       d    SU R:                  =(       d    S	U R<                  =(       d    S	U R0                  U R
                  S.nUR?                  [@        UUUS S!5        ggg)"u  
Ha a tÃ©nylegesen rÃ¶gzÃ­tett Ã¼zemÃ³ra-fogyÃ¡s (a MÃ¡trix bÃ¡zispont Ã³ta) jelentÅ‘sen
meghaladja a tervezett napi Ã¡tlagot, a cÃ©g beÃ¡llÃ­tÃ¡sÃ¡tÃ³l fÃ¼ggÅ‘en:
- "Figyelmeztetes": csak naplÃ³z Ã©s e-mailt kÃ¼ld, a besorolÃ¡st nem mÃ³dosÃ­tja,
- "AutomatikusModositas": automatikusan szigorÃ­tja az M-fokozatot / csoportszÃ¡mot is.
KockÃ¡zatÃ©rtÃ©kelÃ©s alapjÃ¡n egyedileg felÃ¼lbÃ­rÃ¡lt gÃ©peknÃ©l nem nyÃºlunk automatikusan
a csoportszÃ¡mhoz, Ã©s nem is figyelmeztetÃ¼nk - ott a felÃ¼lbÃ­rÃ¡lÃ¡s a mÃ©rvadÃ³.
N)Útzinfog     õ@r’   r   g333333ó?ÚAutomatikusModositasu#   AUTOMATIKUS BESOROLÃ�S SZIGORÃ�TÃ�SrD   z / z	. csoportu#   . csoport (tÃ©nyleges napi Ã¡tlag: z.1fz h, tervezett: z h)r1   u)   A gÃ©p tÃ©nyleges Ã¼zemÃ³ra-hasznÃ¡lata (u5    h/nap) jelentÅ‘sen meghaladja a tervezett Ã¡tlagot (uF    h/nap). A rendszer ezÃ©rt automatikusan szigorÃ­totta a besorolÃ¡st: z (z. csoport) -> u’   . csoport). KÃ©rjÃ¼k, ellenÅ‘rizze a vizsgÃ¡lati esedÃ©kessÃ©geket, Ã©s szÃ¼ksÃ©g esetÃ©n frissÃ­tse a tervezett napi Ã¡tlagot a gÃ©p adatlapjÃ¡n!u#   ÃœZEMÃ“RA ELTÃ‰RÃ‰S FIGYELMEZTETÃ‰Su   Jelenlegi besorolÃ¡s: u1   A tÃ©nyleges hasznÃ¡lat alapjÃ¡n indokolt lenne: u!    h/nap). A jelenlegi besorolÃ¡s (uP   . csoport) a tÃ©nyleges hasznÃ¡lat alapjÃ¡n mÃ¡r nem elegendÅ‘, indokolt lenne: u   . csoport. KÃ©rjÃ¼k, ellenÅ‘rizze Ã©s szÃ¼ksÃ©g esetÃ©n frissÃ­tse manuÃ¡lisan a besorolÃ¡st Ã©s a tervezett napi Ã¡tlagot a gÃ©p adatlapjÃ¡n! (A rendszer jelenleg csak figyelmeztet, a besorolÃ¡st nem mÃ³dosÃ­tja automatikusan - ez a BeÃ¡llÃ­tÃ¡sok / SzabÃ¡lyok fÃ¼lÃ¶n Ã¡llÃ­thatÃ³ Ã¡t.)Úgep_riasztasrC   rE   Tu.   Rendszer (Automatikus besorolÃ¡s-ellenÅ‘rzÃ©s))!r–   r™   Úmatrix_kezdo_datumÚmatrix_kezdo_uzemorar­   r   r¯   rs   r   Úutcr   ÚnowÚtotal_secondsÚuzemorar—   r˜   r“   r‰   r�   rq   r   Úuzemora_riasztas_szintr$   rN   rO   rM   r   r   rT   rG   rH   rU   r
   )r   r   r-   rª   Úatlag_napokr²   Úelapsed_daysÚtenyleges_oraÚtenyleges_napi_atlagÚtervezett_napi_atlagÚregi_m_fokozatÚregi_csoportszamÚuj_m_fokozatr¡   Úuj_csoportszamÚlogÚuzenetÚemailekr\   s                      r   Ú check_uzemora_drift_and_escalaterÅ     s’  € ð ××˜c×E×EØà×!×! S×%=Ñ%=Ñ%EØä.¨s¯~©~¸rÓBÑ€Cà×/Ñ/ÐØ× Ñ Ñ(Ø/×7Ñ7¼x¿|¹|Ð7ÐLÐä—L’L¤§¡Ó.Ð1CÑC×RÑRÓTÐW^Ñ^€Lð Ó!Øà—[‘[×' C¨3×+CÑ+CÑC€MØ˜ÓØà(Ñ7ÐØ×1Ñ1×8°SÐð °cÑ9Ó9Øà×-Ñ-€NØ×1Ñ1Ðä Ð!5Ó6€LÜ˜cÓ"€IÜÔ0°Ñ>¸yÑIÓJ€Nà
Ð$Ó$ØÓ)¨nÓ.PØà#/Ô Ø%3Ô"à%1Ô"ä�oŠoØ—v‘vØØ<Ø'×.¨3Ð/¨sÐ3C×3JÀsÐ2KÈ9ÐUà�.  NÐ#3ð 4,Ø,@ÀÐ+EÀ_ÐUiÐjmÐTnÐnqðsñ	
ˆð 	�‰ˆsŒà7Ð8LÈSÐ7Qð R%Ø%9¸#Ð$>ð ?,Ø,:×,A¸cÐ+BÀ"ÐEU×E\ÐY\ÐD]Ð]kØˆn˜B˜~Ð.ð /]ð^ñ 	ð ×%Ñ%¨Ó5Øà%1Ô"ä�oŠoØ—v‘vØØ<Ø.¨~×/DÀÐ.EÀSÐIY×I`Ð]`ÐHaÐajÐkàCÀLÀ>ÐQTÐUcÐTdð e,Ø,@ÀÐ+EÀ_ÐUiÐjmÐTnÐnqðsñ	
ˆð 	�‰ˆsŒà7Ð8LÈSÐ7Qð R%Ø%9¸#Ð$>Ð>_Ð`n×`uÐruÐ_vÐvyØ×& 3Ð'Ð'wØˆn˜C Ð/ð 0xðyð 	ð Ñ#Ü$×.Ò.¨r·>±>À>ÓRˆÞà—~‘~×:Ð):Ø!Ÿn™n×3°ØŸ™×) cØŸ&™&Ø!Ÿn™nñˆFð ×%Ñ%Ü% w°¸ÀÐFvõð ð $r   rT   u   MegnevezÃ©sÚgyartou   GyÃ¡rtÃ³rH   u   TÃ­pusrG   u   GyÃ¡ri szÃ¡mÚleltari_szamu   LeltÃ¡ri szÃ¡mrr   u   TeherbÃ­rÃ¡sÚalapadat_megjegyzesu   Alapadat megjegyzÃ©sÚemelesi_magassagu   EmelÃ©si magassÃ¡gÚfesztav_gemhosszu   FesztÃ¡v / GÃ©mhosszÚ	meghajtasu
   MeghajtÃ¡sÚteljesitmenyu   TeljesÃ­tmÃ©nyÚgyartas_datumu   GyÃ¡rtÃ¡s dÃ¡tumaÚuzembe_helyezes_datumu   Ãœzembe helyezÃ©s dÃ¡tumaÚszerkezeti_vizsgalat_datumu   UtolsÃ³ Szerkezeti vizsgÃ¡latÚfovizsgalat_datumu   UtolsÃ³ FÅ‘vizsgÃ¡latÚbiztonsagi_vizsgalat_datumu   UtolsÃ³ Bizt. felÃ¼lvizsgÃ¡latc                 ó€  • / nU R                   (       d  UR                  S5        U R                  (       a(  [        U R                  5      R	                  5       (       d  UR                  S5        U(       GaB  UR
                  (       Ga0  UR
                  R                  S5       Vs/ s H)  o3R	                  5       (       d  M  UR	                  5       PM+     nn[        S UR                  =(       d    SR                  S5       5       5      nUR                  UR                  UR                  S.nU Hƒ  nXu;   a  M
  [        XS5      nUb.  [        U[        5      (       d  M0  UR	                  5       (       a  MG  UR                  UR                  U5      =(       d    [        R                  Xw5      5        M…     U$ s  snf )uÈ  
Visszaadja az Ã¼resen Ã¡llÃ³ kÃ¶telezÅ‘ mezÅ‘k magyar cÃ­mkÃ©jÃ©t: elsÅ‘kÃ©nt a Telephelyet Ã©s a
GÃ©ptÃ­pust (ezek a szerkesztÅ‘ adatlapon fixen "required"-ek, minden gÃ©ptÃ­pusnÃ¡l, pl.
Excel importtal felvitt gÃ©peknÃ©l gyakran Ã¼resen maradnak), majd a gÃ©ptÃ­pushoz
(MachineTypeConfig) beÃ¡llÃ­tott egyedi kÃ¶telezÅ‘ mezÅ‘ket - az index.html "Dinamikus
kÃ¶telezÅ‘ mezÅ‘k" JS logikÃ¡jÃ¡t (configMap/hiddenConfigMap) tÃ¼krÃ¶zi vissza, lista-nÃ©zethez.
Ú	Telephelyu
   GÃ©ptÃ­pusro   c              3   ón   #   • U  H+  oR                  5       (       d  M  UR                  5       v •  M-     g 7f©N)Ústrip)Ú.0Úms     r   Ú	<genexpr>Ú-gep_hianyzo_kotelezo_mezok.<locals>.<genexpr>²  s%   é € ÐdÒ/V¨!×ZaÑZa×Zc›I˜AŸG™GŸI˜IÒ/Vùs   ‚5ž5rp   )Úegyedi_1Úegyedi_2Úegyedi_3N)Úsite_idÚappendÚgeptipusrq   rÖ   Úkotelezo_mezokÚsplitÚsetÚrejtett_mezokÚegyedi_1_nevÚegyedi_2_nevÚegyedi_3_nevÚgetattrÚ
isinstancer›   ÚFIELD_LABELS)	r   ÚconfigÚhianyzikrØ   Úkotelezo_listaÚrejtett_listaÚegyedi_cimkekÚmezor(   s	            r   Úgep_hianyzo_kotelezo_mezokrñ   ¡  sG  € ð €Hà�;�;Ø�‰˜Ô$Ø�<�<œs 3§<¡<Ó0×6Ñ6×8Ñ8Ø�‰˜Ô%ç�&×'×'Ð'Ø-3×-BÑ-B×-HÑ-HÈÔ-MÓ[Ò-M¨×QXÑQX×QZ›)˜!Ÿ'™'ž)Ñ-MˆÐ[ÜÑd°×0DÑ0D×0JÈ×/QÑ/QÐRUÔ/VÓdÓdˆð ×+Ñ+Ø×+Ñ+Ø×+Ñ+ñ
ˆó #ˆDØÓ$ÙÜ˜C tÓ,ˆEØ‰}¤¨E´3×!7Ó!7ÀÇÁÇÃØ—‘ × 1Ñ 1°$Ó 7× W¼<×;KÑ;KÈDÓ;WÖXñ #ð €Oùò! \s   Â&F;ÃF;c                 ó(  • U=(       d    0 n0 nU  H~  nUR                  UR                  5      n[        XQXc5       HP  nUS   (       d  M  UR                  US   / 5      R	                  UR
                  =(       d    SUS   US   S.5        MR     M€     U$ )uÜ   Az aktÃ­v gÃ©pek soron kÃ¶vetkezÅ‘ vizsgÃ¡lati esedÃ©kessÃ©geit napokra csoportosÃ­tva adja vissza
a dashboard esemÃ©nynaptÃ¡rÃ¡hoz. Kulcs: Ã‰Ã‰Ã‰Ã‰-HH-NN dÃ¡tum-szÃ¶veg, Ã©rtÃ©k: az adott napra esÅ‘ esemÃ©nyek listÃ¡ja.ÚesedekesrC   rH   Úallapot)Úgep_nevrH   rô   )r›   rà   r   Ú
setdefaultrß   rT   )ÚgepekÚmai_napÚconfigs_by_geptipusÚdatum_kotelezo_modÚ	esemenyekr   rë   rl   s           r   Úbuild_naptar_esemenyekrü   Ä  s•   € ð .×3°ÐØ€IÛˆØ$×(Ñ(¨¯©Ó6ˆÜ/°¸fÖYˆAØ�Z—=ÙØ× Ñ   :¡°Ó3×:Ñ:ØŸ>™>×>Ð->Ø˜7™Ø˜Y™<ñ<ö ó Zñ ð Ðr   c                 óð  • 0 nSU;   a  / SQXTU// SQS.US'   SU;   a   0 nU  HF  nUR                   =(       d    SR                  5       =(       d    Sn	UR                  U	S5      S-   Xy'   MH     [        UR	                  5       S	 S
S9n
U
SS  V	Vs/ s H  u  p›U	PM	     snn	U
SS  VVs/ s H  u  p¼UPM	     snnS.US'   SU;   a   0 nU  HF  nUR
                  =(       d    SR                  5       =(       d    Sn	UR                  U	S5      S-   Xy'   MH     [        UR	                  5       S S
S9n
U
SS  V	Vs/ s H  u  p›U	PM	     snn	U
SS  VVs/ s H  u  p¼UPM	     snnS.US'   SU;   aô  SSSSSS.nSnSnU  H”  nUR                  (       d  US==   S-  ss'   M#  X(R                  -
  R                  S-  nUU-  nUS-  nUS:  a  US==   S-  ss'   M]  US:  a  US==   S-  ss'   Mr  US:  a  US==   S-  ss'   M‡  US==   S-  ss'   M–     U(       a  [        Xï-  S5      OSn[        UR                  5       5      [        UR                  5       5      US.US'   U$ s  snn	f s  snnf s  snn	f s  snnf )u¥   A dashboardon megjelenÃ­thetÅ‘ diagramokhoz szÃ¼ksÃ©ges Ã¶sszesÃ­tett adatokat Ã¡llÃ­tja elÅ‘,
kizÃ¡rÃ³lag a cÃ©g BeÃ¡llÃ­tÃ¡sokban kivÃ¡lasztott diagramtÃ­pusokhoz.rA   )ÚRendbenu	   KÃ¶zelgÅ‘u   LejÃ¡rt)z#28a745z#ffc107z#dc3545)ÚcimkekÚertekekÚszinekrÆ   Ú
Ismeretlenr   r”   c                 ó   • U S   $ ©Nr”   rˆ   ©Úxs    r   Ú<lambda>Ú&build_diagram_adatok.<locals>.<lambda>ç  ó   € ¸1¸Qº4r   T)ÚkeyÚreverseNé   )rÿ   r   rà   c                 ó   • U S   $ r  rˆ   r  s    r   r  r  ò  r	  r   Úkor)õ   0-2 Ã©võ   2-5 Ã©võ   5-10 Ã©võ   10+ Ã©vr  r’   g     Ôv@r   r  r•   r  é
   r  r  )rÿ   r   Úatlag)rÆ   rÖ   r›   ÚsortedÚitemsrà   rÍ   r:   Úroundr   ÚkeysÚvalues)r÷   Úvalasztott_diagramokrø   Ú	lejart_dbÚhamarosan_dbÚ
rendben_dbÚadatokÚszamlalor   rF   Ú	rendezettÚ_Údb_ertekÚkorcsoportokÚ
koroszszegÚkoros_dbÚkor_evekÚ	atlag_kors                     r   Úbuild_diagram_adatokr(  Ö  sŸ  € ð €FàÐ(Ó(â9Ø"°)Ð<Ú7ñ
ˆˆyÑð Ð'Ó'ØˆÛˆCØ—:‘:×- ×4Ñ4Ó6×F¸,ˆCØ$ŸL™L¨¨aÓ0°1Ñ4ˆH‹Mñ ô ˜8Ÿ>™>Ó+±ÈÑNˆ	à)2°2°A©Ô7ª™v˜s“s©Ò7Ø4=¸b¸q±MÔB²M¡[ Q›±MÒBñ
ˆˆxÑð
 Ð)Ó)ØˆÛˆCØ—<‘<×/ <×6Ñ6Ó8×H¸LˆCØ$ŸL™L¨¨aÓ0°1Ñ4ˆH‹Mñ ô ˜8Ÿ>™>Ó+±ÈÑNˆ	à)2°2°A©Ô7ª™v˜s“s©Ò7Ø4=¸b¸q±MÔB²M¡[ Q›±MÒBñ
ˆˆzÑð
 Ð$Ó$Ø#$°ÀÈaÐ_`ÑaˆØˆ
ØˆÛˆCØ×$×$Ø˜\Ó*¨aÑ/Ó*ÙØ×"3Ñ"3Ñ3×9Ñ9¸FÑBˆHØ˜(Ñ"ˆJØ˜‰MˆHØ˜!‹|Ø˜YÓ'¨1Ñ,Õ'Ø˜A“Ø˜YÓ'¨1Ñ,Õ'Ø˜B“Ø˜ZÓ(¨AÑ-Õ(à˜YÓ'¨1Ñ,Õ'ñ ö 8@”E˜*Ñ/°Ô3ÀTˆ	ä˜<×,Ñ,Ó.Ó/Ü˜L×/Ñ/Ó1Ó2Øñ
ˆˆu‰ð €MùóS 8ùÛBùó 8ùÛBs   ÂI Â'I&Ä4I,ÅI2)Úsikertelen_vizsgalat)NNrÕ   )NÚAlapbolKotelezo),rt   r   r   r   r   Úfastapir   Úsqlalchemy.ormr   r$   Údatabaser	   Úemail_utilsr
   Úberles_utilsr   r   Úmsz_constantsr   r   r   r   r   rJ   rK   rq   r   r   Úboolr*   r]   rm   r|   rv   r‰   r�   r¤   rš   r­   rÅ   rê   rñ   rü   r(  rˆ   r   r   Ú<module>r2     sõ  ðÛ 	ß 8Ó 8å #Ý "ã Ý !Ý -Ý 8Û ÷õ ð (BÐCbÐ&cÐ #Ø$NÐ !ñQ ð Q°Cð QÐUYõ Qð< 7ð <¨tô <ð mqñV¸Cð VÐPSð VÐgnð VØ?NðVØeiðVØuyõVòr3ðl¨ô ð*
�Uð 
˜sô 
ð˜#ô ò >ðF¨ð °ô ñ,p¨gð pÈõ pðfØ�-ðàˆjðð ˆXðð �.ð	ð
 Ð$ðð �.ðð Ð1ðð Ð,ðð Ð.ðð �ðð Ð$ðð Ð(ðð Ð8ðð !Ð"Aðð Ð0ðð  !Ð"Bð!€ò( ôFó$<r   