Station de recharge
Cette documentation rassemble les notes techniques du backend Django, de l’API REST, du frontend Vite et des composants embarqués de la solution.
La version publiée sur GitHub Pages est disponible à l’adresse : https://bayhes5.github.io/Station_de_recharge/
Guide
- Architecture
- Scénarios fonctionnels complets
- Principes à retenir
- Scénario 1 : réservation avec QR de réservation
- Scénario 2 : accès avec QR de réservation scanné par la borne
- Scénario 3 : accès avec bouton Téléphone et QR de session mobile
- Scénario 4 : accès avec code SMS temporaire
- Scénario 5 : accès direct avec badge RFID
- Scénario 6 : association d’un badge RFID
- Scénario 7 : mauvaise station, mauvaise borne ou mauvais emplacement
- Scénario 8 : backend indisponible et mode dégradé
- Scénario 9 : commande ESP32 et télémétrie
- Scénario 10 : interruption ou incident pendant la charge
- Scénario 11 : choix du moyen d’accès à la réservation
- Scénario 12 : session mobile avec zéro, une ou plusieurs réservations
- Scénario 13 : annulation, révocation et support
- Tableau de décision rapide
- Fonctionnalités et implantation
- Vue d’ensemble
- Modèle de données
- Authentification applicative
- Profil, export et sécurité utilisateur
- Réservation en ligne
- QR code et code SMS temporaire
- RFID
- Session mobile de borne
- Kiosque Raspberry
- Validation terminal
- ESP32 et simulation Wokwi
- Télémétrie temps réel et ingestion
- Stockage des capteurs
- Alertes
- Supervision administrateur
- Grafana
- Administration métier
- Techniciens et maintenance
- Frontend
- Docker et démarrage local
- Qualité, tests et CI
- DevSecOps
- Limites et périmètre actuel
- Synthèse opérationnelle
- Kiosque Raspberry Pi
- Contrat Raspberry Pi et ESP32
- Firmware ESP32
- Référence du MCD et du schéma PostgreSQL
- Modèle de données applicatif
- Traçabilité du cahier des charges
- Supervision technique des stations
- Flux opérationnel
- Continuité en mode dégradé
- Services Docker
- Supervision web temps réel
- Canaux de télémétrie et de commande
- Commandes utiles
- Sécurisation du broker MQTT
- Simulateur local de télémétrie
- Simulation Wokwi
- Modèles alimentés
- Cycle des alertes
- Contrôle applicatif des sessions sans télémétrie
- Accès technicien
- Grafana
- Alertes provisionnées
- Sécurité prévue
- Runbook d’exploitation locale
- Démarrage standard
- URLs utiles
- Scénario complet sans matériel
- Supervision MQTT et Grafana
- Diagnostic du bridge MQTT
- Test de commande ESP32
- Validation ACK sans matériel
- Sécurisation Mosquitto sans matériel
- Test RFID Raspberry
- Mode dégradé
- Contrôles de déploiement
- Email académique avec Mailpit
- Politique d’alertes
- Politique firmware et OTA
- SMS de production
- Tests automatisés
- Documentation
- Contrôles avant démonstration
- Installation sur serveur Debian
- Architecture cible
- Pré-requis
- Installation système
- Récupération du projet
- Génération des secrets
- Configuration minimale du fichier .env
- Configuration TLS
- Pare-feu
- Durcissement Linux
- Démarrage de la stack
- Initialisation PostgreSQL et création des tables
- Vérifications applicatives
- URLs de validation
- Mailpit et emails de test
- Configuration Raspberry et ESP32
- Test MQTT
- Sauvegardes
- Rétention télémétrie
- Anonymisation PostgreSQL
- Mise à jour applicative
- Service systemd
- Commandes de diagnostic
- Checklist avant démonstration
- Points à durcir avant exposition Internet
- Stratégie de tests
- Workflow Git et GitHub
- Principes
- Premier clone
- Récupérer les dernières modifications
- Créer une branche de travail
- Vérifier les changements
- Ajouter les fichiers au commit
- Créer le commit
- Pousser la branche
- Créer une pull request
- Surveiller les checks
- Checks attendus
- Documentation publiée
- Fusionner la pull request
- Résoudre un conflit simple
- Commandes utiles
- Règles de prudence
- Choix techniques
- Backend Django
- API REST avec Django REST Framework
- Base PostgreSQL
- TimescaleDB pour la télémétrie
- Modèle utilisateur personnalisé
- Authentification JWT
- CORS explicite
- Frontend Vite multi-pages
- PWA plutôt qu’application mobile native
- Carte de réservation
- Infrastructure station, borne et emplacement
- Allocation des emplacements par le backend
- Durées de réservation
- Modes d’accès RFID, QR code et code SMS temporaire
- Kiosque Raspberry séparé
- Continuité locale et mode dégradé
- Parcours tactile du kiosque Raspberry
- ESP32 et modèles devices
- Docker Compose
- Commandes de bootstrap
- Documentation OpenAPI
- Documentation Sphinx
- Tests pytest
- Qualité documentaire avec Ruff et Interrogate
- Dépendances verrouillées
- Pagination API
- Cache Redis ciblé
- Messagerie IoT avec Mosquitto
- Celery pour l’ingestion asynchrone
- Django Channels pour l’administration temps réel
- Grafana pour la supervision technique
- Reverse proxy Nginx
- Headers cache des assets Vite
- SBOM et analyse de vulnérabilités
- Limites assumées
- Documentation API
- Développement
- Installer les dépendances de documentation
- Construire la documentation HTML
- Lancer la stack locale
- Commandes Docker courantes
- Vérifier Nginx et la messagerie IoT
- Ce qui est automatique
- Vérifier le schéma API
- Vérifier la configuration de production
- Lancer les tests
- Automatisations DevSecOps
- Protection de la branche principale
- Publication de la documentation HTML
- Vérifier le frontend
- Contrôler les docstrings
- Référence backend
Objectifs documentaires
garder une documentation versionnée avec le code ;
justifier les choix techniques importants du projet ;
publier une documentation API interactive avec drf-spectacular ;
documenter progressivement les modules Django avec Sphinx autodoc ;
fournir des commandes simples pour régénérer la documentation.