Aller au contenu

Fonctionnement et architecture

Composants

Composant Rôle
FastAPI / Uvicorn Routes, validation et serveur web
Jinja2 / HTMX Pages et interactions de l'interface
PostgreSQL / psycopg Données persistantes et transactions
ReportLab / pypdf Génération et traitement des PDF
Docker Compose Application, base et sauvegardes
Reverse proxy HTTPS et accès public

Le tag v0.2.9 utilise Python 3.15.0 dans Docker et la CI, FastAPI 0.150.0, Jinja2 3.1.6 et PostgreSQL 18.6. Ces versions concernent l’application, pas l’outil de construction de cette documentation.

PostgreSQL est le seul moteur accepté. DATABASE_URL configure sa connexion et DATA_DIR les fichiers de données.

Séparation des comptes

L'authentification est distincte des schémas métier par compte. Le compte connecté détermine les données consultables, les fichiers photo, paramètres et calendrier. Le propriétaire peut administrer les comptes.

Cette séparation applicative n'empêche pas un administrateur PostgreSQL ou un serveur compromis d'atteindre les données. Les sauvegardes doivent être privées et externes au serveur.

Cohérence métier

Les écritures sensibles utilisent transactions et verrous. Les ventes contrôlent ensemble le stock produit et lot. Les révisions des visites et ventes empêchent l'écrasement d'un formulaire ancien. Les migrations sont versionnées et exécutées sous verrou.

Sécurité

Les mots de passe sont hachés, les jetons de session et CalDAV stockés sous forme d'empreintes. Les formulaires sont protégés par CSRF. Les connexions sont limitées en débit. HTTPS et la bonne configuration du proxy restent nécessaires.

Modules de référence

Fichier Domaine
app.py Initialisation, cheptel, extractions, produits et réglages
field_tools.py QR codes privés et prévisions météo mises en cache par rucher
workflow.py Visites regroupées, tâches et planning
production.py Récoltes, lots et recherche de traçabilité
commerce.py Ventes, stocks disponibles, caisse, dépenses et statistiques
honey_labels.py Modèles, validation et génération des étiquettes
miellerie.py Carnet de miellerie ODS/PDF
offline_sync.py, static/offline-*.js Données locales et synchronisation des opérations
database.py, schema/ Accès PostgreSQL et migrations

Pour les données métier, ne prenez pas un libellé visuel pour une règle de calcul. Le stock reste la somme des mouvements, même si sa présentation évolue.