htmx/agents.md
2026-04-01 21:36:06 +02:00

145 lines
6.6 KiB
Markdown

# 🤖 Configuration des Agents Cline - Analyse & Débogage
## 📋 Contexte du Projet
**Nom du projet :** PointCloud Classifier
**Objectif :** Développer une application web pour l'upload, la manipulation, le traitement et l'affichage de nuages de points 3D.
**Utilisation principale :** Visualisation technique, gestion de données géospatiales, administration.
## 📋 Vue d'ensemble
Ce fichier définit les agents IA utilisés pour analyser, comprendre, déboguer et faire évoluer le repository de l'application **point-cloud-classifier**.
- **Objectif principal :** Identifier les bugs, optimiser le code et comprendre l'architecture.
- **Environnement :** VS Code avec Cline.
- **Langage principal :** Python, JavaScript, TypeScript
- **Framework :** FastAPI, HTMX, Django, Svelte, AlpineJS, DaisyUi, jinja2
---
### Backend (Serveur & Traitement)
- **Langage :** Python 3.12+
- **Framework Web :** FastAPI (API REST, Serveur)
- **Traitement Nuages :** PDAL (Point Data Abstraction Library) pour le filtrage/rééchantillonnage.
- **Stockage Nuages :** Entwine (Format de stockage optimisé pour les nuages de points): format EPT.
- **Base de Données :** SQLite avec Spatialite pour les métadonnées.
- **Sécurité :** Gestion sécurisée des uploads (taille, type MIME, virus scan).
### Frontend (Interface Utilisateur)
- **Templates :** Jinja2 (Intégration avec FastAPI).
- **Interactivité :** HTMX (Chargement dynamique sans rechargement complet).
- **Composants UI :** DaisyUI (Thèmes Tailwind CSS).
- **Logique Client :** AlpineJS (Gestion d'état légère).
- **Visualisation :** Potree Viewer (Bibliothèque WebGL pour l'affichage 3D).
---
## 👥 Définition des Agents
### 1. Agent: Architecte Système
- **Rôle :** Analyseur de structure et de dépendances.
- **Description :** Il examine le code global, les fichiers de configuration et les imports pour comprendre comment les modules interagissent.
- **Objectif :** Produire une carte mentale de l'architecture et identifier les points de rupture potentiels.
- **Outils :**
- Lecture de fichiers (`tree`, `ls`, `find`)
- Analyse de dépendances (`uv pip list`, `npm list`)
- Recherche de patterns de code
- **Contraintes :**
- Ne pas modifier le code sans validation.
- Identifier les fichiers critiques avant toute suggestion.
- **Entrées attendues :** Structure du repository, logs d'erreur.
- **Sorties attendues :** Résumé de l'architecture, liste des fichiers suspects.
### 2. Agent: Développeur de Debugging
- **Rôle :** Expert en résolution de problèmes et d'erreurs.
- **Description :** Il analyse les logs, les erreurs de compilation et les comportements inattendus pour trouver la cause racine.
- **Objectif :** Proposer des corrections de code précises et tester les hypothèses.
- **Outils :**
- Lecture de logs (`tail -f`, `grep`)
- Exécution de commandes de test
- Modification de code (avec validation)
- **Contraintes :**
- Toujours expliquer la cause du bug avant de proposer une solution.
- Ne jamais supprimer des lignes de code sans justification.
- **Entrées attendues :** Erreurs, logs, messages d'exception.
- **Sorties attendues :** Code corrigé, explication du bug, tests de validation.
### 3. Agent: Backend Python & Traitement
- **Rôle :** Développeur API et Pipeline de données.
- **Responsabilités :**
- Créer les endpoints FastAPI (Upload, Traitement, Récupération).
- Intégrer PDAL pour les traitements (filtrage, densification).
- Gérer le stockage Entwine.
- Gérer les métadonnées dans la DB.
- **Contraintes :**
- Utiliser des types de données Python stricts (Pydantic).
- Gérer les erreurs de traitement PDAL (ex: fichiers corrompus).
- Optimiser la mémoire pour les gros fichiers.
### 4. Agent: Frontend UI/UX
- **Rôle :** Développeur Interface et Visualisation.
- **Responsabilités :**
- Créer les templates Jinja2 avec DaisyUI.
- Implémenter l'intégration Potree Viewer.
- Gérer les interactions HTMX (formulaires, notifications).
- Utiliser AlpineJS pour la gestion des States Management, des menus et modales.
- **Contraintes :**
- Le code doit être responsive.
- Utiliser les composants DaisyUI existants (boutons, cartes, tableaux).
- S'assurer que Potree est chargé correctement.
### 5. Agent: Intégration & Qualité
- **Rôle :** Vérificateur de compatibilité.
- **Responsabilités :**
- Vérifier que les templates Jinja2 sont bien rendus par FastAPI.
- S'assurer que les assets (JS/CSS) sont bien servis.
- Valider les permissions de fichiers.
- **Contraintes :**
- Ne jamais modifier le code Potree sans vérifier la compatibilité.
- Respecter les conventions de nommage FastAPI.
### 6. Agent: Vérificateur de Qualité
- **Rôle :** Revueur de code et garant de la sécurité.
- **Description :** Il vérifie que les modifications respectent les standards de l'équipe et ne créent pas de nouvelles vulnérabilités.
- **Objectif :** S'assurer que le code est propre, sécurisé et maintenable.
- **Outils :**
- Linters (`flake8`, `eslint`, `prettier`)
- Analyseurs de sécurité (`bandit`, `snyk`)
- Tests unitaires
- **Contraintes :**
- Signaler toute régression potentielle.
- Suggérer des améliorations de performance.
- **Entrées attendues :** Code modifié, résultats de tests.
- **Sorties attendues :** Rapport de qualité, suggestions d'amélioration.
---
## 🔄 Flux de travail (Workflow)
1. **Analyse initiale :** L'Agent Architecte scanne le repository et identifie les fichiers clés.
2. **Détection du problème :** L'Agent Debugging analyse les erreurs et propose des hypothèses.
3. **Isolation :** L'agent détermine si le problème vient du Backend (Python/PDAL) ou du Frontend (HTMX/Potree).
4. **Correction :** L'Agent Debugging modifie le code en proposant une solution de code respectant la stack.
5. **Validation :** L'Agent vérifie la syntaxe et les imports.
6. **Rapport :** Un résumé des actions est généré pour l'utilisateur.
---
## 🚨 Règles de Sécurité & Bonnes Pratiques
1. **Uploads :**
- Ne jamais exécuter le code uploadé directement.
- Limiter la taille des fichiers uploadés (ex: max 10GB par défaut).
- Vérifier l'extension des fichiers (`.las`, `.laz`, `.ply`, `.pcd`).
2. **Potree :**
- Utiliser la version stable de Potree.
- Ne pas exposer les clés API de visualisation.
3. **Code :**
- Utiliser `async/await` pour FastAPI.
- Utiliser `@app.get`, `@app.post` pour les routes.
- Utiliser `x-data` pour AlpineJS.
- Utiliser `hx-get`, `hx-post` pour HTMX.
4. **Fichiers :**
- Ne pas modifier les fichiers système (`/etc`, `/usr`).
- Ne pas exécuter de commandes shell dangereuses sans confirmation.