Files
rpa_vision_v3/.kiro/specs/multi-anchor-constraints/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

116 lines
5.6 KiB
Markdown

# Plan d'Implémentation - Multi-Anchor Constraints (Fiche #11)
**Auteur :** Dom, Alice Kiro
**Date :** 15 décembre 2024
## Statut: Implémentation Core Complète ✅
L'implémentation principale du système multi-anchor avec contraintes est **complète**. Les fonctionnalités suivantes sont opérationnelles:
- ✅ Multi-anchor resolution avec fallback automatique
- ✅ Hard constraints (within_container_text, min_area)
- ✅ Weighted scoring avec pondérations configurables
- ✅ Tie-breaking stable et déterministe
- ✅ Audit trail complet avec métriques de performance
- ✅ Tests unitaires et property-based tests
## Tâches Restantes
- [ ] 2.3 Écrire un test de propriété pour la résolution de conteneur
- **Propriété 3: Cohérence de la résolution de conteneur**
- **Valide: Exigences 4.1, 4.4**
- Implémenter test property-based pour vérifier que la résolution de conteneur est cohérente
- [ ] 3.3 Écrire un test de propriété pour la strictesse des contraintes
- **Propriété 2: Strictesse des contraintes strictes**
- **Valide: Exigences 2.1, 2.4**
- Implémenter test property-based pour vérifier qu'aucun élément violant les contraintes n'est sélectionné
- [ ] 3.4 Écrire un test de propriété pour le filtrage complet des contraintes
- **Propriété 7: Complétude du filtrage des contraintes**
- **Valide: Exigences 2.2, 2.3**
- Implémenter test property-based pour vérifier que tous les types de contraintes filtrent correctement
- [ ] 4.4 Écrire un test de propriété pour la complétude de l'évaluation multi-anchor
- **Propriété 1: Complétude de l'évaluation multi-anchor**
- **Valide: Exigences 1.1, 1.3**
- Implémenter test property-based pour vérifier que toutes les ancres sont tentées
- [ ] 4.5 Écrire un test de propriété pour la résilience du fallback d'ancrage
- **Propriété 6: Résilience du fallback d'ancrage**
- **Valide: Exigences 1.3, 1.4**
- Implémenter test property-based pour vérifier le fallback quand les ancres échouent
- [ ] 5.3 Écrire un test de propriété pour la monotonicité du scoring pondéré
- **Propriété 4: Monotonicité du scoring pondéré**
- **Valide: Exigences 3.1, 3.2, 3.3, 3.4**
- Implémenter test property-based pour vérifier que les scores respectent la monotonicité
- [ ] 6.3 Écrire un test de propriété pour le déterminisme du tie-breaking
- **Propriété 5: Déterminisme du tie-breaking**
- **Valide: Exigences 5.5**
- Implémenter test property-based pour vérifier la stabilité du tie-breaking
- [ ] 8.1 Implémenter la réutilisation de l'analyse des éléments UI
- Éviter de re-analyser les mêmes éléments entre les ancres
- Réutiliser les calculs de distance et d'alignement
- _Exigences: 8.2, 8.4_
- [ ] 8.2 Implémenter le cache des résolutions de conteneur
- Cacher les résolutions de conteneur dans la même résolution
- Éviter les lookups redondants de conteneur
- _Exigences: 8.3_
- [ ] 8.3 Ajouter les métriques de performance détaillées
- Mesurer les durées de résolution, scoring, contraintes séparément
- Compter les cache hits/misses pour les conteneurs
- _Exigences: 8.5_
- [ ] 8.4 Écrire un test de propriété pour la cohérence de l'optimisation des performances
- **Propriété 9: Cohérence de l'optimisation des performances**
- **Valide: Exigences 8.2, 8.4**
- Implémenter test property-based pour vérifier que les optimisations n'affectent pas la cohérence
- [ ] 10.1 Intégrer avec le système de guérison existant
- S'assurer que les nouvelles fonctionnalités fonctionnent avec les profils de guérison
- Tester l'interaction avec healing_attempt et les seuils relaxés
- _Exigences: Toutes_
- [ ] 10.2 Tests de performance avec des UI states complexes
- Vérifier que la résolution multi-anchor reste sous 50ms
- Mesurer l'impact mémoire des nouvelles fonctionnalités
- _Exigences: 8.1_
- [ ] 10.3 Tests d'intégration de bout en bout
- Scénarios réels avec panels Login/Settings
- Cas complexes avec multiples ancres et contraintes
- _Exigences: Toutes_
- [ ] 11. Point de contrôle final - S'assurer que tous les tests passent
- S'assurer que tous les tests passent, demander à l'utilisateur si des questions se posent.
## Notes d'Implémentation
### Fonctionnalités Complètes ✅
1. **Multi-Anchor System**: La méthode `_evaluate_all_anchor_candidate_combinations` implémente l'évaluation complète de toutes les combinaisons ancre-candidat avec fallback automatique.
2. **Hard Constraints**: La méthode `_apply_hard_constraints` filtre strictement les candidats selon les contraintes `within_container_text` et `min_area`.
3. **Weighted Scoring**: La méthode `_score_candidate_sniper` utilise des pondérations configurables pour proximity, alignment, container, et roi_iou.
4. **Stable Tie-Breaking**: Les méthodes `_create_stable_sort_key` et `_select_best_candidate_with_tiebreak` assurent un départage déterministe.
5. **Container Resolution**: La méthode `_container_bbox_from_text` trouve intelligemment les conteneurs par texte.
6. **Audit Trail**: Les métadonnées complètes sont incluses dans `resolution_details` avec toutes les informations de performance et de débogage.
### Tests Existants ✅
- Tests unitaires complets dans `test_fiche11_multi_anchor_constraints.py`
- Tests property-based partiels (4 propriétés sur 10 implémentées)
- Tests d'intégration avec scénarios réels
### Architecture
Le système s'intègre parfaitement dans l'architecture existante de `TargetResolver` sans casser la compatibilité. Les nouvelles fonctionnalités sont activées via les champs `hard_constraints` et `weights` de `TargetSpec`.