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>
5.6 KiB
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 ✅
-
Multi-Anchor System: La méthode
_evaluate_all_anchor_candidate_combinationsimplémente l'évaluation complète de toutes les combinaisons ancre-candidat avec fallback automatique. -
Hard Constraints: La méthode
_apply_hard_constraintsfiltre strictement les candidats selon les contrainteswithin_container_textetmin_area. -
Weighted Scoring: La méthode
_score_candidate_sniperutilise des pondérations configurables pour proximity, alignment, container, et roi_iou. -
Stable Tie-Breaking: Les méthodes
_create_stable_sort_keyet_select_best_candidate_with_tiebreakassurent un départage déterministe. -
Container Resolution: La méthode
_container_bbox_from_texttrouve intelligemment les conteneurs par texte. -
Audit Trail: Les métadonnées complètes sont incluses dans
resolution_detailsavec 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.