# Methode de re-developpement / re-deploiement (V2) ## 1) Pre-requis - Python 3.10+ (ou version a valider), paho-mqtt, psutil, optionnel pynvml. - Repo structuree : `src/`, `configs/`, `docs/`, `scripts/`, `tests/`. - Conventions : configuration centralisee (env/yaml), logs JSON, topics versionnes. ## 2) Liste des informations que l’utilisateur doit completer Section : A completer par l’utilisateur - OS cibles : [ ] - Broker MQTT (host:port) : [ ] - Auth/TLS (user/pass, CA, client cert) : [ ] - Client_id et keepalive : [ ] - Prefix topics (ex: pilot/v2) : [ ] - Liste commandes a supporter : [ ] - Politique de securite (allowlist, validation, ACL broker) : [ ] - Packaging desire (exe Windows, systemd Linux, docker) : [ ] - Integration Home Assistant autodiscovery : [oui/non] + details : [ ] - Availability / birth / will : [ ] - Frequence telemetrie (par capteur) : [ ] - Metriques a exposer (CPU, RAM, GPU, IP, batterie, etc.) : [ ] - Politique de logs (format, rotation) : [ ] ## 3) Plan iteratif (prompts) Prompt 1 : "Genere l’architecture cible + conventions. Cree `docs/architecture.md` et `docs/topics.md`. Liste modules, flux, schemas de payload, et conventions de config." - Fichiers : `docs/architecture.md`, `docs/topics.md` - Checklist : schema topics, flux MQTT, decisions securite - Sortie attendue : docs completes Prompt 2 : "Implemente le noyau MQTT + config + logs. Cree `src/app.py`, `src/config.py`, `src/logging.py`. Ajoute `configs/example.env`." - Fichiers : `src/app.py`, `src/config.py`, `src/logging.py`, `configs/example.env` - Checklist : connexion MQTT, LWT, logs JSON, chargement config - Sortie attendue : demarrage local + doc config Prompt 3 : "Implemente le moteur de commandes avec allowlist. Cree `src/commands/` et `docs/commands.md`." - Fichiers : `src/commands/__init__.py`, `src/commands/linux.py`, `docs/commands.md` - Checklist : validation payload, allowlist, dry-run option - Sortie attendue : commandes securisees + doc Prompt 4 : "Ajoute availability/LWT + heartbeat + etats. Etends `src/app.py` et `docs/topics.md`." - Fichiers : `src/app.py`, `docs/topics.md` - Checklist : LWT, availability topic, cadence heartbeat - Sortie attendue : etats en retained Prompt 5 : "Ajoute autodiscovery Home Assistant (si demande). Cree `src/hass.py` et `docs/hass.md`." - Fichiers : `src/hass.py`, `docs/hass.md` - Checklist : discovery payloads, device_info, tests de base - Sortie attendue : entites visibles dans HA Prompt 6 : "Packaging Windows (service/tache). Cree `docs/deploy_windows.md` et scripts." - Fichiers : `docs/deploy_windows.md`, `scripts/install_windows.ps1` - Checklist : lancement automatique, permissions, rollback - Sortie attendue : procedure Windows claire Prompt 7 : "Packaging Linux (systemd). Cree `docs/deploy_linux.md`, `scripts/install_linux.sh`, `packaging/mqtt_pilot.service`." - Fichiers : `docs/deploy_linux.md`, `scripts/install_linux.sh`, `packaging/mqtt_pilot.service` - Checklist : user/service, restart policy, logs journald - Sortie attendue : service systemd fonctionnel Prompt 8 : "Tests + harness MQTT + doc + exemples. Cree `tests/`, `scripts/mqtt_harness.py`, `docs/examples.md`." - Fichiers : `tests/test_topics.py`, `scripts/mqtt_harness.py`, `docs/examples.md` - Checklist : tests unitaires, exemples payload, validation topics - Sortie attendue : test suite + exemples ## 4) Procedure de re-deploiement - Strategie : nouveau dossier (V2) + migration progressive. - Migration config : convertir valeurs hardcodees vers env/yaml. - Compatibilite topics : versionner `pilot/v2` et garder mapping legacy. - Rollback : conserver ancien service et bascule via systemd.