# πŸ—‘οΈ Architecture de Nettoyage - Cycle de Vie des DonnΓ©es **Date**: 7 janvier 2026 **Objectif**: DΓ©finir quand supprimer quoi dans le systΓ¨me RPA Vision V3 --- ## πŸ“Š Cycle de Vie Complet ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 1. CAPTURE (Agent V0) β”‚ β”‚ - Screenshots bruts (PNG) β”‚ β”‚ - Events JSON β”‚ β”‚ - Chiffrement AES-256 β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ ZIP chiffrΓ© (.enc) ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 2. UPLOAD (Serveur) β”‚ β”‚ - RΓ©ception ZIP chiffrΓ© β†’ /data/training/uploads/ β”‚ β”‚ - DΓ©chiffrement β”‚ β”‚ - Extraction β†’ /data/training/sessions/sess_*/ β”‚ β”‚ β”œβ”€β”€ sess_*.json β”‚ β”‚ └── shots/shot_*.png β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ DonnΓ©es brutes disponibles ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 3. TRAITEMENT (Worker) β”‚ β”‚ Pour chaque screenshot: β”‚ β”‚ - DΓ©tection UI (OpenCV + OWL-v2 + VLM) β”‚ β”‚ - GΓ©nΓ©ration embeddings (CLIP) β†’ /data/embeddings/ β”‚ β”‚ - CrΓ©ation ScreenState β†’ /data/screen_states/ β”‚ β”‚ - OCR et extraction texte β”‚ β”‚ β”‚ β”‚ RΓ©sultat: DonnΓ©es structurΓ©es sans besoin des PNG bruts β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ Embeddings + Screen States créés ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 4. APPRENTISSAGE (Learning Manager) β”‚ β”‚ - Clustering DBSCAN sur embeddings β”‚ β”‚ - DΓ©tection patterns rΓ©pΓ©tΓ©s β”‚ β”‚ - Construction WorkflowGraph β”‚ β”‚ - Indexation FAISS β†’ /data/faiss_index/ β”‚ β”‚ - Sauvegarde Workflows β†’ /data/workflows/ β”‚ β”‚ β”‚ β”‚ RΓ©sultat: Workflows exΓ©cutables créés β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ Apprentissage TERMINΓ‰ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 5. NETTOYAGE (Post-Learning Cleanup) ← TODO APRÈS POC β”‚ β”‚ ❌ SUPPRIMER: β”‚ β”‚ - Screenshots bruts (shots/*.png) β”‚ β”‚ - JSON session brut (sess_*.json) β”‚ β”‚ - ZIP chiffrΓ© (.enc) β”‚ β”‚ β”‚ β”‚ βœ… CONSERVER: β”‚ β”‚ - Embeddings (/data/embeddings/) β”‚ β”‚ - Screen States (/data/screen_states/) β”‚ β”‚ - Workflows (/data/workflows/) β”‚ β”‚ - Index FAISS (/data/faiss_index/) β”‚ β”‚ β”‚ β”‚ Gain: ~90% espace disque (PNG = gros fichiers) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## 🎯 Statut Actuel (POC/MVP) ### βœ… Ce qui Fonctionne - Upload et dΓ©chiffrement βœ… - Extraction screenshots βœ… - Traitement et crΓ©ation embeddings βœ… - CrΓ©ation screen states βœ… ### ⚠️ ProblΓ¨me IdentifiΓ© **Le nettoyage se fait TROP TΓ”T** (ligne 164 de `processing_pipeline.py`) ```python # AprΓ¨s traitement (Γ©tape 3), mais AVANT apprentissage (Γ©tape 4) self._cleanup_raw_files(session_id, stats) # ← TROP TΓ”T ! ``` **ConsΓ©quence** : - Screenshots supprimΓ©s avant l'apprentissage ❌ - Apprentissage ne peut pas accΓ©der aux images ❌ - Impossible de valider visuellement les captures ❌ ### πŸ”§ Solution Court Terme (POC) **DΓ©sactiver complΓ¨tement le nettoyage** jusqu'aprΓ¨s le POC ```bash sudo bash disable_premature_cleanup.sh ``` --- ## πŸš€ Architecture Cible (Post-POC) ### Option A : Nettoyage Automatique Post-Apprentissage **Trigger** : Quand le workflow atteint l'Γ©tat `AUTO_CONFIRMΓ‰` ```python class LearningManager: def promote_workflow(self, workflow_id: str): workflow = self.get_workflow(workflow_id) if workflow.state == LearningState.AUTO_CONFIRMED: # Workflow validΓ© β†’ Plus besoin des donnΓ©es brutes self._cleanup_learned_session(workflow.source_session_ids) def _cleanup_learned_session(self, session_ids: List[str]): """Nettoie les donnΓ©es brutes des sessions apprises.""" for session_id in session_ids: # Supprimer screenshots screenshots_dir = Path(f"data/training/sessions/{session_id}/shots") if screenshots_dir.exists(): shutil.rmtree(screenshots_dir) # Supprimer JSON brut for json_file in Path("data/training/sessions").rglob(f"*{session_id}.json"): json_file.unlink() # Supprimer ZIP for zip_file in Path("data/training/uploads").glob(f"{session_id}.*"): zip_file.unlink() logger.info(f"Cleaned up learned session: {session_id}") ``` ### Option B : Nettoyage Manuel ContrΓ΄lΓ© **Interface admin** : Bouton "Nettoyer sessions apprises" **Avantage** : ContrΓ΄le total, utile pour debugging ### Option C : Nettoyage Par RΓ©tention **RΓ¨gle** : Conserver X jours de donnΓ©es brutes, supprimer le reste ```python # Nettoyer sessions > 30 jours avec workflow confirmΓ© retention_days = 30 cutoff_date = datetime.now() - timedelta(days=retention_days) for session in get_all_sessions(): if session.created_at < cutoff_date: if session.has_confirmed_workflow(): cleanup_session(session.id) ``` --- ## πŸ“‹ Recommandation ### Court Terme (POC/MVP) - MAINTENANT βœ… **DΓ©sactiver le nettoyage** - Permet de valider le systΓ¨me complet - Permet la dΓ©mo avec screenshots visibles - RΓ©versible ### Moyen Terme (Production V1) - APRÈS POC βœ… **Option A** : Nettoyage automatique post-apprentissage - Logique claire et automatique - Pas d'intervention manuelle - Gain d'espace progressif ### Long Terme (Production V2) βœ… **Option A + C** : Auto + RΓ©tention - Nettoyage immΓ©diat post-apprentissage - + RΓ©tention de sΓ©curitΓ© (30j) - + Interface admin pour cas spΓ©ciaux --- ## πŸ” DonnΓ©es Γ  Conserver TOUJOURS **Pour l'exΓ©cution autonome** : - βœ… **Embeddings** (vecteurs CLIP 512D) β†’ Matching rapide - βœ… **Screen States** (Γ©tats analysΓ©s) β†’ Context des Γ©crans - βœ… **Workflows** (graphes validΓ©s) β†’ ExΓ©cution automatique - βœ… **Index FAISS** (recherche vectorielle) β†’ Performance **Ces 4 Γ©lΓ©ments suffisent pour faire tourner le RPA !** --- ## πŸ’Ύ Estimation Espace Disque ### Avant Nettoyage (Par Session) ``` - Screenshots (16 x 1920x1080 PNG) : ~15-20 MB - JSON session brut : ~50 KB - ZIP chiffrΓ© : ~15-20 MB TOTAL par session : ~35-40 MB ``` ### AprΓ¨s Nettoyage (Par Session) ``` - Embeddings (16 x 512 floats) : ~32 KB - Screen States (16 x JSON) : ~20 KB - Workflow (1 x JSON) : ~5 KB TOTAL par session : ~60 KB ``` **Gain** : ~99% d'espace (35 MB β†’ 60 KB par session) --- ## 🎯 Actions ImmΓ©diates 1. βœ… **Maintenant** : DΓ©sactiver nettoyage prΓ©maturΓ© ```bash sudo bash disable_premature_cleanup.sh ``` 2. βœ… **Test** : Capturer nouvelle session ```bash cd agent_v0 && ./run.sh ``` 3. βœ… **Validation** : VΓ©rifier screenshots conservΓ©s ```bash ls -lhR /opt/rpa_vision_v3/data/training/sessions/sess_*/shots/ ``` 4. ⏳ **AprΓ¨s POC** : ImplΓ©menter Option A (nettoyage post-apprentissage) --- ## πŸ“ž Questions/DΓ©cisions - [ ] Quelle option choisir pour la production ? (A, B, ou C) - [ ] DurΓ©e de rΓ©tention souhaitΓ©e ? (30j, 90j ?) - [ ] Interface admin nΓ©cessaire ? - [ ] Logs audit des nettoyages ? --- **Version** : 1.0 - POC/MVP **Prochaine rΓ©vision** : AprΓ¨s validation POC