Files
pilot/analyse.md
Gilles Soulier c5381b7112 Pilot v2: Core implementation + battery telemetry
Major updates:
- Complete Rust rewrite (pilot-v2/) with working MQTT client
- Fixed MQTT event loop deadlock (background task pattern)
- Battery telemetry for Linux (auto-detected via /sys/class/power_supply)
- Home Assistant auto-discovery for all sensors and switches
- Comprehensive documentation (AVANCEMENT.md, CLAUDE.md, roadmap)
- Docker test environment with Mosquitto broker
- Helper scripts for development and testing

Features working:
 MQTT connectivity with LWT
 YAML configuration with validation
 Telemetry: CPU, memory, IP, battery (Linux)
 Commands: shutdown, reboot, sleep, screen (dry-run tested)
 HA discovery and integration
 Allowlist and cooldown protection

Ready for testing on real hardware.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-30 06:23:00 +01:00

172 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PROMPT CODEX — Redev V2 : Agent MQTT de pilotage PC + Analyse V1
## 0) Rôle et objectif
Tu es **Codex**, expert senior **Python / Windows+Linux / MQTT / packaging / sécurité**.
Tu dois **analyser un projet existant** (application de pilotage dun ordinateur via messages MQTT), en comprendre larchitecture et produire une **documentation détat des lieux**.
Ensuite, tu dois préparer une **méthode de re-développement / re-déploiement** sous forme de **consignes de prompts** (itératives), afin que lutilisateur puisse compléter les besoins supplémentaires avant de lancer limplémentation.
Contraintes :
- Ne modifie rien tant que lanalyse nest pas terminée.
- Sois factuel : si une info nest pas trouvée dans le projet, indique “Non trouvé”.
- Structure claire, utilisable comme base de refonte.
Livrables attendus :
1) `analyse_version_1.md` (créé à la racine du repo)
2) `prompt_method_redev.md` (créé à la racine du repo)
---
## 1) Étape A — Scan & compréhension du projet
### 1.1 Cartographie
- Liste larborescence (équivalent `tree -a -I "node_modules|.git|__pycache__|dist|build"`).
- Identifie :
- langage(s), frameworks, dépendances
- points dentrée (main, service, CLI, daemon)
- modules clés (mqtt, commandes système, sécurité, config, logs, UI éventuelle)
### 1.2 Exécution et cycle de vie
Déduis et documente :
- comment lapp se lance (commande, service systemd, tâche planifiée Windows, docker ?)
- comment elle sarrête proprement
- gestion de létat (retained, availability, LWT, reconnexion, QoS)
- compatibilité OS (Windows/Linux), permissions nécessaires
### 1.3 MQTT : topics & payloads
Reconstitue précisément (si présent) :
- broker, auth (user/pass, TLS), client_id
- topics (commandes / état / availability / logs / télémétrie)
- structure des messages (JSON ? champs, valeurs possibles)
- mapping “topic → action exécutée”
- sécurité : validation dinput, allowlist, anti-injection
### 1.4 Configuration
- Où sont les configs ? (`.env`, yaml, json, ini, registry, args CLI)
- paramètres supportés, valeurs par défaut, variables denvironnement
- secrets : comment sont-ils stockés ?
### 1.5 Dépendances & packaging
- `requirements.txt`, `pyproject.toml`, `package.json`, etc.
- version Python/Node/Go
- build : exe (pyinstaller), wheel, docker image, service
- fichiers docs existants (README, CHANGELOG, etc.)
### 1.6 Journalisation & observabilité
- logs (format, rotation)
- niveaux de logs
- métriques éventuelles
- gestion erreurs / retries / backoff
---
## 2) Étape B — Générer `analyse_version_1.md`
Crée un fichier `analyse_version_1.md` structuré comme suit (remplis avec ce que tu trouves) :
## 2.1 Résumé exécutif
- Objectif de lapp
- OS supportés
- Dépendances majeures
- Mode dexécution (service/cli/etc.)
## 2.2 Architecture
- Diagramme textuel (ASCII) des composants
- Points dentrée, modules, flux de données
## 2.3 MQTT
### 2.3.1 Connexion
- Broker, auth, TLS, client_id, keepalive, LWT
### 2.3.2 Topics
- Tableau : Topic | Direction (in/out) | QoS | Retain | Payload | Action/usage
### 2.3.3 Commandes supportées
- Liste exhaustive + exemples de payloads si trouvés
## 2.4 Commandes système exécutées
- actions (shutdown/reboot/sleep/commands) + méthode utilisée
- risques sécurité + mitigations actuelles
## 2.5 Configuration
- sources (env/files/args)
- paramètres et defaults (tableau)
## 2.6 Stockage / état
- fichiers, DB, mémoire, cache
- persistence (oui/non)
## 2.7 Déploiement actuel
- comment installer
- comment lancer
- comment update
- comment rollback
## 2.8 Points faibles / dettes techniques
- liste priorisée (P0/P1/P2)
- éléments manquants / non trouvés
## 2.9 Suggestions de refonte (sans coder)
- “quick wins”
- architecture cible probable (optionnelle)
- axes sécurité
---
## 3) Étape C — Générer `prompt_method_redev.md` (méthode de redev)
Crée un fichier `prompt_method_redev.md` qui explique **comment on va re-développer** en itérations, sous forme de “prompts à donner à Codex”, avec checkpoints.
Format attendu :
# Méthode de re-développement / re-déploiement (V2)
## 1) Pré-requis
- outils, versions, conventions repo, structure attendue
## 2) Liste des informations que lutilisateur doit compléter
Crée une section “À compléter par lutilisateur” avec des champs vides, par exemple :
- OS cibles : [ ]
- Broker MQTT : [ ]
- Auth/TLS : [ ]
- Liste commandes à supporter : [ ]
- Politique de sécurité (allowlist, signature, ACL broker) : [ ]
- Packaging désiré (exe windows, systemd linux, docker) : [ ]
- Intégration Home Assistant autodiscovery : [oui/non] + détails : [ ]
- Availability / birth / will : [ ]
- Fréquence télémétrie : [ ]
- etc.
## 3) Plan itératif (prompts)
Donne une séquence de prompts “copier-coller” :
- Prompt 1 : “Génère larchitecture cible + conventions”
- Prompt 2 : “Implémente le noyau MQTT + config + logs”
- Prompt 3 : “Implémente le moteur de commandes avec allowlist”
- Prompt 4 : “Ajoute availability/LWT + heartbeat”
- Prompt 5 : “Ajoute autodiscovery Home Assistant (si demandé)”
- Prompt 6 : “Packaging Windows (service/tâche)”
- Prompt 7 : “Packaging Linux (systemd)”
- Prompt 8 : “Tests + harness MQTT + doc + exemples”
Chaque prompt doit :
- préciser les fichiers à créer/modifier
- imposer une checklist de validation (tests, lint, doc)
- définir une sortie attendue (ex: `docs/deploy_windows.md`, `docker-compose.yml`, etc.)
## 4) Procédure de re-déploiement
- stratégie : in-place vs nouveau dossier
- migration config
- compatibilité topics (versioning)
- rollback
---
## 4) Règles de sortie
- Crée uniquement les 2 fichiers demandés.
- Si tu dois exécuter des commandes pour comprendre (ex: grep), fais-le localement dans ton environnement.
- Termine en affichant :
- un résumé de 10 lignes
- le chemin des fichiers créés
- 5 questions “À compléter par lutilisateur” (copiées depuis la section correspondante)
---
## 5) Action immédiate
Commence maintenant lanalyse du projet présent dans le dossier courant.