htmx/agents.md
2026-04-01 21:13:58 +02:00

6.6 KiB

🤖 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.