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

4.3 KiB

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

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

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

✅ 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:

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é