5.8 KiB
5.8 KiB
ETM Bot — Documentation complète du code
Contexte
Tu vas documenter le bot Telegram Python ETM-Schurig de façon complète. Cette documentation sera stockée dans Git et le Wiki Git (Gitea).
Avant de commencer, lire tout le code :
find . -name "*.py" | sort
find . -name "*.md" | sort
cat requirements.txt
cat .env.example # ou .env si disponible
Ce que tu dois produire
1. README.md (racine du projet)
# ETM Bot — Bot Terrain Telegram
## Vue d'ensemble
[Description en 3-4 phrases : ce que fait le bot, pour qui, pourquoi]
## Architecture
[Schéma ASCII du projet — dossiers et fichiers clés avec leur rôle en une ligne]
## Prérequis
[Python version, dépendances système, services externes requis]
## Installation
[Étapes pas à pas — clone, pip install, .env, lancement]
## Configuration (.env)
[Tableau de toutes les variables avec description et exemple]
## Déploiement
[Systemd service, nginx si applicable]
## Utilisation
[Les 5 actions du bot avec exemple de conversation]
2. ARCHITECTURE.md
Document technique expliquant la structure globale :
- Schéma du flux de données — de la réception d'un message Telegram jusqu'à la notification finale, en passant par WebDAV Nextcloud
- Diagramme des états ConversationHandler — tous les états et transitions
- Interactions entre modules — qui appelle qui
- Schéma base de données SQLite — toutes les tables, colonnes, relations
- Structure ChromaDB — collections, métadonnées, format des documents indexés
Format : texte + diagrammes ASCII ou Mermaid si possible.
3. Documentation par module (un fichier par dossier)
docs/handlers.md
Pour chaque handler (fin_chantier.py, sav.py, materiel.py,
maintenance.py, faq.py, menu.py, edit_handler.py) :
- Rôle : ce que fait ce handler en une phrase
- États gérés : quels états ConversationHandler il couvre
- Fonctions : signature + description + paramètres + retour
- Exemple de conversation : ce que voit l'utilisateur étape par étape
- Dépendances : quels services il appelle
docs/services.md
Pour chaque service (nextcloud.py, faq_service.py,
chantier_selector.py, notifications.py) :
- Rôle du service
- Classe principale : attributs, méthodes publiques
- Chaque méthode : signature, description, paramètres, retour, erreurs possibles
- Exemple d'utilisation
docs/database.md
- Schéma complet de toutes les tables SQLite
- Rôle de chaque table et de chaque colonne
- Requêtes types utilisées dans le code
- Politique de rétention des données
docs/faq_rag.md
Document dédié au système FAQ/RAG :
- Comment fonctionne ChromaDB dans ce projet
- Format des documents indexés (SAV résolus vs documentation)
- Pipeline d'indexation : de
/resolu→ ChromaDB - Pipeline de recherche : de
/faq question→ réponse - Intégration Ollama : modèle utilisé, prompt système, fallback
- Comment ajouter des documents (notices constructeurs)
- Comment vider / réindexer la base
docs/deployment.md
- Prérequis VM (RAM, disque, OS)
- Installation complète pas à pas
- Configuration systemd avec explications de chaque directive
- Configuration nginx si applicable
- Variables d'environnement — toutes décrites
- Logs — où les trouver, comment les lire
- Mise à jour — procédure pour déployer une nouvelle version
- Backup — quoi sauvegarder (ChromaDB, SQLite, .env)
4. docs/guide_patrick.md — Guide administrateur
Pour Patrick uniquement — les commandes de gestion :
## Commandes bot disponibles pour Patrick
### /resolu — Clôturer un SAV
/resolu #2026-047 cause | solution | durée
### /faq — Tester la base de connaissances
/faq Fronius erreur 567
### Comment ajouter une notice constructeur à la FAQ
[Procédure pas à pas]
### Comment voir les tickets SAV ouverts
[Commande ou requête SQLite]
### Comment sauvegarder la base FAQ
[Commande backup ChromaDB]
5. CHANGELOG.md
Historique des versions avec les fonctionnalités implémentées :
## [1.0.0] — 2026-03-25
### Ajouté
- Menu 3 boutons : Fin de Chantier / SAV / Matériel Manquant
- Upload photos Nextcloud
- Notifications groupes Telegram
...
## [1.1.0] — date
### Ajouté
- Dropdown chantiers depuis Nextcloud
- Gestion albums multi-photos
- Bouton FAQ
- Commande /resolu + indexation ChromaDB
...
Règles de rédaction
- Langue : français pour tout (commentaires, docs, descriptions)
- Ton : technique mais accessible — un développeur junior doit comprendre
- Code : inclure des exemples concrets tirés du vrai code, pas inventés
- Diagrammes : préférer ASCII ou Mermaid (compatible Git Wiki)
- Exhaustivité : documenter TOUTES les fonctions publiques, même les simples utilitaires
- Exemples : chaque fonctionnalité doit avoir un exemple de conversation ou d'appel concret
Format de sortie attendu
Créer les fichiers directement dans le projet :
README.md ← remplacer ou créer
ARCHITECTURE.md ← nouveau
CHANGELOG.md ← nouveau
docs/
├── handlers.md
├── services.md
├── database.md
├── faq_rag.md
├── deployment.md
└── guide_patrick.md
Ordre de travail
- Lire tout le code source en premier
- Écrire README.md — vue d'ensemble
- Écrire ARCHITECTURE.md — flux et schémas
- Écrire docs/handlers.md — tous les handlers
- Écrire docs/services.md — tous les services
- Écrire docs/database.md — SQLite + ChromaDB
- Écrire docs/faq_rag.md — système FAQ détaillé
- Écrire docs/deployment.md — déploiement VM
- Écrire docs/guide_patrick.md — guide admin
- Écrire CHANGELOG.md — historique versions