Initial commit
This commit is contained in:
222
.kiro/specs/rpa-vision-v2/tasks.md
Normal file
222
.kiro/specs/rpa-vision-v2/tasks.md
Normal file
@@ -0,0 +1,222 @@
|
||||
# Plan d'Implémentation
|
||||
|
||||
- [x] 1. Configurer la structure du projet et les dépendances
|
||||
- Créer la structure de répertoires /AI/amina/geniusia2/ avec core/, gui/, data/, models/
|
||||
- Créer requirements.txt avec PyTorch, Transformers, OpenCLIP, FAISS, PyQt5, cryptography, ollama
|
||||
- Créer core/config.py avec configuration globale (modèles, seuils, performance, sécurité)
|
||||
- Initialiser les répertoires data/ pour user_profiles/, logs/, faiss_index/
|
||||
- _Exigences : 1.1, 1.2, 1.3, 1.4, 1.5, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6_
|
||||
|
||||
- [x] 2. Implémenter les modèles de données et utilitaires de base
|
||||
- [x] 2.1 Créer les dataclasses TaskProfile, Action, Detection dans core/models.py
|
||||
- Implémenter TaskProfile avec sérialisation JSON
|
||||
- Implémenter Action avec conversion dict
|
||||
- Implémenter Detection avec métadonnées modèle
|
||||
- _Exigences : 1.2, 1.4, 2.6, 4.1, 4.2, 4.3, 5.2, 6.1_
|
||||
|
||||
- [x] 2.2 Implémenter core/utils/image_utils.py pour capture d'écran et ROI
|
||||
- Écrire fonction capture_screen() pour capturer l'écran complet
|
||||
- Écrire fonction get_active_window() pour obtenir le titre de fenêtre active
|
||||
- Écrire fonction extract_roi(frame, bbox) pour extraire région d'intérêt
|
||||
- Écrire fonction draw_bbox(frame, bbox, label) pour dessiner bounding box
|
||||
- _Exigences : 1.1, 1.2, 2.1, 4.1_
|
||||
|
||||
- [x] 3. Implémenter le système de journalisation chiffrée
|
||||
- [x] 3.1 Créer core/logger.py avec chiffrement AES-256
|
||||
- Implémenter classe Logger avec initialisation de clés AES
|
||||
- Écrire méthode encrypt_entry(data) pour chiffrer les entrées
|
||||
- Écrire méthode decrypt_entry(encrypted_data) pour déchiffrer
|
||||
- Écrire méthode log_action(action_data) pour enregistrer actions
|
||||
- Écrire méthode log_correction(correction_data) pour enregistrer corrections
|
||||
- Écrire méthode log_mode_transition(task_id, from_mode, to_mode, reason)
|
||||
- Écrire méthode get_logs(task_id, start_time, end_time) pour interroger logs
|
||||
- _Exigences : 1.2, 1.3, 2.3, 2.4, 2.5, 2.6, 3.6, 4.1, 5.1, 5.2, 5.4, 6.2_
|
||||
|
||||
- [x] 4. Implémenter le gestionnaire d'embeddings avec OpenCLIP et FAISS
|
||||
- [x] 4.1 Créer core/embeddings_manager.py
|
||||
- Implémenter classe EmbeddingsManager avec chargement OpenCLIP
|
||||
- Écrire méthode load_openclip(model_path) pour charger le modèle
|
||||
- Écrire méthode load_or_create_index(index_path) pour FAISS
|
||||
- Écrire méthode encode_image(image) pour générer embeddings 512-d
|
||||
- Écrire méthode add_to_index(embedding, metadata) pour stocker
|
||||
- Écrire méthode search_similar(query_embedding, k) pour recherche similarité
|
||||
- Écrire méthode rebuild_index() pour reconstruire l'index
|
||||
- Écrire méthode get_embedding_similarity(emb1, emb2) pour similarité cosinus
|
||||
- _Exigences : 1.4, 2.6, 4.2, 4.3, 6.5_
|
||||
|
||||
- [x] 5. Implémenter les utilitaires de vision pour détection UI
|
||||
- [x] 5.1 Créer core/utils/vision_utils.py avec interfaces modèles vision
|
||||
- Implémenter classe VisionUtils avec chargement modèles (OWL-v2, DINO, YOLO)
|
||||
- Écrire méthode detect_with_owlv2(prompt, frame) pour détection OWL-v2
|
||||
- Écrire méthode detect_with_dino(prompt, frame) pour Grounding DINO
|
||||
- Écrire méthode detect_with_yolo(prompt, frame) pour YOLO-World
|
||||
- Écrire méthode select_best_detection(detections, context) pour sélection
|
||||
- Implémenter gestion d'erreurs avec fallback entre modèles
|
||||
- _Exigences : 1.1, 2.1, 4.1_
|
||||
|
||||
- [x] 6. Implémenter le gestionnaire LLM pour raisonnement visuel
|
||||
- [x] 6.1 Créer core/llm_manager.py avec interface Ollama
|
||||
- Implémenter classe LLMManager avec connexion Ollama
|
||||
- Écrire méthode reason_about_detections(detections, context, intent)
|
||||
- Écrire méthode generate_with_vision(prompt, images) pour génération multi-modale
|
||||
- Écrire méthode score_action_relevance(action, intent) pour score confiance
|
||||
- Écrire méthode parse_llm_response(response) pour parser réponses
|
||||
- Implémenter gestion d'erreurs avec fallback vision pure
|
||||
- _Exigences : 2.1, 4.6_
|
||||
|
||||
- [x] 7. Implémenter le gestionnaire d'apprentissage
|
||||
- [x] 7.1 Créer core/learning_manager.py
|
||||
- Implémenter classe LearningManager avec initialisation mode shadow
|
||||
- Écrire méthode observe(action) pour enregistrer observations en mode Shadow
|
||||
- Écrire méthode suggest_action(context) pour générer suggestions en mode Assisté
|
||||
- Écrire méthode confirm_action(feedback) pour traiter validation/correction
|
||||
- Écrire méthode calculate_confidence(vision_conf, llm_score, task_id) avec formule 0.6/0.3/0.1
|
||||
- Écrire méthode evaluate_task(task_id) pour calculer concordance
|
||||
- Écrire méthode should_transition_to_auto(task_id) pour vérifier critères (≥20 obs, ≥95% concordance)
|
||||
- Écrire méthode rollback_if_low_confidence(task_id) pour rétrograder si <90%
|
||||
- Écrire méthode get_current_intent() pour obtenir intention actuelle
|
||||
- Écrire méthode record_execution(decision) pour enregistrer exécution
|
||||
- Implémenter gestion des seuils dynamiques adaptatifs
|
||||
- _Exigences : 1.2, 1.4, 2.6, 3.1, 3.6, 4.1, 4.2, 4.4, 4.5, 4.6, 6.1, 6.4, 6.6_
|
||||
|
||||
- [x] 8. Implémenter l'orchestrateur (boucle cognitive)
|
||||
- [x] 8.1 Créer core/orchestrator.py
|
||||
- Implémenter classe Orchestrator avec initialisation composants
|
||||
- Écrire méthode run() pour boucle cognitive principale
|
||||
- Écrire méthode capture_context() pour capture écran et fenêtre
|
||||
- Écrire méthode detect_elements(frame, intent) pour détection UI
|
||||
- Écrire méthode reason_about_action(detections, context) pour décision LLM
|
||||
- Écrire méthode execute_or_suggest(decision) pour exécution selon mode
|
||||
- Écrire méthode execute_action(decision) pour exécution réelle
|
||||
- Écrire méthode learn_from_feedback(feedback) pour mise à jour apprentissage
|
||||
- Implémenter vérification liste blanche avant exécution
|
||||
- Implémenter gestion arrêt d'urgence Ctrl+Pause
|
||||
- _Exigences : 1.1, 1.2, 2.1, 2.2, 2.3, 2.4, 2.5, 3.2, 3.3, 5.3, 5.4, 6.2, 6.3_
|
||||
|
||||
- [x] 9. Implémenter les utilitaires d'entrée pour actions UI
|
||||
- [x] 9.1 Créer core/utils/input_utils.py
|
||||
- Implémenter classe InputUtils avec support AZERTY
|
||||
- Écrire méthode click(x, y) pour clic souris
|
||||
- Écrire méthode type_text(text) pour saisie texte
|
||||
- Écrire méthode scroll(direction, amount) pour défilement
|
||||
- Écrire méthode wait(duration) pour attente
|
||||
- Écrire méthode get_inverse_action(action) pour rollback
|
||||
- _Exigences : 2.3, 3.2, 5.6_
|
||||
|
||||
- [x] 10. Implémenter le moteur de rejeu d'actions
|
||||
- [x] 10.1 Créer core/replay_async.py
|
||||
- Implémenter classe ReplayEngine pour rejeu asynchrone
|
||||
- Écrire méthode replay_sequence(action_sequence) pour rejouer séquence
|
||||
- Écrire méthode rollback_last_n(n) pour annuler n dernières actions
|
||||
- Écrire méthode execute_inverse_actions(actions) pour rollback
|
||||
- Implémenter gestion d'erreurs avec notification échec rollback
|
||||
- _Exigences : 5.5, 5.6_
|
||||
|
||||
- [x] 11. Implémenter l'interface GUI minimale
|
||||
- [x] 11.1 Créer gui/minimal_gui.py avec PyQt5
|
||||
- Implémenter classe MinimalGUI héritant QMainWindow
|
||||
- Créer interface avec indicateurs de mode (👀/🤝/🤖)
|
||||
- Créer boutons Start/Stop/Pause
|
||||
- Écrire méthode update_mode_indicator(mode) pour mise à jour icône
|
||||
- Écrire méthode show_notification(message, type) pour notifications
|
||||
- Implémenter setup_shortcuts() pour raccourcis clavier
|
||||
- _Exigences : 1.5, 2.7, 3.7_
|
||||
|
||||
- [x] 11.2 Créer superposition de suggestion
|
||||
- Implémenter classe SuggestionOverlay pour affichage suggestions
|
||||
- Écrire méthode show_suggestion(decision) pour afficher avec surlignage
|
||||
- Écrire méthode wait_for_feedback() pour attendre Entrée/Échap/Alt+C
|
||||
- Implémenter surlignage visuel des éléments UI suggérés
|
||||
- _Exigences : 2.1, 2.2, 2.3, 2.4, 2.5_
|
||||
|
||||
- [x] 12. Implémenter les dialogues de correction et notifications
|
||||
- [x] 12.1 Créer gui/dialogs/correction_dialog.py
|
||||
- Implémenter classe CorrectionDialog pour corrections utilisateur
|
||||
- Créer interface permettant sélection élément correct
|
||||
- Écrire méthode get_corrected_element() pour obtenir correction
|
||||
- _Exigences : 2.5, 2.6_
|
||||
|
||||
- [x] 12.2 Implémenter système de notifications post-action
|
||||
- Créer classe PostActionNotification pour succès/échec
|
||||
- Implémenter affichage ✔️/❌ avec timeout 5 secondes
|
||||
- Écrire méthode allow_corrective_feedback() pour retour correctif
|
||||
- _Exigences : 3.4, 3.5, 3.6_
|
||||
|
||||
- [x] 12.3 Implémenter notifications de transition et alertes
|
||||
- Créer notifications pour proposition passage Autopilot
|
||||
- Créer notifications pour baisse confiance et retour Assisté
|
||||
- Créer alertes pour violations liste blanche
|
||||
- Créer alertes pour changements UI détectés
|
||||
- _Exigences : 3.1, 4.5, 5.4, 6.2, 6.3, 6.5_
|
||||
|
||||
- [x] 13. Implémenter le tableau de bord résumé
|
||||
- [x] 13.1 Créer gui/dialogs/summary_dashboard.py
|
||||
- Implémenter classe SummaryDashboard avec QTableWidget
|
||||
- Créer tableau avec colonnes : Tâche, Mode, Confiance, Observations, Concordance, Corrections, Dernière exécution
|
||||
- Écrire méthode update_metrics(task_id, metrics) pour mise à jour temps réel
|
||||
- Implémenter filtrage et recherche de tâches
|
||||
- Implémenter visualisation tendances confiance
|
||||
- Implémenter fonctionnalité export CSV/JSON
|
||||
- _Exigences : 5.7, 5.8_
|
||||
|
||||
- [x] 14. Implémenter la gestion de la liste blanche
|
||||
- [x] 14.1 Créer module de gestion liste blanche
|
||||
- Implémenter classe WhitelistManager dans core/
|
||||
- Écrire méthode is_window_allowed(window_title) pour vérification
|
||||
- Écrire méthode add_to_whitelist(window_title) avec confirmation admin
|
||||
- Écrire méthode load_whitelist() et save_whitelist() pour persistance
|
||||
- Intégrer vérification dans orchestrator avant exécution
|
||||
- _Exigences : 5.3, 5.4_
|
||||
|
||||
- [x] 15. Implémenter le système de détection de changements UI
|
||||
- [x] 15.1 Créer module de détection de dérive
|
||||
- Implémenter classe UIChangeDetector dans core/
|
||||
- Écrire méthode detect_ui_change(current_embedding, stored_embeddings) avec seuil 70%
|
||||
- Écrire méthode calculate_delta(predicted_bbox, actual_bbox) pour delta pixels
|
||||
- Écrire méthode trigger_retraining(task_id) si delta >10 pixels
|
||||
- Intégrer dans learning_manager pour surveillance continue
|
||||
- _Exigences : 4.1, 4.2, 6.5_
|
||||
|
||||
- [x] 16. Implémenter le système de métriques et surveillance
|
||||
- [x] 16.1 Créer module de métriques
|
||||
- Implémenter classe MetricsCollector dans core/
|
||||
- Écrire méthode track_latency(start_time, end_time) pour latence <400ms
|
||||
- Écrire méthode track_concordance(task_id, success) pour taux concordance
|
||||
- Écrire méthode track_correction_rate(task_id) pour taux <3%
|
||||
- Écrire méthode check_performance_thresholds() pour alertes
|
||||
- Intégrer dans orchestrator et learning_manager
|
||||
- _Exigences : Critères globaux 1, 3, 4_
|
||||
|
||||
- [x] 17. Intégrer tous les composants et créer point d'entrée
|
||||
- [x] 17.1 Créer main.py
|
||||
- Initialiser configuration depuis config.py
|
||||
- Instancier tous les gestionnaires (logger, embeddings, learning, vision, llm)
|
||||
- Instancier orchestrator avec tous les composants
|
||||
- Instancier GUI et connecter signaux/slots
|
||||
- Lancer boucle cognitive dans thread séparé
|
||||
- Lancer application PyQt5
|
||||
- _Exigences : Toutes_
|
||||
|
||||
- [x] 17.2 Implémenter gestion gracieuse d'arrêt
|
||||
- Écrire gestionnaire signal Ctrl+C pour arrêt propre
|
||||
- Sauvegarder état apprentissage avant fermeture
|
||||
- Fermer connexions (Ollama, FAISS)
|
||||
- Finaliser logs
|
||||
- _Exigences : 3.3, 5.1, 5.2_
|
||||
|
||||
- [x] 18. Créer scripts d'installation et configuration
|
||||
- [x] 18.1 Créer setup.sh pour installation
|
||||
- Script pour installer Ollama
|
||||
- Script pour télécharger modèle Qwen 2.5-VL via Ollama
|
||||
- Script pour télécharger modèles vision (OWL-v2, DINO)
|
||||
- Script pour installer dépendances Python
|
||||
- Script pour initialiser répertoires data/
|
||||
- Script pour générer clés chiffrement initiales
|
||||
- _Exigences : Toutes_
|
||||
|
||||
- [x] 18.2 Créer documentation utilisateur
|
||||
- Rédiger README.md avec instructions installation
|
||||
- Rédiger guide démarrage rapide
|
||||
- Rédiger documentation configuration liste blanche
|
||||
- Rédiger documentation raccourcis clavier
|
||||
- _Exigences : Toutes_
|
||||
Reference in New Issue
Block a user