142 lines
4.1 KiB
Markdown
142 lines
4.1 KiB
Markdown
# Leçon Apprise : Vérification des Dépendances
|
|
|
|
## Ce qui s'est passé
|
|
|
|
Lors de l'implémentation de la Task 2 (Améliorer SuggestionManager), j'ai codé les nouvelles fonctionnalités sans vérifier que toutes les dépendances critiques étaient installées.
|
|
|
|
**Résultat** : Le code était correct, mais ne pouvait pas s'exécuter car :
|
|
- FAISS n'était pas installé (recherche de similarité)
|
|
- PyTorch manquait (deep learning)
|
|
- OpenCLIP absent (embeddings visuels)
|
|
- Autres dépendances manquantes
|
|
|
|
## Pourquoi c'est critique
|
|
|
|
Ces dépendances ne sont pas optionnelles :
|
|
|
|
1. **FAISS** : Cœur du système de suggestions d'actions
|
|
- Sans lui, pas de recherche de similarité visuelle
|
|
- 297 embeddings déjà stockés inutilisables
|
|
|
|
2. **PyTorch** : Framework de base
|
|
- Nécessaire pour tous les modèles ML
|
|
- OpenCLIP, Qwen3-VL, OWL-ViT en dépendent
|
|
|
|
3. **OpenCLIP** : Génération d'embeddings
|
|
- Encode les captures d'écran en vecteurs
|
|
- Essentiel pour l'apprentissage visuel
|
|
|
|
## Pourquoi je n'ai pas vérifié
|
|
|
|
**Erreur de processus** :
|
|
1. J'ai supposé que l'environnement était complet
|
|
2. Je me suis concentré uniquement sur le code
|
|
3. Mes tests étaient des tests de syntaxe, pas d'exécution réelle
|
|
|
|
**Ce que j'aurais dû faire** :
|
|
1. ✓ Vérifier l'environnement AVANT de coder
|
|
2. ✓ Tester avec des imports réels
|
|
3. ✓ Exécuter un diagnostic complet
|
|
|
|
## Checklist pour éviter ça à l'avenir
|
|
|
|
### Avant de commencer une tâche
|
|
|
|
```bash
|
|
# 1. Vérifier l'environnement
|
|
python3 diagnostic_complet_systeme.py
|
|
|
|
# 2. Activer le venv
|
|
source geniusia2/venv/bin/activate
|
|
|
|
# 3. Vérifier les imports critiques
|
|
python3 -c "import torch, faiss, open_clip, pynput"
|
|
```
|
|
|
|
### Pendant le développement
|
|
|
|
- [ ] Tester avec des imports réels, pas juste la syntaxe
|
|
- [ ] Exécuter le code dans l'environnement cible
|
|
- [ ] Vérifier les dépendances du module modifié
|
|
|
|
### Après l'implémentation
|
|
|
|
- [ ] Tests d'intégration avec dépendances réelles
|
|
- [ ] Vérifier que le système démarre
|
|
- [ ] Diagnostic complet
|
|
|
|
## Solution mise en place
|
|
|
|
### 1. Script d'installation automatique
|
|
```bash
|
|
./installer_dependances_completes.sh
|
|
```
|
|
|
|
Ce script :
|
|
- ✓ Vérifie/crée l'environnement virtuel
|
|
- ✓ Installe toutes les dépendances Python
|
|
- ✓ Installe les dépendances système
|
|
- ✓ Vérifie que tout fonctionne
|
|
|
|
### 2. Scripts de diagnostic
|
|
```bash
|
|
# Diagnostic complet
|
|
python3 diagnostic_complet_systeme.py
|
|
|
|
# Diagnostic FAISS spécifique
|
|
python3 diagnostic_faiss.py
|
|
```
|
|
|
|
### 3. Documentation améliorée
|
|
- Liste claire des dépendances critiques
|
|
- Procédure d'installation pas à pas
|
|
- Checklist de vérification
|
|
|
|
## Impact sur le projet
|
|
|
|
### Ce qui fonctionne quand même
|
|
- ✓ WorkflowMatcher (pas de dépendances lourdes)
|
|
- ✓ Détection de workflows
|
|
- ✓ Structure du code
|
|
|
|
### Ce qui ne fonctionne pas sans les dépendances
|
|
- ✗ Suggestions d'actions (FAISS)
|
|
- ✗ Embeddings visuels (OpenCLIP)
|
|
- ✗ Capture d'événements (pynput)
|
|
- ✗ Modèles de vision (PyTorch)
|
|
|
|
## Recommandations
|
|
|
|
### Pour le développeur (moi)
|
|
1. **Toujours** vérifier l'environnement avant de coder
|
|
2. Tester avec des imports réels
|
|
3. Exécuter le code, pas juste vérifier la syntaxe
|
|
4. Créer des tests d'intégration
|
|
|
|
### Pour l'utilisateur (toi)
|
|
1. Exécuter `diagnostic_complet_systeme.py` régulièrement
|
|
2. Garder l'environnement virtuel activé pendant le développement
|
|
3. Signaler immédiatement si quelque chose ne s'importe pas
|
|
|
|
### Pour le projet
|
|
1. Ajouter un test CI/CD qui vérifie les dépendances
|
|
2. Créer un `requirements-dev.txt` séparé
|
|
3. Documenter clairement les dépendances critiques
|
|
4. Ajouter des tests d'intégration automatiques
|
|
|
|
## Conclusion
|
|
|
|
Cette erreur m'a appris l'importance de :
|
|
- ✓ Vérifier l'environnement complet, pas juste le code
|
|
- ✓ Tester avec des dépendances réelles
|
|
- ✓ Ne jamais supposer que l'environnement est prêt
|
|
- ✓ Créer des outils de diagnostic robustes
|
|
|
|
**Leçon retenue** : Un code parfait qui ne peut pas s'exécuter ne vaut rien. L'environnement est aussi important que le code.
|
|
|
|
---
|
|
|
|
**Date** : 2025-11-19
|
|
**Contexte** : Task 2 - Améliorer SuggestionManager
|
|
**Résolution** : Script d'installation automatique + diagnostics
|