Files
rpa_vision_v3/.kiro/specs/faiss-rebuild-propre/tasks.md
Dom a7de6a488b feat: replay E2E fonctionnel — 25/25 actions, 0 retries, SomEngine via serveur
Validé sur PC Windows (DESKTOP-58D5CAC, 2560x1600) :
- 8 clics résolus visuellement (1 anchor_template, 1 som_text_match, 6 som_vlm)
- Score moyen 0.75, temps moyen 1.6s
- Texte tapé correctement (bonjour, test word, date, email)
- 0 retries, 2 actions non vérifiées (OK)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 14:04:41 +02:00

7.5 KiB

Implementation Plan: FAISS Rebuild Propre

Auteur : Dom, Alice Kiro - 22 décembre 2025

Overview

Implémentation du système FAISS Rebuild Propre pour éliminer la pollution d'index et maintenir la cohérence des prototypes d'apprentissage. L'approche est "clear + reindex complet" depuis une source canonique.

Tasks

  • 1. Améliorer FAISSManager.clear() pour reset complet de l'état IVF

    • Modifier core/embedding/faiss_manager.py
    • Ajouter reset de training_vectors.clear()
    • Définir is_trained selon le type d'index (Flat=True, IVF=False)
    • Reset next_id à 0
    • Requirements: 1.2, 1.3, 1.4, 1.5
    • FAIT: Méthode clear() améliorée avec reset complet IVF training state
  • * 1.1 Écrire test property pour clear() reset complet

    • Property 1: Clear Operation Completeness
    • Validates: Requirements 1.2, 1.3, 1.4, 1.5
  • 2. Implémenter FAISSManager.reindex() pour reconstruction propre

    • 2.1 Créer méthode reindex(items, force_train_ivf=True)

      • Appeler self.clear() au début
      • Itérer sur items et appeler add_embedding() pour chaque vecteur valide
      • Compter les items traités
      • Requirements: 2.1, 2.2, 2.4, 2.5
      • FAIT: Méthode reindex() implémentée avec clear + add_embedding
    • 2.2 Ajouter force training IVF pour petits volumes

      • Vérifier si index_type == "IVF" et force_train_ivf == True
      • Appeler _train_ivf_index() si not is_trained et training_vectors non vide
      • Requirements: 2.3
      • FAIT: Force training IVF implémenté
    • 2.3 Retourner le nombre d'items indexés

      • Return count à la fin de la méthode
      • Requirements: 2.4
      • FAIT: Retour du count d'items indexés
  • * 2.4 Écrire tests property pour reindex()

    • Property 3: Reindex Consistency
    • Property 4: Invalid Vector Handling
    • Property 5: IVF Training Consistency
    • Validates: Requirements 2.1, 2.2, 2.3, 2.4, 2.5
  • 3. Implémenter extraction de vecteurs multi-version dans WorkflowPipeline

    • 3.1 Créer méthode _extract_node_vector(node)
      • Vérifier template.embedding_prototype (liste)
      • Fallback vers embedding.vector_id (fichier)
      • Fallback vers screen_template.embedding_prototype_path (legacy)
      • Retourner None si aucun vecteur trouvé
      • Gérer exceptions avec try/catch
      • Requirements: 3.1, 3.2, 3.3, 3.4, 3.5
      • FAIT: Méthode _extract_node_vector() avec support multi-version
  • * 3.2 Écrire tests property pour extraction multi-version

    • Property 6: Vector Extraction Multi-Format
    • Property 7: Vector Extraction Graceful Failure
    • Validates: Requirements 3.1, 3.2, 3.3, 3.4, 3.5
  • 4. Refactoriser WorkflowPipeline._index_workflow_embeddings()

    • 4.1 Construire liste canonique d'items

      • Itérer sur workflow.nodes
      • Appeler _extract_node_vector() pour chaque node
      • Construire tuple (node_id, vector, metadata) avec workflow_id et node_id
      • Requirements: 4.1, 4.2
      • FAIT: Construction liste canonique avec métadonnées enrichies
    • 4.2 Appeler reindex() avec force_train_ivf=True

      • n = self.faiss_manager.reindex(items, force_train_ivf=True)
      • Logger le nombre d'items indexés avec workflow_id
      • Requirements: 4.3, 4.4
      • FAIT: Appel reindex() avec force training IVF
    • 4.3 Gérer cas où aucun vecteur valide trouvé

      • Vérifier si items est vide
      • Logger warning approprié
      • Requirements: 4.5
      • FAIT: Gestion gracieuse des cas sans vecteurs
  • * 4.4 Écrire tests property pour indexation workflow

    • Property 8: Workflow Indexing Completeness
    • Property 9: IVF Training Force in Pipeline
    • Validates: Requirements 4.1, 4.2, 4.3
  • 5. Checkpoint - Valider fonctionnalités de base

    • Exécuter tous les tests unitaires et property
    • Vérifier que clear() et reindex() fonctionnent correctement
    • Valider extraction multi-version
    • Demander feedback utilisateur si questions
  • 6. Implémenter logique de déclenchement de rebuild

    • 6.1 Ajouter trigger après validation de prototype

      • Dans le code de validation post-conditions
      • Appeler trigger_faiss_rebuild() si post_conditions_ok and prototype_updated
      • Requirements: 5.1
    • 6.2 Ajouter trigger en fin de session batch

      • Dans end_learning_session()
      • Appeler trigger_faiss_rebuild()
      • Requirements: 5.2
    • 6.3 Implémenter protection contre triggers excessifs

      • Ajouter flag _rebuild_pending pour éviter rebuilds multiples
      • Ne pas trigger sur chaque frame update
      • Requirements: 5.3
    • 6.4 Ajouter logging des opérations de rebuild

      • Logger début de rebuild avec timestamp
      • Logger fin de rebuild avec durée et nombre d'items
      • Requirements: 5.4
    • 6.5 Gérer échecs de rebuild gracieusement

      • Try/catch autour de reindex()
      • Maintenir index existant en cas d'échec
      • Logger erreur avec détails
      • Requirements: 5.5
  • * 6.6 Écrire tests property pour trigger logic

    • Property 10: Trigger Logic Validation
    • Property 11: Batch Session Trigger
    • Property 12: Frame Update Restraint
    • Property 13: Rebuild Failure Resilience
    • Validates: Requirements 5.1, 5.2, 5.3, 5.5
  • 7. Créer suite de tests complète

    • 7.1 Créer tests/unit/test_faiss_reindex.py
      • Test test_faiss_clear_resets_state()
      • Test test_faiss_reindex_flat_removes_old_entries()
      • Test test_faiss_reindex_ivf_trains_even_small()
      • Test test_extract_node_vector_multi_version()
      • Requirements: 6.1, 6.2, 6.3, 6.4, 6.5
      • FAIT: Suite de tests unitaires complète créée
  • * 7.2 Écrire tests property pour validation complète

    • Property 14: Flat Index Reindex Cleanup
    • Property 15: IVF Small Dataset Training
    • Property 16: Metadata Consistency After Reindex
    • Property 17: Search Accuracy After Reindex
    • Property 18: Index State Validation
    • Validates: Requirements 6.1, 6.2, 6.3, 6.4, 6.5
  • * 7.3 Créer tests d'intégration

    • Test test_workflow_pipeline_reindex_integration()
    • Test test_reindex_performance_large_dataset()
    • Valider end-to-end avec workflow réel
  • 8. Créer script utilitaire rebuild_faiss_simple.py

    • Créer script à la racine du projet
    • Charger tous les prototypes depuis storage
    • Appeler reindex() avec tous les prototypes
    • Logger résultats et statistiques
    • Ajouter options CLI (--dry-run, --verbose, --index-type)
    • FAIT: Script utilitaire complet avec options CLI
  • 9. Créer documentation utilisateur

    • Créer docs/guides/FAISS_REBUILD_GUIDE.md
    • Documenter quand déclencher un rebuild
    • Documenter comment utiliser rebuild_faiss_simple.py
    • Ajouter exemples d'utilisation
    • Documenter troubleshooting
    • FAIT: Documentation complète créée
  • 10. Checkpoint Final - Validation complète

    • Exécuter tous les tests (unitaires, property, intégration)
    • Valider performance sur gros datasets
    • Tester script rebuild_faiss_simple.py
    • Valider documentation
    • Demander validation utilisateur finale

Notes

  • Les tâches marquées avec * sont optionnelles et peuvent être sautées pour un MVP plus rapide
  • Chaque tâche référence les requirements spécifiques pour la traçabilité
  • Les checkpoints assurent une validation incrémentale
  • Les tests property valident les propriétés de correctness universelles
  • Les tests unitaires valident des exemples spécifiques et cas limites