Ë
    yÌjD  ã            	       óº   — d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZ  ej                  d«      Zdedefd	„Zd
ededdfd„Zdded
ededdfd„Zy)uæ  
alert_service.py â€” alertes opÃ©rationnelles par e-mail Ã  l'Ã©quipe (ALERT_EMAIL).

Ã€ utiliser pour tout ce qui exige une intervention humaine : webhook Stripe en
Ã©chec, organizer bloquÃ©, suppression RGPD massive, backup en Ã©chec, erreur 500.

- Anti-spam : une mÃªme clÃ© (`key`) ne dÃ©clenche qu'un e-mail par ALERT_COOLDOWN_SECS
  (conservÃ© en base, donc partagÃ© entre workers et redÃ©marrages).
- Toujours journalisÃ© (ERROR) mÃªme sans SMTP ; ne lÃ¨ve jamais d'exception.
é    N)ÚMIMEText)Úconfig)Úget_dbÚ
named_lockzmeeconic.alertÚkeyÚreturnc           	      óä  — t        j                   «       }	 t        d| › �«      5  t        «       5 }|j                  dd| › �f«      j	                  «       }|r4|t        |d   «      z
  t        j                  k  r	 d d d «       d d d «       y|j                  dd| › �t        |«      f«       |j                  «        d d d «       d d d «       y# 1 sw Y   ŒxY w# 1 sw Y   yxY w# t        $ r Y yw xY w)Nzalert:z$SELECT value FROM app_kv WHERE key=?ÚvalueFz7INSERT OR REPLACE INTO app_kv (key, value) VALUES (?,?)T)Útimer   r   ÚexecuteÚfetchoneÚfloatr   ÚALERT_COOLDOWN_SECSÚstrÚcommitÚ	Exception)r   ÚnowÚconnÚrows       ú1/var/www/photos/backend/services/alert_service.pyÚ_cooldown_okr      së   € Ü
�)‰)‹+€Cð	Ü˜&  ˜Ó'ñ 	¬«ð 	°TØ—,‘,ÐEÈ&ÐQTÐPUÈÐGXÓY×bÑbÓdˆCÙ�sœU 3 w¡<Ó0Ñ0´6×3MÑ3MÒMØ÷	÷ 	ð 	ð �L‰LÐRÐW]Ð^aÐ]bÐUcÔehÐilÓemÐTnÔoØ�K‰KŒM÷	÷ 	ð ÷	ð 	ú÷ 	ð ûÜò ÙðúsX   –C# ¤C¯A
CÁ9CÂC# Â
0CÂ:CÃC# ÃC	ÃCÃC ÃC# Ã C# Ã#	C/Ã.C/ÚsubjectÚbodyc                 ó\  — t        j                  dd«      }t        t        j                  dd«      «      }t        j                  dd«      j                  «       }t        j                  dt        j                  dd«      «      j	                  d	d«      }t        j                  d
|«      j                  «       }|r|rt
        j                  sy t        |dd«      }d| › �|d<   ||d<   t
        j                  |d<   	 t        j                  ||d¬«      5 }|j                  «        |j                  ||«       |j                  |«       d d d «       t        j                  dt
        j                  | «       y # 1 sw Y   Œ/xY w# t        $ r!}	t        j!                  d| |	«       Y d }	~	y d }	~	ww xY w)NÚ	SMTP_HOSTzsmtp-relay.brevo.comÚ	SMTP_PORTÚ587Ú	SMTP_USERÚ ÚSMTP_PASSWORDÚ	SMTP_PASSú Ú	SMTP_FROMÚplainzutf-8z[Meeconic ALERTE] ÚSubjectÚFromÚToé   )ÚtimeoutzAlert sent to %s: %sz%Envoi de l'alerte impossible (%s): %s)ÚosÚgetenvÚintÚstripÚreplacer   ÚALERT_EMAILr   ÚsmtplibÚSMTPÚstarttlsÚloginÚsend_messageÚlogÚinfor   Úerror)
r   r   ÚhostÚportÚuserÚpwÚsenderÚmsgÚsÚes
             r   Ú
_smtp_sendr@   &   sX  € Ü�9‰9�[Ð"8Ó9€DÜŒr�y‰y˜ eÓ,Ó-€DÜ�9‰9�[ "Ó%×+Ñ+Ó-€DÜ	�‰�?¤B§I¡I¨k¸2Ó$>Ó	?×	GÑ	GÈÈRÓ	P€BÜ�Y‰Y�{ DÓ)×/Ñ/Ó1€FÙ‘RœF×.Ò.ØÜ
�4˜ 'Ó
*€CØ)¨'¨Ð3€Cˆ	�NØ€Cˆ�KÜ×"Ñ"€Cˆ�IðGÜ�\‰\˜$ ¨bÔ1ð 	 °QØ�J‰JŒLØ�G‰G�D˜"ÔØ�N‰N˜3Ô÷	 ô 	�‰Ð'¬×);Ñ);¸WÕE÷		 ð 	 ûô
 ò GÜ�	‰	Ð9¸7ÀA×FÑFûðGús0   Ã;F Ä4E5Å-F Å5E>Å:F Æ	F+Æ
F&Æ&F+c           	      ór  — 	 t         j                  d| ||«       t        j                  dk(  st        j                  syt        | «      syt        j                  t        ||› d|› dt        j                  › �fd¬«      j                  «        y# t        $ r }t         j                  d|«       Y d}~yd}~ww xY w)	uJ   Journalise (ERROR) et envoie un e-mail d'alerte (avec anti-spam par clÃ©).u   ALERTE [%s] %s â€” %sÚtestNz

z

Env: T)ÚtargetÚargsÚdaemonzalert_service.notify failed: %s)r5   r7   r   ÚAPP_ENVr/   r   Ú	threadingÚThreadr@   Ústartr   )r   r   r   r?   s       r   ÚnotifyrJ   <   s™   € ð	8Ü�	‰	Ð)¨3°¸Ô>Ü�>‰>˜VÒ#¬6×+=Ò+=ØÜ˜CÔ ØÜ×Ñ¤
°'¸g¸YÀdÈ4È&ÐPYÔZ`×ZhÑZhÐYiÐ;jÐ1kØ $ô	&ß&+¡e¥gøÜò 8Ü�	‰	Ð3°Q×7Ñ7ûð8ús#   ‚;B ¾B Á
AB Â	B6ÂB1Â1B6)r   )Ú__doc__Úloggingr*   r0   rG   r   Úemail.mime.textr   Úcorer   Úcore.dbr   r   Ú	getLoggerr5   r   Úboolr   r@   rJ   © ó    r   ú<module>rT      s‰   ðñ	ó Û 	Û Û Û Ý $å ß &à€g×ÑÐ(Ó)€ð�cð ˜dó ðG˜ð G 3ð G¨4ó Gñ,8�ð 8˜cð 8¨ð 8°dô 8rS   