Files
Geniusia_v2/docs/archive/old-summaries/FIX_CALLBACKS_MANQUANTS.md
2026-03-05 00:20:25 +01:00

141 lines
4.3 KiB
Markdown

# Correction: AttributeError '_on_suggestion_created'
## Problème Identifié
L'erreur suivante se produisait au démarrage:
```
AttributeError: 'Orchestrator' object has no attribute '_on_suggestion_created'
```
## Cause Racine
Les méthodes de callback (`_on_suggestion_created`, `_on_suggestion_accepted`, `_on_suggestion_rejected`, `_on_suggestion_timeout`) étaient définies **APRÈS** le bloc `if __name__ == "__main__":` dans le fichier `orchestrator.py`.
Cela signifie qu'elles n'étaient **pas** des méthodes de la classe `Orchestrator`, mais des fonctions définies au niveau du module, en dehors de la classe.
### Structure Problématique
```python
class Orchestrator:
def __init__(self):
# Ligne 196: Tentative d'assigner self._on_suggestion_created
self.suggestion_manager.on_suggestion_created = self._on_suggestion_created
# ❌ ERREUR: _on_suggestion_created n'existe pas dans la classe
def _stay_in_shadow_mode(self):
# Dernière méthode de la classe (ligne 1571)
pass
# Ligne 1574: Fin de la classe
if __name__ == "__main__":
# Tests...
pass
# Ligne 1665+: Méthodes définies EN DEHORS de la classe ❌
def _on_suggestion_created(self, suggestion):
pass
```
## Solution Appliquée
1. **Déplacement des méthodes**: Toutes les méthodes de callback ont été déplacées **avant** le bloc `if __name__ == "__main__"`, à l'intérieur de la classe `Orchestrator`.
2. **Suppression des duplicatas**: Les méthodes dupliquées après le bloc de test ont été supprimées.
3. **Vérification**: La structure AST a été vérifiée pour confirmer que toutes les méthodes sont maintenant dans la classe.
### Structure Corrigée
```python
class Orchestrator:
def __init__(self):
# Ligne 196: Assigne correctement les callbacks
self.suggestion_manager.on_suggestion_created = self._on_suggestion_created
# ✅ OK: _on_suggestion_created existe dans la classe
def _stay_in_shadow_mode(self):
pass
# Nouvelles méthodes ajoutées ici ✅
def _capture_context_for_suggestion(self):
pass
def _on_suggestion_created(self, suggestion):
pass
def _on_suggestion_accepted(self, suggestion):
pass
def _on_suggestion_rejected(self, suggestion):
pass
def _on_suggestion_timeout(self, suggestion):
pass
# ... autres méthodes ...
# Ligne 2154: Fin de la classe
if __name__ == "__main__":
# Tests...
pass
```
## Vérification
```bash
✅ Classe Orchestrator:
Début: ligne 44
Fin: ligne 2154
Nombre total de méthodes: 47
✅ Vérification des méthodes de callback:
✓ _on_suggestion_created - PRÉSENTE
✓ _on_suggestion_accepted - PRÉSENTE
✓ _on_suggestion_rejected - PRÉSENTE
✓ _on_suggestion_timeout - PRÉSENTE
✅ Pas d'erreur de syntaxe
```
## Fichiers Modifiés
- `geniusia2/core/orchestrator.py`: Réorganisation des méthodes de classe
## Test
Pour tester la correction:
```bash
cd geniusia2
./run.sh
```
L'application devrait maintenant démarrer sans l'erreur `AttributeError`.
## Méthodes Ajoutées/Déplacées
Les méthodes suivantes ont été déplacées dans la classe Orchestrator:
1. `_capture_context_for_suggestion()` - Capture le contexte pour les suggestions
2. `_on_suggestion_created()` - Callback création de suggestion
3. `_on_suggestion_accepted()` - Callback acceptation de suggestion
4. `_on_suggestion_rejected()` - Callback rejet de suggestion
5. `_on_suggestion_timeout()` - Callback timeout de suggestion
6. `_execute_suggestion()` - Exécution d'une suggestion
7. `check_for_suggestions()` - Vérification périodique des suggestions
8. `_check_workflow_match()` - Vérification de correspondance workflow
9. `find_matching_workflows_enhanced()` - Matching amélioré avec UI Element Detection
10. `accept_current_suggestion()` - Acceptation via GUI
11. `reject_current_suggestion()` - Rejet via GUI
12. `_index_workflow_in_faiss()` - Indexation FAISS
13. `_add_positive_example_for_finetuning()` - Fine-tuning positif
14. `_add_negative_example_for_finetuning()` - Fine-tuning négatif
15. `_save_embedding_system_on_shutdown()` - Sauvegarde à l'arrêt
Total: **15 méthodes** correctement intégrées à la classe.
---
**Date**: 2025-11-21
**Statut**: ✅ Corrigé et vérifié