IT-Stock/app/config.py
maxsoch a788bf4392 Résumé de stock dans les alertes + email récapitulatif planifié
L'alerte immédiate de stock bas inclut maintenant un résumé de tous les
articles actuellement sous leur seuil, pas seulement celui qui l'a
déclenchée. Ajout d'un second email, planifié via une expression cron
(RESUME_STOCK_CRON, APScheduler intégré à l'app — pas de cron système à
configurer) : stock bas en tête, puis le reste du stock groupé par
catégorie. scripts/envoyer_resume_stock.py permet de le déclencher
manuellement, ou de brancher l'envoi sur un cron système à la place.
2026-07-14 19:28:39 +02:00

38 lines
1.4 KiB
Python

"""
Configuration de l'application, lue depuis les variables d'environnement.
En local, copier .env.example vers .env et remplir les valeurs utiles ;
python-dotenv charge automatiquement ce fichier .env au démarrage, donc pas
besoin d'exporter les variables manuellement dans le shell.
"""
import os
from dotenv import load_dotenv
load_dotenv()
class Settings:
"""Regroupe tous les réglages venant de l'environnement, avec des
valeurs par défaut raisonnables pour le développement local."""
smtp_host: str | None = os.getenv("SMTP_HOST") or None
smtp_port: int = int(os.getenv("SMTP_PORT", "25"))
smtp_user: str | None = os.getenv("SMTP_USER") or None
smtp_password: str | None = os.getenv("SMTP_PASSWORD") or None
smtp_from: str = os.getenv("SMTP_FROM", "stock-it@clinique.local")
# Si aucun SMTP_HOST n'est renseigné (typiquement en dev local, sans
# accès au relais mail de la clinique), les alertes sont simplement
# affichées dans la console au lieu d'être envoyées. Voir email_alerts.py.
smtp_configured: bool = bool(smtp_host)
# Expression cron classique (minute heure jour mois jour_semaine) pour
# l'email récapitulatif périodique de l'état du stock. Par défaut :
# tous les jours à 8h. Voir app/scheduler.py.
resume_stock_cron: str = os.getenv("RESUME_STOCK_CRON", "0 8 * * *")
settings = Settings()