klydekushy commited on
Commit
59a8c9f
·
verified ·
1 Parent(s): 6a17d0d

Create notifications.py

Browse files
Files changed (1) hide show
  1. src/modules/notifications.py +73 -0
src/modules/notifications.py ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import smtplib
2
+ from email.mime.text import MIMEText
3
+ from email.mime.multipart import MIMEMultipart
4
+ from datetime import datetime, timedelta
5
+ import pandas as pd
6
+ import streamlit as st
7
+
8
+ # Configuration SMTP (A mettre dans st.secrets idéalement)
9
+ # SMTP_SERVER = "smtp.gmail.com"
10
+ # SMTP_PORT = 587
11
+ # SENDER_EMAIL = "votre_email@gmail.com"
12
+ # SENDER_PASSWORD = "votre_mot_de_passe_application"
13
+
14
+ def envoyer_email(destinataire, sujet, corps):
15
+ try:
16
+ # Récupération des secrets (si configurés)
17
+ smtp_server = st.secrets["smtp"]["server"]
18
+ smtp_port = st.secrets["smtp"]["port"]
19
+ sender_email = st.secrets["smtp"]["email"]
20
+ sender_password = st.secrets["smtp"]["password"]
21
+
22
+ msg = MIMEMultipart()
23
+ msg['From'] = sender_email
24
+ msg['To'] = destinataire
25
+ msg['Subject'] = sujet
26
+ msg.attach(MIMEText(corps, 'plain'))
27
+
28
+ server = smtplib.SMTP(smtp_server, smtp_port)
29
+ server.starttls()
30
+ server.login(sender_email, sender_password)
31
+ text = msg.as_string()
32
+ server.sendmail(sender_email, destinataire, text)
33
+ server.quit()
34
+ return True
35
+ except Exception as e:
36
+ st.error(f"Erreur d'envoi mail : {e}")
37
+ return False
38
+
39
+ def verifier_et_notifier_echeances(client, sheet_name):
40
+ st.subheader("📧 Gestion des Alertes & Notifications")
41
+
42
+ if st.button("🔄 Vérifier les échéances à venir (J+3)"):
43
+ try:
44
+ sh = client.open(sheet_name)
45
+ # On suppose que tu as une feuille 'Echeancier_Global' ou qu'on le calcule
46
+ # Pour l'exemple, on imagine qu'on scanne les prêts actifs
47
+ ws_prets = sh.worksheet("Prets_Master")
48
+ df_prets = pd.DataFrame(ws_prets.get_all_records())
49
+
50
+ # Simulation de détection (Logique à adapter selon ta structure de données exacte)
51
+ # Ici on simule une alerte pour l'exemple
52
+ alertes_envoyees = 0
53
+
54
+ # Exemple de logique : Si une date de versement est proche
55
+ today = datetime.now().date()
56
+ deadline = today + timedelta(days=3) # Alerte à 3 jours
57
+
58
+ # ... (Ici tu bouclerais sur ton tableau d'amortissement réel) ...
59
+
60
+ # Exemple d'envoi
61
+ # email_client = "client@exemple.com" # À récupérer dans df_clients via ID
62
+ # corps_message = f"Bonjour, votre échéance de prêt arrive le {deadline}."
63
+ # succes = envoyer_email(email_client, "Rappel Echéance - Vortex", corps_message)
64
+
65
+ # Si pas de config SMTP, on affiche juste à l'écran pour le moment
66
+ st.info("Simulation : 3 clients détectés avec échéance proche.")
67
+ st.write("1. Moussa Diop (15/05/2024) - 50 000 XOF")
68
+ st.write("2. Fatou Ndiaye (16/05/2024) - 25 000 XOF")
69
+
70
+ st.warning("⚠️ Pour activer l'envoi réel, configurez les secrets SMTP dans Streamlit.")
71
+
72
+ except Exception as e:
73
+ st.error(f"Erreur : {e}")