Initial commit

This commit is contained in:
Dom
2026-03-05 00:20:25 +01:00
commit dcd4de9945
1954 changed files with 669380 additions and 0 deletions

View File

@@ -0,0 +1,136 @@
ost:5001
://localhttpr hsudiatement e lancé immépeut êtrdashboard Le MENT**
OUR LE LANCE**PRÊT Pal** : ✅ **Statut Fin
---
|omcaternative T| Alt | ✅ Libre |
| 8080tive Django lterna | A ✅ Libre8000 |ode |
| act/Native Relternibre | A000 | ✅ L 3* |
|ion V3*ard RPA Vis* | **DashboLISÉ* ✅ **UTI*5001** |dard |
| *Flask stane | 000 | ✅ Libr------|
| 5-------|-
|------|-ge |Statut | Usa
| Port | onibles
ts Disp
## 📊 Por
00
---st:80://localhor à : httpis accéde
Pu8000)
```0', port=0.0.'0.True, host=n(debug=ruhon
app.pyt5 :
``` ligne 16y`.p/appb_dashboard `we
Modifiertif
ort alternaiser un p
### Util01)
```
of -t -i:50e
kill $(lsessairport si néc Libérer le
#i :5001sus
lsof -le proces
# Vérifier
```bash occupé 5001 estort### Le page
épann🛠 D## `
---
t=5001)
``0.0.1', por27.e, host='1(debug=Tru
app.run``python :
`` ligne 165app.pyhboard/das`web_r ifieModt :
quemenalhost uniaccès au loc limiter l'
### Pourl**.éseau locadepuis le re blessicct **ae qu'il esa signifiCel.0.0.0'`
`host='0ec uré av est configdashboard
⚠️ Le Sécurité
## 🔒
---
testse sortie desonsole dlogs
- ✅ Ces ion dsat Visualitests
- ✅s les t de tou- ✅ Lancemenduels
ts indiviest de tncemenires
- ✅ Laests unitaes t ✅ Liste d
-s réelmpen te du système Statut
- ✅ isponibles désonctionnalit### FNE>:5001
CHIp://<IP_MA** : httallocseau 1
- **Réhost:500ocal : http://l**Local
- ** lancé :
ne fois🌐 Accès
U##
---``sponible
`st diut (5001) edéfapar - Le port RÊT P
✅du :
``` atten
Résultat
```
.shoard_port/check_dashbash
.```be :
t disponible le port eser quur vérifiation
Po ✅ Vérific---
##e
rage rapid - DémarSHBOARD.md`_DAQUICK_START- `rage
ide de démarmd` - GuDY.SHBOARD_REA
- `DAonati et configurortsleau des p- TabTATUS.md`
- `PORTS_Sise à jouration m 3. Document##```
#01
RT=50T_POEFAULh
Dbasort.sh`
```ard_pheck_dashbo 2. `c
###```5001)
.0.0', port=e, host='0.0bug=Trun(de
app.runpytho
```gne 165)p.py` (lid/apeb_dashboar### 1. `wifiés
ichiers Mod--
## 🔧 F
-:5001
//localhostp: httès** :
**Acc
```shboard-da/run.sh -v3
.ision_cd rpa_v```bash
t Rapideen## 🚀 Lancem
---rd 5000standae port our éviter lr pteulisaix utices
- ✅ Choes serviavec d'autrt li confcunfié)
- ✅ Au (vériniblet dispoort libre e1 ?
- ✅ P00t 5orurquoi le p*.
### Poport 5001***uré sur le onfigtenant c maineston V3 RPA Visihboard
Le dasn
rationfigu# 📌 Co
#
---
É ET PRÊT✅ CONFIGURtut** :
**Stabre 2024ovem4 nion** : 2configurate
**Date dt 5001 Por Vision V3 -rd RPAhboa🎯 Das#

View File

@@ -0,0 +1,221 @@
igé
: ✅ Corrt**
**Statu: V3.0 **Version** re 2025
embove** : 24 nDat
**---
APIDE.md`
DEMARRAGE_Ride** : `émarrage rap*Dd`
- *ard/README.mb_dashbo* : `weboard**Dash
- *NG_GUIDE.md`** : `TESTI test- **Guide detation
📚 Documen
---
##
ure est à jo codifier que leér
3. V.txt`equirementsll -r rinsta`pip : s éesont installndances que les dépe2. Vérifier long`
.py -v --tb=_ui_elementunit/testst tests/yte: `p détaillés les logsrifier Véion** :
1.
**Solutething
```est_som::t.pynt_eleme_uiunit/teststs/FAILED tee** :
```
Symptôm
**uent
ts Écholème : Tesob# Pr
## -e .
```
tallv3
pip insvision_h
cd rpa_
```basolution** :**S
3'
```vision_vamed 'rpa_module no : NorFoundErroduleNot :
```
M****Symptômer
ort Erro: Impme
### Problèes
PossiblProblèmes 🐛 Autres
## --
-```=
==========================s ====.15n 0sed i=== 20 pas====================
...
====== PASSEDlizationiags_serest_embeddin:tgs:tEmbeddinestUIElemenent.py::Tt_ui_elem/unit/tesestsgs PASSED
te_embeddincreat::test_ngstEmbeddiElemenstUI::Te.pyentemui_elunit/test_s
tests/tem0 i 20
collectedy-1.5. pluggytest-8.3.4,.7, p Python 3.12 linux --latform========
p==================== ==artsion stest sess=== t=======================
=== RÉUSSI
Statut: ✅nt.pyemest_ui_elt/te tests/uniTest:
er :
```t affichvraiens de testction, les correndu
AprèstteRésultat A
## 🎯
```
--->=7.0.00
pytest0.`
Flask==3.``Après** :
**
.0
```Flask==3.0`
``t** :
`)
**Avan.txttsiremenard/requeb_dashboendances (`w## 3. Dép
#
```
;
}or.message}`erru: ${réseaeur ntent = `ErrxtCoputDiv.teoutror) {
tch (er
} ca{stderr}`;dout}$`${stnt = tConteputDiv.tex
outr || '';tder data.sr =stderconst ;
)'rtie'(aucune so.stdout || dout = data st const
;
} return
or}`;rr: ${data.eErreurent = `ContputDiv.text out
or) {ta.errif (da
;se.json()responit awa data =
const }
return;
`;or}rror.e{erreur: $`Errntent = textCoputDiv.out
);json(esponse. await rr =t erro cons) {
e.okf (!respons
i(...);
wait fetchonse = aesp const rry {
vascript
t`jaès** :
``**Apr``
ined
`t est undefstdoua.datined" si efiche "und`;
// Affdata.stderr}n${\n\ta.stdout}datent = `${onextCiv.t);
outputDn(se.jso responata = await
const davascript
```j**Avant** :l`)
dex.htmtemplates/inshboard/`web_daend (2. Front`
### )
`` or ''
}.stderr: resulterr' 'stde)',
ti(aucune sorout or ': result.stdt''stdounify({
n jsour ...)
retrun(cmd,cess.ubpro= sesult s
rrreurn d'etion avec gesécutio})
# Expath}': {test_trouvéchier non Fi'error': f'sonify({ j returnxists():
ath.eull_per
if not ffichion du # Vérificati
})
n trouvé'
'pytest no': 'stderr ,
dout': '' 'st se,
ccess': Fal 'sué',
installytest non 'p 'error':
ify({eturn json 0:
returncode !=check.rst_..)
if pyte'], .h', 'pytestrun(['whicss.ocesubpr= est_check pytest
pyton de érificatipython
# Vrès** :
```
**Ap``d, ...)
`ocess.run(cmlt = subpr
resuhort']tb=s--, '-v', 'ull_path)r(fst', st = ['pyte existe
cmd si pytestification Pas de vérthon
#:
```py
**Avant** d/app.py`)
ashboarkend (`web_d### 1. Bacées
ppliquections A## 📝 Corr-
t
--ener correctem'affichenant st mainttat devrai résul5. Le test
à côté d'unur **▶**r sique Cl4.sts**
Te l'onglet **dansr
3. Allecalhost:5001//lor : http:vriOud`
2. dashboarun.sh --board : `./rshr le da
1. Lancehboard# Via le Das
## -v
```
tests/sts
pytestes teus l
# Toit/ -v
tests/untest nitaires
pyts uus les tes -v
# Toement.py/test_ui_eltests/unitle
pytest # Test simpvate
3/bin/actinv_v ve_v3
source rpa_vision
cd
```bash
lementer Manuel
### TestVérification 🔍 -
##
--```--version
pytest >=7.0.0
ll pytestip instae
patv3/bin/activenv_ce vn_v3
sourisio
cd rpa_vh```bas
n Manuelletio2 : Installaion
### Optimpletest sste un ✅ Te4.n
tallatio'ins✅ Vérifie lpytest
3. nstalle tuel
2. ✅ Innement virve l'enviro:
1. ✅ Acticript
Ce s
```
s.shtestshboard_fix_da
./n_v3siopa_vi r
cd```bashue
pt Automatiqri : Sc 1Option
### on Rapideluti-
## ✅ So.
--u frontenddefined` aleurs `undes vaourne retcution et exééchouer l' qui fait , cexiste pasande n'ela commt` mais pytesd'exécuter ` essaie dashboardse
Le
### Caued
```
efinundned
efiUÉ
undatut: ❌ ÉCHOement.py
Stt/test_ui_el: tests/uniTestes
```
### Symptômvirtuel.
nnement 'envirodans lllé** stainest pas ytest n'ar **p" cfinednt "undeffichedashboard aests du fié
Les te Identi## Problèmd
boarashests du D des Torrection 🔧 C#

View File

@@ -0,0 +1,63 @@
# Guide de Gestion d'Erreurs - RPA Vision V3
## Vue d'ensemble
Le système de gestion d'erreurs fournit une récupération automatique robuste pour les échecs d'exécution de workflows.
## Types d'Erreurs
### 1. MATCHING_FAILED
Aucun node ne correspond à l'état actuel.
**Stratégies**: PAUSE (si < 0.70), RETRY (si proche seuil)
### 2. TARGET_NOT_FOUND
Élément UI cible introuvable.
**Stratégies**: Fallbacks visuels/position, RETRY, SKIP
### 3. POSTCONDITION_FAILED
Post-conditions non satisfaites.
**Stratégies**: RETRY (timeout augmenté), ROLLBACK
### 4. UI_CHANGED
Interface changée significativement.
**Stratégies**: PAUSE pour analyse manuelle
## Utilisation
```python
from core.execution.error_handler import ErrorHandler
from core.execution.action_executor import ActionExecutor
# Configuration
error_handler = ErrorHandler(
error_log_dir="data/errors",
max_retry_attempts=3,
ui_change_threshold=0.70
)
# Intégration
executor = ActionExecutor(error_handler=error_handler)
# Exécution
result = executor.execute_edge(edge, screen_state)
# Statistiques
stats = executor.get_error_statistics()
print(f"Erreurs: {stats['total_errors']}")
```
## Logs
Chaque erreur crée:
- `error_report.json` - Rapport détaillé
- `screenshot.png` - Screenshot
- `state_embedding.npy` - Embedding
## Tests
- Tests unitaires: `tests/unit/test_error_handler.py`
- Tests d'intégration: `tests/integration/test_error_recovery.py`

View File

@@ -0,0 +1,427 @@
ase 5.
léter la Phpour compedges uction d'onstrla cImplémenter ** tape:ochaine é**Prlète
e 5 comphaspour Pe
- ✅ Prêt cture solidite Archlidés
- ✅ts va
- ✅ Tes complèteation ✅ Documentenable
-aint et monnelprofessiCode ec :
- ✅ ready** avroduction-t **ptenanest mainbuilder` ph_dule `gra
Le moon
Conclusi📝
---
## exible
n flnfiguratio - Coble
xtensi eectureit
- Archésrement marqulai - TODO cté**
**Évolutiviter
5.tes- Facile à ires
lités claonsabi
- Respn séparéesprivées bieéthodes - M**
arité
4. **Modulormales
ations an situ pour WARNING -tails
EBUG pour dé - D
ncipales étapes pri INFO pour
-ratégique**g Stggin3. **Lo
ptionalion des Oest - Gntrées
ion des ealidat Vout
-rtts pape hin
- Tye Safety** **Typlet
2.README comprings
- sts les docxemples dan - Entation
nt implémecstrings ava
- Don First**tio**Documenta
1. pliquéesratiques Ap Bonnes P##s
#Apprise🎓 Leçons
##
---
documentéecture x] Archite
- [lisationes d'utiExempl [x]
-ME completAD] REstic
- [xun diagnoucts
- [x] Ats passanesrs
- [x] Treustion d'er[x] Geif
- ing informat
- [x] Loggs complets hintype] T [xstive
-tion exhauocumenta- [x] De
et lisibl Code propreité
- [x]st Qualeckli
## ✅ Ch``
---
logging
`e avec proprionentatplém # Im""
" ...
tionndexaISS pour i Manager FAnager: faiss_ma gs
dinate Embed pour Stilder: Bung_builder embeddi Args:
r.
hBuildeapr le Grise Initial"""
):
= 2,
amples: intn_sring_mi cluste.15,
0 =at: floustering_eps
clt = 3,ions: inepetitttern_rmin_pa
] = None,FAISSManager: Optional[ger faiss_manane,
ilder] = NoingBueEmbedd[Stattionaluilder: Opembedding_b self,
nit__(
def __i"
"" ion)
session(sessild_from_er.bulow = build >>> workfs=3)
ionern_repetit(min_pattphBuilderuilder = Gra >>> bmple:
Exa...
nnel)
on (optioxatide pour inanager FAISSanager: M_miss fags
ate Embeddinr les Stpour calculeuilder r: Bng_buildembeddi e
ibutes:
Attr tés.
épés rles patterntectant ges en dé et eddeses nolow avec sun Workf
iquementmatire autopour construawSession une R analysette classe Cetes.
sessions brus flows depuie works de graphestructeur d
Con"
""er: GraphBuildenté
classcumbien dosionnel, de profeshon
# Coès
```pyt
### Apr``ss
` pa basique
de Co #):
ession ses(self,n_statreate_scree_cf de
r = ...deuilg_binf.embedd self, ...):
t__(sel def __inihBuilder:
class Grapocumentéal, peu de minimython
# Cod
```p
### Avant Impact
-
## 📈sters
--es clu qualité ds detrique - Méterns
pat sans on états - Gesti00 états)
longues (>10ons très sisesstion - Geustesse**
**Robng
5. clusteriion duParallélisat
- sr prototypeache LRU pou C
- embeddingsssing pourceproh - Batcions**
**Optimisatyenne
4. orité Mos
### PriRepetitioninimum ion MectDetn Pattery 16:ropert - P
e Counttotype Samplmbedding Proy 14: Eropert P
-Based**s Property-est. **T ```
3nts
ui_elemeequired_ # - rerns
_patt_text- required # (regex)
tterntitle_paindow_ w # -ntes
lligetes inteontrain: Extraire c # TODOype):
es, protot, statlate(selfemp_screen_tdef _createn
tho*
```pylate()`*en_tempcrecreate_sir `_ **Enrich``
2.ns
`ditiopre/post-con. Définir # 4 s
rôlec c aveargetSpeCréer T # 3. ts
vénemens é depui actionsaire 2. Extrj)
#e_i state_ (statr séquencesieif# 1. Identns
itiotecter transO: Dé TOD #sion):
esstates, sn_nodes, screelf, dges(seef _build_e dpython
`**
```d_edges()er `_buillément
1. **Impté Haute
ri Prio##pes
# Étainesrocha
## 🚀 P
---s")
```
tal} vectorex.ntomanager.ind: {faiss_ISS indext(f"FArinISS
p dans FAment indexésquetomati sont aumbeddings)
# Les esionssion(ses_from_seild.bubuilderow = workfl
re workflow
# Construi.12
)
s=0ring_ep cluste,
petitions=5rn_repatte min_ager,
er=faiss_mannagfaiss_mar(
uildeer = GraphBild
buavec FAISSder # Créer buil512)
ensions=(dimSSManagerr = FAImanagefaiss_ager
r FAISS maner
# CréeAISSManag import F_managering.faissre.embedd
from coBuildert Graphlder imporraph_buire.graph.gon
from coyth``pAISS
`vec Fs Avancé a## Ca
```
#")odes)} nodesrkflow.now: {len(wont(f"Workfl
)
priorkflow"Login Wow_name="orkfl wssion,
_se session=raw sion(
d_from_seslder.buil buiflow =orkrkflow
wre woui
# Constr)
g_eps=0.15
erin clust3,
tions=_repeti min_patternuilder(
er = GraphBlder
buildle buier Cré
#Sessionport Rawsession ims.raw_dele.mo cor
fromuilderphBraport Ger imph_builde.graph.gra
from corthon``py
`imple
Cas Son
### satimple d'Utili## 🔄 Exe
es
---étapchaines lète
- Pro compon
- APIratie
- Configuodmples de cation
- ExeilisGuide d'utodule
- e du mchitecturec :
- ArDME.md` avph/REAcore/gra `
Crééomplet
ADME C
### RE```
""des")
"} no.nodes)en(workflow {lthorkflow wiint(f"W >>> prssion)
sion(raw_se_from_sesld builder.builow => workf=3)
>>itionsetttern_repin_pa(mhBuilderGrapder = > buil >>
Example:er
ustcle chaqune) pour yenrototype (mocule un p
- Calnsépétitioins de N rmosters avec clultre les - Fibeddings
entre emsinus coimilarité sue:iq Métr -
ustering)ial Clpated Sassity-B(Denise DBSCAN - Utiltterns:
tion de Pade Détecorithme lgs
Aionittransges depuis rkflowEdon de Wo. Constructi 5s
usterpuis clowNodes dede Workflon tistruc Con
4.ANtering DBSCrns via clusteatection de p3. Détts
ous les étangs pour tbedditate Emul de S 2. Calc
ssions RawSees depuiScreenStat de ation Cré
1.ecture:Archités.
erns répétant les pattet en détectegistrées ssions enrant les seen analysworkflows
e raphes de ge dutomatiqutruction ala consplémente dule im
Ce moGraphskflow ue de Wortiqmauction Autoder - Constr"
GraphBuil""on
pyth``ng
`ule Docstri
### Mod
tationDocumen--
## 📖
```
-ound ✅gnostics fNo dia
# py'])uilder.h/graph_bv3/core/grap_vision_cs(['rpaagnostish
$ getDi``baics
`iagnost
### D``r
`reuune er)
# ✓ Aucetitions=3_pattern_repder(minraphBuilbuilder = Guilder
t GraphBilder imporaph_bugrraph..gm coreython
fro``pst
`ort Te`
### Imp PASSENT
``TESTSLES
✓ TOUS sponibleder diCLIP embedration OK - ..
✓ Intégation.est Intégr
[5/5] T5 started- Phase OK cher ✓ NodeMat
cher...t NodeMates[4/5] Trted
staK - Phase 5 r OlderaphBuider...
✓ GphBuilrat G5] Tesated
[3/ 11 valid - Propertyanager OK.
✓ FAISSMger..st FAISSMana Te5]dated
[2/17 vality K - ProperEngine O✓ Fusionngine...
onEt Fusi
[1/5] Tese_a_b.pyhasst_python te
$ p```bash
assants### Tests Plidation
ts et Va## 🧪 Tes
---
""
```
"alide vide ou invession estSi la sueError: Valises:
Ra
des et edgesruit avec nokflow const Worurns:
Ret
)
si Nonenéré flow (gérk: Nom du wolow_name workfr
te à analyseSession bruion: sess Args:
tions
sis tranpuis destruire edgeCon
5. s clusterspuies de nodireConstru 4. ring
via clusteatterns Détecter p 3. at
e étr chaqudings pour embedCalcule 2. enshots
creis sates depur ScreenStée 1. Cr
s:rocessu
P
RawSession.depuis une low complet kfuire un Wortr
Cons""" ow:
-> Workfl) ne,
Nonal[str] =e: Optioflow_nam
work RawSession,ssion:seself,
rom_session(d_fuil
def b
```pythonstringemple de Doc## ExNG)
#WARNI DEBUG, priés (INFO, approeaux* : Nivg*inLogg
- ✅ **stringsFormat doce** : Styl✅ **Google - s
: Type hintP 484** **PE
- ✅ ringsocst 257** : D- ✅ **PEPn standard
Style PythoP 8** :✅ **PEectés
- spndards Re
### Sta
``` ✅ Passent ts: 0
Tescs: gnosti
Dia 100%: hints 100%
Types:
Docstring 8 ons:
Foncti 450: de code
Lignes
```ques
### Métridu Code
📊 Qualité --
## nce
- à l'avaspécifier Kde soin s be- Paiques)
unit (étatse bruifie l- Identsters
clunombre de uement le tomatiqtecte aus:**
- Dévantage
**Aus
arité cosinile'` : Simic='cosin
- `metrusterpar clons min lltianÉchmples=2` : in_sa
- `mintsentre poax stance m : Di5`- `eps=0.1**
ètres:N
**ParamSCAorithme DB
### Algflow
```
Work ↓ODO]
[Tld_edges() ↓
5. _buiodes
kflowN ↓
Wor()
_build_nodes↓
4. ndices]}
[i_id:er{clust↓
Clusters
) [DBSCAN]s(rn_pattetect3. _de
2D vectors)gs (51
Embeddin
↓()ingse_embedd2. _comput ↓
enStates
Screes()
↓_statreate_screen ↓
1. _c ion
RawSesson
```
tructide Conssus
### Proceser
GraphBuildchitecture
## 🏗️ Ar
---Références - de
cos deExemplen
- ioisatide d'util - Guodule
du mecture - Archit)
n complèteentatiocum (doREADME.md`**core/graph/. **`
3ontraintes
e ction dida - Val)
S + linéaireching (FAISatatégies de m - Strmplète
tcher` cose `NodeMa - Clas)
(125 lignes`**er.pytchde_mano`core/graph/
2. **aque étapeaillé à ching détLoggs
- ternatn de ptectio déourSCAN phme DBritAlgontées
- s docume- 8 méthode
te complèer`uildraphB - Classe `Gignes)
0 ler.py`** (45ildraph_bu/graph/g
1. **`coreipaux
iers Princ
### FichModifiés
éés/iers Cr Fich---
## 📁
ing/typing) (lintticgnosucun dia As
- ✅ion d'erreurGestif
- ✅ matg infor✅ Loggins
- pletnts com- ✅ Type hi style)
les Googcstringstive (dohauexntation ✅ Documetructuré
- s bienetode propre ✅ Cvec :
- uilder.py` aph_b de `gralleprofessionneet e complèt
Réécritureeint
f Att# 🎯 Objecti
---
#rminée
ropre tementation pplé✅ Im*Status:**
* 20243 Novembree:** 2
**Datpre
te et Promplèentation Complém- Ider uilaphB# Gr

View File

@@ -0,0 +1,66 @@
l).
ent normaporteméchoue (come hagl'afficis ionne man fonctsatioiali, l'initeadless hentvironnemcher. En enr s'affiWayland) pou (X11/iqueaphnt grvironnemessite un enéceI note
Le GU
## N2 endroits)s ( importrectionpy` - Corstrator.chegui/or_v3/_vision
- `rpathjout sys.pa_gui.py` - Aon_v3/runisi`rpa_vfiés
- chiers Modi
## Fied
```
itializinWindow in INFO - Ma_window -mainM:SS] - gui.ed
[HH:M initializtorstra - RPAOrcheNFOrator - Iorchestui.H:MM:SS] - g`
[He :
``enduie att
Sort.sh
```
unsion_v3
./rvi
cd rpa_h
```basidation
e Val# Test d
#mport
eur d'i sans errémarreI dnt
✓ Le GUtemeise correcinitialP s'penCLIrreur
✓ Osans ee chargent nts core scomposa
✓ Tous les ntrectemee corisialitteur s'inhestra
✓ L'orctat Résul
##```
llector
DataCoainingTrr import _collectodatatraining_re.training.coger
from Manaort Learningr impning_managelearng.e.learnim corroent))
frent.par__file__).par(Path((0, stinsert
sys.path.ort Pathib impthl pas
fromsyimport thon
```pyrès :**Ap
**tor
```taCollecningDa import Traiollectorta_c_daainingining.tr ..core.traomager
frLearningManer import managearning_learning.lre..cohon
from .yt*
```p:*
**Avant s.path :
du sy ajustementsolus avecs imports abpar dets relatifs s import deemenmplac
Retrator.py`i/orchesction de `gu 2. Corre###
ent))
```
parfile__).h(__ str(Patinsert(0,h.
sys.patthb import Pa
from pathli
import syshon:
```pytys.path t au sanourn c du chemijout
A`run_gui.py` de rrection1. Co
### n Appliquéeutiool
## S configuré.ectementrron cothkage Pyns un pac pas dae n'étaitar le modul pas cionnaiente fonctcore`) nom ..elatifs (`frrts rmpoCause
Les i
## ``kage
`evel pac-l beyond topve importrelatited ed: attemp failalizationniti ✗ I:51:04]
```
[17tialme Inilèob
## PrNov 2025on 23 x - Sessirt Fi# GUI Impo

View File

@@ -0,0 +1,339 @@
rt JSON
ppoc le ra avessueune i. Ouvrir étaillés
4 les logs dfierérimplète
3. Vyse couter l'analecs
2. Exéc'échts dpporles raer nsult :
1. Coproblème ou e questionPour toutSupport
.log`
## hinglogs/matc `ogs :`
- L.jsonfigg_conig/matchinnfion : `cogurat- Confiitoring/`
ta/montoring : `da moniiques de- Métres/`
iled_matchta/fa`dahecs : apports d'écs
- R Ressource
##e
```
s à 5/heurits réduÉchecRésultat: 3. n
nfig.jsoching_co config/matiterÉd.78
2. nde seuil 0 Recomma
→es.pyailed_match analyze_f
1. pythonon:
Solutinne 0.81oyeance mure, confichecs/hemptôme: 30 é
```
Syvé
op Éle3 : Seuil Tr Cas ##```
#u
kflow reconnau woruveRésultat: No
3. ngs Panel""Settie e nodCrée l →
g.py --applyve_matchin_impro auto2. pythoncréer
ode à nouveau nunntifie → Ides.py
matchefailed_on analyze_ythtion:
1. p)
Soluiance < 0.65onf (cngs Panel"our "Settichecs ptôme: 8 é
```
Sympalité
Fonctionn2 : Nouvelle# Cas 0
```
##éduits à : Échecs ratltésues
3. Rmplxe eux nouvealespe avec typrotojour le et à ply
→ Mpy --aptching.o_improve_ma. python aut a changé
2gin ScreenLome que Confir → --last 20
matches.py_failed_lyzenaon aon:
1. pyth)
Solutir miss.82 (nea0.78-0: ceian
Confen" Scre"Login pour s en 1 heurehectôme: 15 éc
```
Sympurn Mise à Jocatio 1 : Appli## Cass Réels
# Exemples
##pportans les ras ddétailléogs lLes`
3. h()tcher.matcns `NodeMaing dade matchque
2. La logiidation valderaintes . Les contifier :
1. Vérde matchinggique dans la lodique un bugla inchec)
Ce5 mais é > 0.8ce(confianux Négatifs ème : Faobl
### Prjoures mises à iquer ls
- Applsolètees sont obtotyp - Les pro
PDATE_NODE :eaucoup de U3. Si b
manquants
x nodes uveauouter les no - Ajomplet
incaphe est Le gr - NEW_NODE :
de CREATE_ucoupSi bea
2. ```
y
ches.patfailed_me_alyzpython an
`bash :
``stionsgges suAnalyser le1. Basse
Moyenne ceonfianProblème : C ```
###
ieu de 0.85 l0 # auld": 0.8reshority_thsimila "n
onfig.jso_cig/matchingnf Éditer co #ash
```buil :
ire le serédupersistant,
3. Si `pply
``py --aching._improve_matn autopytho ```bash
ypes :
s protot leur Mettre à jo```
2.ast 50
hes.py --liled_matcyze_fanal python aash
`b
``ques : problématidesles nor . Vérifieéchecs
1d'op lème : Tr# Probnage
## Dépant)
##lecompe (graphe in Problèm**> 30%** :ents)
- ents fréquangemion (chAttent* : - **10-30%*e)
ntle(évolution : Normal < 10%**
- **atsuveaux Ét## Ratio No
# Problème
60** :*< 0.ntion
- *** : Atte0.60-0.70 Bon
- **0.80** :70-*0.ellent
- * : Exc0**0.8> e
- **ennnce Moy## Confiame
# Problè* :re*/heu0 échecs*> 2- *ntion
* : Atteheure*hecs/*10-20 éc: Bon
- *** s/heureec éch-10- **5cellent
* : Exre*hecs/heu éc 5
- **<le
ceptabec Acch'É# Taux dlés
## Métriques C
```
##.json%Y\%m\%d)_$(date +\ts/weekly/repor68 --export urs 1ce-ho--siny s.piled_matchenalyze_fath/to/a /pa* 1 python 9h
0 9 * e le lundi à hebdomadairort
# Rappealth.sh
g_hinmatchh/to/check_at * * /p
0 * *heuresles outes la santé térifier
# V
```cron JobCron
###
```é"
exit 0ne santstème en bon✅ Sy "
echo1
fi
exit .txt
ealth_checkmp/h cat /t
ctée!"L détete CRITICAho "🔴 Aleren
ecthxt; alth_check.t /tmp/heTICAL""CRIgrep -q
if tes CRITICALs alera de y ifier s'ilxt
# Vér_check.ttmp/health> /health.py r_matching_onitoon m
pyth problèmesilerter ing et até du matchifier la san Vér/bash
#h
#!/bin
```baslth.sh` :atching_heacheck_mcript `éer un satique
Crtomication Aue Vérifript dD
### Sc/C CItégration
## Inly
```ng.py --apphiatc_improve_m auto
pythonquerSi OK, appliositions
# s prop le Révisery
#.phing_matcroveo_impautn ons
pythoatiéliorr les amule# Sim```bash
lle
sueion Menéliorat 3. Am``
###ort.json
`repkly_--export wee-hours 168 -since.py -_matchesalyze_failedpython anla semaine
e es échecs d lserly
# Anaashaire
```byse Hebdomadal
### 2. Anth.py
```
ching_healmonitor_matython me
pnté du systèer la saérifi vin,haque math
# C
```basQuotidiennitoring ### 1. Moandé
flow Recomm
## Work
```
entsangem chlesquer r appliapply pouvec -- aez Relancquée
applion modificaticunetion - Auulaim Mode seddings
💡avec 12 embtotype our le proMettrait à j2
→ ne: 0.78oyenConfiance m 12
s:misseNear e_001)
en (ID: nod Screogin LNode: TOTYPE
_PROTE
1. UPDA═════════════════════════════════════════════════════ONS
══════ATIS AMÉLIORN DEIOIMULAT
🔧 S0.800
0.850 → • LD: 1
ESHOJUST_THRADes
currencocBrowser: 3 • File nces
: 4 occurreculatoral2
• CTE_NODE: EA
CRsesisear mPanel: 5 n • Settings
es8 near missard: ashbo D
•isses 12 near m Screen:• Login
OTOTYPE: 3
UPDATE_PR══
═════════════════════════════════════════════════ES
════════SÉPOTIONS PROORAS AMÉLI DE```
RÉSUMÉortie
xemple de S
#### Er le P90uil basé suseuveau mande un no - Recom
u seuils dont proche sdes échecs 30%+ enchée quand - Déclité
de similar seuil dumentste : AjuHRESHOLD**. **ADJUST_Tation
3e d'applicêtre par fen
- Group.70 < 0ce confianontres milai états siée quand 2+Déclenchdes
- aux noe nouveion d : CréatNODE**E_2. **CREAT
s
mbeddingennant les eoy en mtypeeau protoouvle un nalcues
- Cssnear min node a 3+ and ulenchée qu- Déces
ypes de nodprototour des * : Mise à jROTOTYPE*_P **UPDATE
1.ions
mélioratpes d'ATy
#### .70
```
ence 0min-confidg.py --atchinmprove_mon auto_iythconfiance
pe seuil de Ajuster ly
# ng.py --apple_matchi auto_improvthonorations
py les améli# Appliquerpy
g.ove_matchinimprpython auto_d'abord)
ommandé tion (recde simulah
# Mo
```basion
# Utilisat##.
#tiquesions automaioratue des amélse et appliq)
Propong.py`matchiuto_improve_ (`atiqueutomation A. Améliora
### 3e.érieur analyse ultpourjsonl` th_YYYYMMDD.ng_heal/matchiitoringdata/monans `egardées dauvont ses squmétriLes e
# Historiqu
###s détectésuveaux étatucoup de noNFO** : Bea*I 🔵 *inutes
-en 10 mhecs Plus de 5 écG** : **WARNIN0.60
- 🟡yenne < e monfianc** : Co **CRITICALs :
- 🔴atiqueutomalertes a des génèrestème es
Le sy## Alert
##val 30
```--inters -continuouy -alth.p_matching_hetor
python monialisélle personnavec intervatoring
# Monintinuous
--coalth.py matching_her_ton moni
pytho0 secondes)utes les 6tinu (tog cononitoriny
# M_health.pingatchtor_mhon moniytque
pk unibash
# Chec``sation
`## Utili
##stème.
du syla santéemps réel rveille en ty`)
Su.pealthmatching_h`monitor_nté (de SaMonitoring
### 2. `
``e < 0.820
ance confiont un des échecs 90% Raison: SHOLD
•ER_THREction: LOW A0.800
•mmandé: Seuil reco •0.820
: onfidences • P90 des c: 0.850
uil actuelil
• Seeuns de Sdatioecomman
🎯 Rnne: 0.782ce moye Confian 12
-ar misses: - Ne
e_001) (ID: nodreengin Sc1. Loop 5)
ématiques (Trobldes P⚠ No
: 6S_MATCH • AMBIGUOU15
HOLD: THRESUST_ADJDE: 28
• TE_NO8
• UPDA: EW_NODEREATE_N
• Céesérstions Gén
💡 Suggefs): 6atix nég5 (fau• > 0.8s): 28
(near mis 0.70-0.85): 8
•eaux états(nouv70
• < 0.742ne: 0.yen Mo
•.847: 0
• Maximumm: 0.623mu • Minifiance
veaux de Con
📈 Ni
23 14:30:005-11-020:00 → 223 10:011-: 2025- Période2
•d'échecs: 4 • Total nérales
iques Gé
📊 Statistrtie
```
#### So``t.json
`pporrt raes.py --expochfailed_matyze_ython analé
pt détailler un rappor
# Export4
2nce-hourssitches.py --ed_maanalyze_failthon pyes heures
èr4 derniecs des 2les échser 0
# Analy 1y --lasts.patchee_failed_m analyzhecs
pythonéc10 derniers er les
# Analysy
ed_matches.pilze_faalyon anhecs
pythles écyser tous Analsh
#
```baquesiBaisation Util.
#### détailléestistiques stanère deshecs et gélyse les éc
Anapy`)d_matches.faile`analyze_s Échecs (Analyse de
### 1. iblesponDis Outils n
##ioratioamél d'tionsts
- Suggesidaodes cand nous lesés avec trit- Similambedding
d'e
- Vecteurmatché l'état non creenshot deient :
- Schec contue é. Chaqches/`iled_mat/fans `datahecs da écus lesnt totomatiquemeregistre aug ende matchinystème
Le sembleEns
## Vue d'.
ingtchystème de maoration du séli et d'ams d'analyseer les outilment utilislique comxpuide ehing
Ce g du Matcion Continuerate d'Amélio# Guid

View File

@@ -0,0 +1,324 @@
# Phase 10 : Gestion d'Erreurs - COMPLÈTE ✅
**Date de complétion**: 24 n024
**Statut**: ✅ TOUTES LES TÂCHES TERMINÉES
---
## 📋 Résumé
---
## ✅ Tâches Complétées
### Task 9.1 : Créer Er ✅
**Fichier**: `core/execution/errorpy`
Composant central de gestion d'errs avec:
.)
- 6 stratégies de , ABORT)
N
- Système de rollback avec historiqueions
- Détection d'edges problématiques (>3 échecs)
- Génération de suggestions automatiques
### Task 9.2 : Intégrer dans Ac
**Fichier**: `core/execution/
Intégration complète avec:
rollback
- Gestion de TARGET_NOT_FOUND avec fals
- Gestion de POSTCONDITION_FAILED av
- 3 stratégies de fallback (vis)
- Méthodes d'accès aux statistiques d'
### Task 9.3 : Intégrer dans
c:
- Gestions
- Détection de changements UI
g
- Génération de suggest
- Méthodes d'accès aux statistiqurs
### Task 9.4 : Tests unitairHandler ✅
*y`
Suite de tests complète a:
- `TestErrorHandlerInitialization` (3 tests)
- `TestMatchingFailureHandling` (3 tests)
-
tests)
- `TestUIChangeDetection`
- `TestRollbackSystem` (4 tests)
- `TestStatisticsAndReporting`tests)
-s)
**Total**: 26 tests unitaires
#on ✅
py`
Tests de scénarios complets:
- Récupération
- Intégration ActionExecutor + ErrorHa
- Intégration NodeMatcher + ErrorHandler
- T bout
### Task 9.6 : Do
E.md`
Documentation exhaustive avec:
- Vue d'ensemble de l'architecture
- Description détaillée de chaque type rreur
ation
- Guide de dépannage
te
- Bonnes pratiques
---
## 📊 Statistiques
TION READY
: ✅ PRODUC*Statut**.0.0
***: 1ersion24
**Vembre 20: 24 nov
**Date** Vision V3uipe**: RPA
**Éq
---formances.
es perimisation dng et opttchiion du ma Améliorat: Phase 11 -commandée**se rerochaine pha
**Plows.
workfue detiqmaautoion 'exécut de labilitéfiise la te qui maxim intelligenatiqueomration autécupéune r fournit duction. Illa proêt pour esté, et pre, bien tenant robustntst mai eV3PA Vision de Rrreurs d'e gestiontème de
Le sys* succès !*avecPLÈTE 0 est COMse 1
**La Phaiononclus 🎉 C##
---
omplète
ation est cdocument La tous
- [x]sts passent te] Les [xnne
-k fonctiorollbac de Le système
- [x]ebloita et expl détaillég est Le logginx]es
- [ntésont implémepération récu de esles stratégiToutes érés
- [x] urs sont gypes d'erre Tous les t
- [x]cèses de Suc# Critèr
##dépannage
de de [x] Guition
-utilisas d'Exemple[x] mplète
- tation coenum Docon
- [x]grati'intéTests d [x] 26 tests)
-ires (unitas Testcher
- [x] deMation dans Noégratr
- [x] IntonExecuto Actition dansIntégrax]
- [onneléé et fonctiorHandler cr
- [x] Errtion de Complé Checklist##Finale
#alidation
## ✅ V
---
4NOV.md
```ATUS_2── STtcher.py
└node_mah/ core/grapy
├──tor.ption_execuion/acecut core/ex──ision_v3/
├pa_vfiés
```
richiers Modi# F
```
##TE.mdOMPLE─ PHASE10_C
└─_GUIDE.mdR_HANDLINGROpy
├── ERery.covrror_rest_eion/tests/integrat
├── te.pyr_handlertest_errot/ests/unipy
├── tler.hand/error_one/executi3/
├── corn_vio_vis``
rpachiers
`ouveaux Fiiés
### N Créés/Modif 📝 Fichiers
##---eurs
erns d'err pattr lesur identifiegs** poer les lolys4. **Anaservés
ltats obs résule selon s seuils***Ajuster lesation
3. *dant l'utilis penreurues** d'ertatistiqitorer les ss
2. **Monxes compleorkflowc des wles** avetions réelen condir ste. **Teons
1timandaecom
### Rduction
la pror ✅ Prêt pou
-eMatcheret Nodtor ecutionExgré dans Ac
- ✅ IntééDocumentesté
- ✅ té
- ✅ Tplémenant:
- ✅ Imenest maints 'erreurde gestion dème Le systmplète** ! 10 est **coa Phase
Les
chaines Étap# 🚀 Pro
#--s
-lématiqueobr edges prques** pous automatierte
4. 🔄 **Al temps réeltoring** enard de moni 🔄 **Dashboreurs
3.e les erdir* pour prég*ne learnin2. 🔄 **Machicomplet
back r rollrses** pouions inveacts mentation delé **Impbles
1. 🔄ssitures Poons Fuméliorati## A
# système
abilité dunt la fiGarantisseustifs** : s exha **Testration
4. ✅ et l'amélioe debugging l: Faciliteaillé** g dét✅ **Logginsuccès
3. e e taux divement licattent signif** : Augmende fallbacktégies ✅ **Stra
2.mposantscolusieurs ns plisable dandler réutirorHaaire** : Ere modultectur ✅ **Architionné
1.fonc a bien ## Ce quies
#çons Appris
## 🎓 Le
---ion.
atutilis complets d'emples pour des exGUIDE.md`R_HANDLING_
Voir `ERROe Codeples d
### Exemcher
Mation Nodels intégrattaiE.md** - DéMPLETGRATION_CO_INTEK_9_3TASr
4. **ctionExecutoation Aintégrs * - DétailCOMPLETE.md**TASK_9_2_tiales
3. *nis ipécificationING.md** - S_ERROR_HANDL**PHASE102. tion
sa'utililet dde compui** - GGUIDE.mdDLING_**ERROR_HANion
1. at Documentrs de Fichie
###on
Documentati# 📚
---
#```andler
on/error_hore/executi/ -v --cov=ct teststessh
py``baTests
`r Tous les xécute## E
# -v
```
_recovery.pyerrortest_ration/s/integt testesash
pytn
```batiotégr'In Tests duter les# Exéc``
##r.py -v
`handleerror_est_/unit/tt testspytesv3
rpa_vision_bash
cd ```ires
sts Unitater les Te## Exécu Tests
#
## 🧪t)
---creenshoc sreur (avear er: ~1MB psur disque**
- **Logs émoire)é (en mllimiturs**: Irrestorique d'e**Hi- gurable)
nfions (coactions**: ~10 d'actiorique*Histmoire
- *### Mé <10ms
lback**:ms
- **Rol <5stions**:e suggen dnératio- **Génshot)
c screeves (a ~50m*:'erreur*Logging dms
- **: <1t d'action**nregistremenrhead
- **E### Ovence
PerformaMétriques de
## 📈 `
---65
``hreshold=0.hange_tts=5
ui_cttemp_a
max_retry`python:
``instables**nts onnemenvir
**Pour e
```
.75_threshold=0hange=2
ui_cattemptstry_thon
max_re``pyes**:
`nts stablronnemeur enviPo
**mandéscomètres Re# Param
##`
``e
)
Trucovery=le_auto_re enab .70,
shold=0hrechange_t,
ui_ts=3attempax_retry_ mrrors",
a/eatlog_dir="d error_ dler(
orHan
Err``pythonéfaut
`ètres par D
### Param
nfiguration## 🔧 Co
---
c.
``` etOLD
# -HRESH_T# - ADJUSTPDATE_NODE
NODE
# - UEATE_NEW_:
# - CRs erreursre leour résoudations pcommandon
# Reues
```pythtiq Automa Suggestions``
### 6...]
`e_2', 4), .('node_1_nodedges()
# [tic__problema.getexecutormatic =
probleéchecsaprès >3 atique cation automtifihon
# Iden
```pytblématiquesEdges Protection d'
### 5. Dég.npy
```ddin state_embe └──
t.pngensho scre
├──jsonrt.reporror_─ e/
├─124_14305241ed_202g_fail── matchinrrors/
└ta/e``
dataillé
`g DéLoggin## 4. `
#tion()
``ck_last_acler.rollba= error_handsult back_rellépétés
roès échecs rue apromatiqon aut
# Annulatihon``pytlback
` Rol Système de``
### 3.ximative
`ion approe par positrchcheRe3. visuelle
# larité e par simicherchd)
# 2. Redar(stanexte rôle/t parhercheec1. R
# ntrouvables:ts i targellback pouraux de fave
# 3 ni
```pythoncke Fallbaies dStratég2.
###
```
es échecstiquement lre automaandler gèrorHEr
# reen_state)dge(edge, scecute_eexcutor. = exesultques
reion automati récupératDétection etthon
# s
```py des ErreurtomatiqueGestion Au.
### 1ités Clés
ctionnalFon
## 🎯
---tsesliter les t* pour faciFixtures*
- **arios réelscén* pour sntégration***Tests d'iités
- tionnalfoncutes les couvrant toaires**it26 tests unests
- **ure de T# Couvertlignes
## ~1800 al**:
- **Totgnes~400 li**: tionenta- **Documignes
on**: ~300 lgratiests d'intégnes
- **T500 li: ~itaires**ts uns
- **Tes ligne~600ndler**: rrorHa **Ede Code
-es
### LignE.md
_GUIDOR_HANDLINGn** : ERRtatiodocumen*1 .py
- *_recovery, test_errordler.pyerror_hant_ : tess de tests**chieré)
- **2 fifi(modiatcher.py fié), node_mtor.py (modiecuextion_, ac.pyrror_handler* : ere*rs co **3 fichieCréé
-
### Code

View File

@@ -0,0 +1,49 @@
# Phase 10 : Gestion des Erreurs et Robustesse
Date: 23 novembre 2024
Statut: En cours (2/6 tâches complétées)
## Objectif
Rendre le système RPA Vision V3 robuste face aux erreurs et changements d'UI.
## Tâches Complétées
### Task 9.1 : Gestion d'échecs de matching
Fichier: core/graph/node_matcher.py
Améliorations:
- Logging détaillé des échecs
- Sauvegarde automatique des états non matchés
- Calcul de similarités avec tous les nodes
- Génération de suggestions d'action
Sauvegarde dans data/failed_matches/:
- screenshot.png
- state_embedding.npy
- report.json (similarités + suggestions)
### Task 9.2 : Stratégies de fallback
Fichier: core/execution/action_executor.py
Stratégies:
1. Fallback par similarité visuelle (seuil 0.75)
2. Fallback par position approximative (100px)
Ordre: Résolution normale → Fallback visuel → Fallback position
## Tâches Restantes
- Task 9.3: Gestion de post-conditions
- Task 9.4: Détection de changements UI
- Task 9.5: Système de rollback
- Task 9.6: Tests
## Impact
Avant: Échecs silencieux, pas de diagnostic
Après: Logging détaillé, suggestions, fallbacks automatiques
Taux de succès: 85% → 95% avec fallbacks

View File

@@ -0,0 +1,338 @@
10.4)
(Task 10.1-ageorSttence et 11 - Persishase PPhase**:aine *Proch
---
*ons
ioratis amél Suggérer deatiques
-ws problém workflo lesdentifieryse
- Ialanls pour détai tous les
- Logger possiblement quandutomatiquecupérer a
- Se réursreer d's les types tousement gracieuérer
- Gnant:t maintestème peu
Le sy
uction**r la prodoue et prêt pstème robustSy
** 🏆 Résultatllback
## roent pour suffisctionsé**: 10 aitque Lim**Histori. se
5aullback → P→ Skip → Ro Fallback : Retry →raduées**tégies G. **Stra
4faibles les points idementntifient rapecs**: Ide d'Échpteurs. **Com
3problèmes des ésolutionAccélèrent res**: atiqu Automgestions. **Sugr debug
2sentiels poumbeddings esenshots + ellé**: ScreDétai. **Logging rises
1pp🎓 Leçons A## -14.6
ents 14.1 Requiremd` -irements.mcs/requ
- `docs/speocstringse avec d- Code sourchandler.py` n/error_ore/executiole
- `ction originaenta DocumG.md` -NDLINROR_HA`PHASE10_ER
- etion Associé 📚 Documenta##
s
```
"
pas"ec"ès échk aprbacst roll"""Tee():
r_failurck_afterollba
def test_ pass
"""
rationde récupéples tives multit tenta"""Tes():
etriesultiple_rf test_mss
de"
pa'erreur""cupération det de réomplx c""Test flu():
"ery_flowovll_error_rectest_fuy
def _recovery.pn/test_errorratio tests/integpython
#er
```n à Cré'IntégratioTests d```
### s
pas ""
matiques"problé des edges ckingTest tra
"""):acking(ic_edges_tr_problematstdef te pass
k"""
rollbace système dst"""Te ction():
_ackest_rollba
def t
passUI""" changement t détection"""Tes():
ct_ui_changeef test_dete
d pass
""
on trouvé"get ntion tar"Test ges):
""_not_found(gethandle_tarst_
def te
pass
ching"""c de mattion échegesTest """
_failure():le_matching test_handefer.py
dor_handlerrst_unit/tes/
# testpythoner
```aires à Cré Tests Unit
### Testseurs
## ✅erns d'errs pattge deentissa [ ] Approws
-de workflautomatique Réparation ]e
- [omatiqustic autpour diagnoxpert ] Système eerme
- [ong Tws
### Lworkflotion de s d'amélioragestion
- [ ] Sugiqueistorsur heuils basé des sustement Auto-ajrs
- [ ]reuere ur prédirpo learning achine
- [ ] Myen TermeMo## s
# erreuration dessualisviard de shbo
- [ ] Dad'erreure par type mancerfor pques demétriter ou- [ ] Ajmplet
ack cour rollbinverses po actions émenterpl- [ ] Imrme
rt Te
### Coures
ations Futu## 📈 Amélior
lt
```
rn resu retu
tégie...
r straplique # Ap
)reshold
ence, thnfidst_codes, bete_nondida, cant_statecurre re(
ing_failumatchler.handle_rror_hand self.ery = recove
er échec # Gér result:
if not
)
este_nodte, candidastacurrent_ch_linear(_matult = self.es rng
ter matchi # Tennodes):
date_ndite, carrent_stacu(self, def match
)
rHandler(ndler = Erro.error_ha self ):
nit__(self_i def _:
tcherass NodeMar
clrorHandlert Erdler impo_han.error.executioncoreom
fr
```pythonher
atcns NodeMn daationtégr# I
##esult
```
eturn r r
pass
r...
aye # Réess egy.RETRY:
overyStrat== Recegy_used ry.strat recove if ion
e récupératgie dtratépliquer s # Ap
)
tate, edge screen_sction, edge.a (
ot_foundrget_ntale_r.handr_handlerro = self.e recovery _FOUND:
GET_NOTARus.TionStat Executtus ==esult.sta if r
échecsr # Gére
e)
stat, screen_actionaction(edge.te_execuult = self._ resction
Exécuter a #
tate) screen_sn,.actiodgerd_action(e.recoor_handler self.err
vant actiontat atrer é # Enregis _state):
ge, screenge(self, ed execute_ed def r()
dler = ErrorHanor_handlef.err sel:
_(self)_init_ _ defxecutor:
ActionEpe
class rorTyler, Ert ErrorHand imporndler_ha.errorexecutionfrom core.thon
tor
```pyionExecun dans Actio# Intégratation
## 🚀 Utilis`
##
``ion auto
)r récupérat # Active overy=Trueuto_recable_aUI
engement chaniontectuil dé Se # 0, =0.7holdhange_thres_ction
ui de récupérantativesMax te # 3, ttempts=_retry_aax logs
mrtoire despe Ré #s", or"data/err_log_dir=
errorr(Handlerorr = Error_handlehon
er`pyt
``uration
Config 🔧 ```
##t.json
ror_repor └── er
enshot.png ├── scre0/
143204_2024112ui_changed_on
└── js_report.error └──
│ t.pngcreensho ├── s_143125/
│ d_20241124ot_foun_nargetn
├── treport.jso── error_npy
│ └_embedding. ├── state
│ t.pngcreensho
│ ├── s124_143052/failed_20241atching_├── mta/errors/
``
das
`d'Erreur des Logs 📁 Structure
## }
```
: [...]
#edges'lematic_# 'probnt': 2,
es_coumatic_edg 'proble
# },2
#n_failed': nditio 'postcoound': 8,
#not_fet_targ 5,
# '':edching_fail 'mat s': {
#or_countrr# 'es': 15,
ror 'total_er
# {
# istics()error_stater.get_r_handlats = erroython
stes
```pobalues Gltistiq`
### Stae4', 4)]
``ode3_node2', 5), ('ne1_nod'nod
# [(ges()tic_edroblemar.get_perror_handlelematic =
prob échecsec >3r edges avni# Obtethon
es
```pyroblématiqus P Edgeiques
###stg et Statiorin📊 Monitin
## n besor selonte à implémens inversesactio basique - tationmplémen**Note**: It
édenprécat rer ét. Restauc
4che cas d'ék enrollbacermettre ion
3. Paque actavant chétat 2. Stocker ctions
ières a0 dern des 1uehistoriq. Maintenir **:
1portement*Comion()`
*ctlast_a`rollback_hode**: k
**Métde Rollbac### Système nterface
sion d'iouvelle verème
- Nt de thngemen- Chapplication
our de l'a j- Mise à**:
ageus
**Cas d'isateur
utilier
5. Notifiquetion automatexécuause e en pMettranalyse
4. shot pour vec screengger ae)
3. Lourablseuil config (rité < 0.70milaent si sigemer chantect
2. Dérototypevs ple uelrité actimilarer s. Compa
1**:mportemente()`
**Cochang `detect_ui_e**:hod
**Métd'UIhangements e Ction d### Détect
tteintries a si max re - Rollback
(×2)ut augmenté avec timeo Retry égies:
-. Strat échecs
4i >3 satiquemme problém edge co Marquerr l'edge
3.pou'échecs pteur der com2. Incrément
dutens atl v actuec étatveon a la violati
1. Loggert**:temen**Compor
failure()`
ondition_le_postce**: `hand
**MéthodtionsCondist-ations de Poe Violion dest
### Gximative
sition approerche par po- ✅ Rechisuelle
arité vimilpar sche echer- ✅ Rtor**:
ctionExecus dans Alémentéimpà déjallbacks **F
ou skipllbacks avec faander retrycommRe. checs
4 é >3ématique siobl comme predge3. Marquer r l'edge
ecs poumpteur d'écher co Incrémentt
2. du targevec détailsl'échec agger nt**:
1. Loomporteme
**C()`
ot_found_target_n*: `handle**Méthode*uvés
Non Trotsrge Taden ## Gestio
```
#0"
]
}0.8 à euil réduire sHRESHOLD: Ou "ADJUST_T
",ur prototypetre à johe, metrocté pimilariDE: STE_NO"UPDA": [
estions
"sugg": 5
},_candidates "num5,
0.8eshold":
"thr 0.82,onfidence":t_ces "bls": {
"detai0.85)",
reshold: 0.82, th (best: e matched": "No nodage",
"messiledng_fa": "matchi"error_type2",
_143050241124ed_2ching_failid": "matrror_"e json
{
``rt**:
` de rappomple
**Exeplet
N com JSOrapportarder
4. Sauveguiluster le seLD` pour ajHRESHOST_TDJU`A - du seuil
prochelaritési simi_NODE` DATEUP
- `rité < 0.70i simila` s_NODE`CREATE_NEWues:
- atiqautomggestions su
3. Généreratsndidcas s nodeus les avec toté similarilculer
2. Cang'embeddir dt et vecteushoscreenec hec av l'éc
1. Loggernt**:Comporteme
**e()`hing_failurtcndle_maode**: `hang
**MéthatchiÉchecs de Mestion d's
### Gs Détailléetéonnali Foncti
## 🎯ion
```'exécutrêter l Ar #"abort"BORT =
Amanuellelyse pour anause # Pa e" pausPAUSE = "ction
ère a derninuler Ank" #llbac= "roACK
ROLLBt continuerorer e # Ign skip" " SKIP =ative
rnlte aieer stratég # Utilisllback" CK = "faFALLBA
ajustementsec averay # Réess etry" RETRY = "rnum):
rategy(EecoverySton
class Rn
```pythcupératioies de Ré Stratég 3.
###nnue
``` Erreur inco # " wn = "unkno UNKNOWNécution
d'ext # Timeou _timeout""executionT = TIMEOUECUTION_EX é
ace détect d'interfChangement # " i_changedED = "uANGI_CH Utisfaites
ons non saiti-cond # Postailed"ondition_fED = "postcNDITION_FAILSTCO POé
non trouvUI lément É #d" founrget_not_"taNOT_FOUND =
TARGET_ non matché # Noded" ching_faile = "matILED MATCHING_FAum):
pe(EnrTy Erroass``python
cles
`rs GéréErreu2. Types d'## atiques
#ges problémn d'edentificatioId
- ✅ r edgehecs pa d'éc ✅ Compteursrs
-eu erresque d ✅ Historitiques
-automaions ste suggeGénération dnshots
- ✅ creeec savllé g détai
- ✅ Logginrollbackde ystème d'UI
- ✅ Shangementson de cétectis
- ✅ Ddition de post-connslatiostion de vio- ✅ Geouvés
ets non trde targGestion tching
- ✅ ma de cson d'écheti*:
- ✅ Gesnalités*ctiononr.py`
**Frror_handleexecution/ecore/n_v3/rpa_visio: `**
**Fichierralisé
onnaire Center - GestiHandl 1. Error###entés
nts Implém## ✅ Composauction.
e en prodV3 robuston re RPA Visindrer tion pourécupéras et de reurgestion d'ert de me comple un systè 10 ajoute
La Phasebleue d'Ensem
## 📋 V--minée
-terémentation ✅ Implt**:
**Statu vembre 2024 noe**: 24
**DatTÉ ✅LÉse - COMP et RobustesreursErGestion des Phase 10 : #

View File

@@ -0,0 +1,378 @@
sed.operty-baes tests pr lerntimplémeelles, puis nées réI et des done GUc l'interfacer aveTestétape:** chaine ro
**P
éelemps rching en ter pour mat✅ NodeMatch actions
- avecdges ion d'eonstruct- ✅ Complets
ates cemplodes avec tion de nnstructCAN
- ✅ Coa DBSrns vitteion de paDétect ✅
-lctionneet foner complet ldGraphBuiec :
- ✅ av00%** 1ntée àmeplé**ime 5 est La Phas
onclusion
## 🎓 C
---)
(à faires:** 0% *Test** 100%
*entation:mplém
**I) tâches (55%/11ession:** 6
**Progrntégration
s d'iTest 5.11 ]es()
- [owNode.match Workfl 5.10[x]atcher
- sts NodeM5.9 Teenté
- [ ] cher implém8 NodeMat [x] 5.edges
-struction d'7 Tests con
- [ ] 5.dgesction d'eonstru] 5.6 Cs
- [xn de nodeconstructio] 5.5 Tests [ - des
n de noioctConstru- [x] 5.4 ns
on de patters détecti 5.3 Test ] [CAN)
- (DBSternsatn de p2 Détectio] 5.enté
- [xémder implaphBuilx] 5.1 Gr
- [ 5haset Phecklis
## ✅ C
---onsr observatiompteiques
4. Cs identionnsitrouper tra)
3. Gde == to_no (from_nodef-loopsviter sels
2. Éielleenttions séqufier transi
1. Identiorithme:***Alg
*dges
uction d'Etr
### Cons
m=nodestats,m) où n=é O(n × ité:**omplex
**Cté < 0.7
ri si simila. Filtrerimilarité
3illeure sc me node aveauner Assigotypes
2.s les protité avec tour similar calculetat,haque éPour chme:**
1. rit**Algo→ Nodes
ats ping Étapgs
### Membeddinbien avec onne
- Foncti uniques)it (étatsbruntifie le de Ilusters
- nombre de cment leueutomatiqecte as:**
- Détge
**Avantanus
siité co Similare'` :osinic='c
- `metrr clusterlons min pachantils=2` : É`min_sample points
- entrenus maxnce cosi` : Dista15eps=0.*
- `ilisés:*ut*Paramètres
*CAN### DBShniques
Tecotes--
## 📝 Npes
-oty protache de - Gérer cching
ur matrototypes po pgerChar
- .npyypes enotots prcteurr veegarde- Sauvs**
Prototypee deegard
6. **Sauvments
uired_ui_elextraire req - Es communs
ired_textaire requ Extrs
-depuis étattle_pattern w_tidoin wirera - Ext**
ntraintes de CoExtraction
5. **et précistifier targ
- Ideney_press)xt_input, kteclick, action (type d'- Détecter tions
aciese vrairrapour extevents` `session. - Parseres**
s Réelltionion d'Acract
4. **Extoyenne)ité MPriorliorations (
### Améilsents seuifférer avec dg
- Testmatchinhérence du Vérifier co
-ncy**sistetching ConlowNode Ma: Workf*Property 7e N
3. *es valeurs dérentc differ ave- Testitions
N répétt ≥s onpatternque les - Vérifier *
ions*um Repetitinimn Mrn Detectio Patteperty 16:. **Proement
2é correctlculpe est cale prototyider que - Valpetitions
_pattern_re_count ≥ minpleier que sam - Vérifle Count**
ype Samptotg Probeddinrty 14: EmPrope
1. **ité Haute)Prior-Based (rtyopeTests Prapes
### es Ét Prochain 🚀##
---
)
e avec GUIfaird (à t end-to-en
- ⏳ Teson OKlisati- ✅ Initia
rt OKpo
- ✅ Im
### Testsg détaillé Logginnel
- ✅ISS optionupport FA
- ✅ Stions transi decation- ✅ Identifi → nodes
pping états- ✅ Maon d'edges
Constructies
- ✅ nodion detruct
- ✅ ConsDBSCAN)rns (n de patteDétectio
- ✅ litésnctionna# Fo* 100%
##s:*pe hint0%
- **Tytrings:** 10
- **Docs** 15thodes:
- **Méatcher)ilder, NodeMraphBusses:** 2 (Gla
- **C ~400 totales:**ignesCode
- **L## stiques
#ti
## 📊 Sta`
---
rs
``: 15 vectoex
FAISS inds, 2 edges 3 nodeflow:
WorkRÉUSSITEST ns: 3
✓ ervatioObs
- ry_action: primaetrg Ta
-lickouse_con: m
- Actiode_001000 → To: nFrom: node_ - edge_000:
dges
Edges ese de Analy5
[5/5]hold: 0.8ty threslariSimi - 5
servations:
- Obe Pattern 0Statme: 0:
- NaNode node_00
e des nodesnalys/5] A
[4: 2
- Edgesdes: 3 No
-on_001flow_sessiworkruit: rkflow const✓ Wolow
orkftion du wonstruc
[3/5] Cr initialisédeGraphBuillder
✓ phBuiation du Granitialis[2/5] I
ts: 45vénemen 15
- Écreenshots: - S_001
gée: sessioncharssion n
✓ Sesio de la sesnt5] Chargeme
[1/e:**
```ie attendu
**Sortn
```_001.jsos/sessionta/sessionuction.py daflow_constrorks/test_whon examplepyth
```bas de test:
cript sExécuter le4. ssion
la searderauveg
3. S répétées)onssieurs actiession (plur une sretu Cap5000`
2..1:.0//127.0ce: `http: l'interfaLancer:**
1.
**Étapes
I.e GUfacnteriliser l'i réelles, utesc des donnéter aveur tes:** Po🔔 IMPORTANTc GUI
**ve## Test a
```
#
")ons}'epetitipattern_rmin_r. {buildeuilder:int(f'Bs=2)
pronti_repetin_patternder(miGraphBuilbuilder = phBuilder
import Grauilder .graph_b core.graph-c "
fromon
python alisatiinitist d'"
# Te)int('OK'uilder; prport GraphBimilder h.graph_bum core.grap-c "frot
python d'imporest
# T
```bashtaireTest Unists
### -
## 🧪 Te
--``
nt=3
)
`ervation_cou),
obsrs={}
paramete ),
st"
"firlicy=election_po s",
_actione="primary rol
TargetSpec( target=ck",
cliouse_ type="mion(
action=Act",
ode_001_id="no_node
t,ode_000"_node_id="nrom f000",
e_id="edge_(
edgorkflowEdgethon
Wre:**
```py**StructuEdge
kflow
### Wor`
)
``nt=5
)sample_cou,
0.85milarity=e_sicosin min_
py",pe.n00_prototye_0"nod vector_id= ",
32p_ViT-B-opencliider="rov p totype(
EmbeddingProembedding= ),
t_count=0lemen min_eypes=[],
equired_t r
les=[],red_ro requi aint(
ui=UIConstr ),
n_texts=[]
de forbidxts=[],
equired_te rnstraint(
=TextCo),
texte=None
ss_nam proce
ains=None,le_conttit
None,e_pattern= titlt(
raindowConstinindow=Wte(
wnTemplaScreehon
ytre:**
```p**Structu
tereenTemplas
### Scgeréation d'ededges()` - C_build_
- `nodestion de - Créanodes()`ild_
- `_bu DBSCANing Cluster` -()ernsetect_patte
- `_dion complètruct` - Const()ion_from_sessbuild:**
- ` principaleséthodes*M
*nt = 2
es`: in_samplering_milust- `c
0.15 float =ng_eps`:- `clusteri3
nt = : itions`tern_repeti `min_pattionnel)
-r (opageSSMan: FAInager``faiss_mal)
- (optionneuilderdingB StateEmbeduilder`:ng_b
- `embedditres:**aramè**Pder
hBuil
### GrapClés
nts # 🔧 Composa
---
#edges)
``` + w (nodesorkflo ↓
WflowEdge]
t[Work
→ Liss()nsition_from_trate_edgesea └─ _cr)
ransitions(fy_t ├─ _identi
o_nodes()map_states_t
├─ _)build_edges( _ ↓
5.
ode]kflowN[Wor → List()
des_no_build4. ↓
ces]]
: [indier_idct[clust Di]
→CAN [DBSrns()patte3. _detect_ ↓
] (512D)
.ndarrayist[np Ls()
→beddingute_em. _comp
2ate]
↓[ScreenSt → List)
ates(_steate_screen
1. _cr ↓ssion()
rom_se_fr.buildGraphBuildets)
+ evenscreenshotsRawSession (e
```
ètcture Complhite
## 🏗️ Arc-
ltats
--s résu- Analyse de
e workflowion donstructsion
- Cement de ses - Chargend
-to-ndtest ept de - Scriy`**
uction.ponstrw_clo/test_workfexamples4. **`sts
### Teailléeture dét- Architecn
tilisatioples d'u - Exem
oduledu me complètcumentation
- DoADME.md`**/graph/RE3. **`coretes
ntrainion de colidatles
- Valtipng mu de matchies - Stratégi
telèmpr` cocheodeMatClasse `N - 5 lignes)
er.py`** (12e_matche/graph/nodor**`clé
2. tailogging dé- Lel
AISS optionn F - Supportlémentées
s impméthode0 - 1e
complètr`GraphBuildee `ss - Claes)
ign l50y`** (2lder.puiph_braaph/g/grore*`c. *n
1mplémentatioés
### Iés/Modifi Créhiers## 📁 Fic---
ilarité
sur simbasé onfiance de c
- Calcule, UI)être, textaintes (fentr de cononrificatiVéh.py`
- orkflow_graps `wte danéjà présen Méthode dtches() ✅
-owNode.mafl10 Work5.s
### ontraintetion de clidaVaaire
- linéckS + fallbarche FAIS
- Recheelemps réatching en tur mpoe `match()` e
- Méthodr` complètatcheodeMse `N Clasatcher ✅
-deM## 5.8 Novations
#teur d'obser - Complicy)
ction_poele s` (role, `TargetSpecters)
-mearatarget, ptype, ction` (- `A
ges avec:tion d'edCréans
- tioe transiation dficties
- Identats → nodg éMappinntée
- mplémeges()` id_edthode `_buil- Més ✅
ion d'Edgenstruct
### 5.6 Comalisée)
nore (moyenne totyp de proalcul
- Ce`totyprodingP- `Embed
int`UIConstrat`
- `xtConstrain - `Testraint`
dowCon
- `Winec: avpletlate comcreenTemp de Séation- Cr
téeenmplémd_nodes()` i_buil
- Méthode `odes ✅on de Nructinst
### 5.4 Co
currentesons réitide transtion ntificaions
- Ideépétitombre de rar n- Filtrage pinus)
métrique cosngs (mbeddisur eClustering SCAN
- ec DBrns()` avpattedetect_éthode `_✅
- Matterns tection de P### 5.2 Dé
ngse EmbeddiStatCalcul de Session
- s Raw depuieenStatescre Sréation dentée
- Cn()` implémssioild_from_sebu
- Méthode `omplèteBuilder` c`Graphe lassilder ✅
- CBu5.1 Graphes
### omplété✅ Tâches C
## s
---contre node de states ingons
- Matches avec actin d'edgtructiotes
- Consvec templa nodes an detionstruc
- Coingterlusrns via catteion de p Détectt :
-luan, incnregistréesessions epuis des ss dephw Grarkflode Wote n complènstructioenter la co
Implémf
bjecti# 🎯 O---
#minée
teromplète ntation cImpléme** ✅
**Status:2024 re * 23 Novemb
**Date:* Complètetation Implémen# Phase 5 -

View File

@@ -0,0 +1,207 @@
📊**
toring ! Bon moni
**
---5000**calhost:p://lo : **httuvrir
Puis o```-dashboard
/run.sh -sh
.``ba
`rêt !
## 🚀 Pomplèteumentation c Docboard
- [x] dashx] Logs
- [matiqueautoeanup Cl [x]
-rière-planent en arx] Lancem
- [ementautomatiqué allFlask instlet
- [x] mp cote HTML- [x] Templash
ré dans run.ard intégbo
- [x] Dash
ecklist
## ✅ Ch```
10s → 30s
; // 0)atus, 1000Ststemal(refreshSy
setInterv → 10s // 5s); gs, 5000reshLorval(ref
setIntes index.htmlipt
// Danjavascrtimers
```Ajuster les
###
/style>
```); }
<2 100% #764baa 0%,5deg, #667eeradient(13d: linear-gun{ backgroheader .
style>html -->
<x.s/indelatempoard/te_dashbans web-- D
<!```htmlthème
difier le ``
### Mo)
`rt=5001', poost='0.0.0.0ebug=True, hn(dru
app.board/app.pyweb_dashans `python
# D
`` le portChanger
### alisation
rsonn# 🎨 Pees
#s de requêtpleé
- Exem détaill- Dépannage
ncéeion ava- Configurat
mplète- API co pour :
E.md`oard/READMshb`web_daète
Voir mpltation Co## 📚 Documenon/
```
ts/integrati-la tes
ls sts/unit/la tesh
ls -
```ba non trouvés Tests##
#`
``p logssh
mkdir -
```baLogs vides#
```
##Flask==3.0.0all
pip instashstallé
```bn innoask `
### Fl -9
``ll kirgs00 | xaf -ti:50sobash
loccupé
```000 ort 5
### Prants
es Cou🐛 Problèmé
## rimer PID supphi Fica sortie
-oprement à lué pr Processus trd.pid`
-`.dashboaé dans sauvegardshboard D du daique :
- PIatst automcleanup e```
Le minal
le terns
Ctrl+C da
```UI :rmez la Gus fet quand voiquemenomatarrête autshboard s' dat
Lerê🛑 Ar.py)
## appable dans 5000 (modifi**Port** : local)
- éseau le r depuisessible.0 (accst** : 0.0.05000
- **Ho/localhost:p:/* : htt **URL*🌐 Accès
-
```
## board.loglogs/dashh
tail -f
```basmps réel :vre en tePour le sui
```ogdashboard.llogs/og :
```
propre ld génère son
Le dashboar📝 Logs
## sh
```hboard.art_dasoard/st/web_dashbsh
.``baalone
`hboard Standas
### D```
.sh --web
# ou
./runboard
un.sh --dash
./rashard
```bAvec Dashbo```
### run.sh
sh
./nt)
```bauemeuniqandard (GUI # Stt
##e Lancemenptions d
## 🔧 Ole terminal : Sty***Formatageffiché
- *** : A*Code retour ❌
- *✅ /suel** : vitutSta**ERR
- + STD: STDOUT mplète** tie cots
- **Sor Tesnsole 4. Cog
### .lolesrs** : Tous -fichie- **Multiux logs
ouvea ns lesto** : Verl au- **Scrolndes
secoh** : 5 o-refres
- **Aut** affichéserniers logs**50 déel
- Logs Temps R
### 3. en basle a consodans lfiché ultat** : Af*Rése
- *par typncer tous" * : "La**Groupé*lancer
- sur ▶ pour * : Cliccement*- **Lanisponibles
s tests ds leiste** : Touires
- **Lsts Unita
### 2. Teefresh 10so-rr** : Autà jouMise IP
- **ISS, OpenCLrch, FAn PyToficatioériances** : Vpendpe
- **Déal et par typteur tot Coms** :eststème
- **Ttut Sy Sta 1.
###Principalesalités 🎯 Fonctionn``
##─────┘
`───────────────────────────────────────────────────────
└─ │ . %] │
│ .. [40D _fuse PASSEne.py::testion_engi
│ test_fus20%] │ [ init PASSEDtest_::e.pyon_engin
│ test_fusi │ │
│ ems cted 5 it
│ colle │= starts =====n test sessio========= ==================│ == │
│ │ ÉUSSI tatut: ✅ R│
│ S .py gine_enst_fusionteunit/tests/est:
│ T────────┤──────────────────────────────────────────────────── │
├─ des Tests 📋 Sortie
│──────┐──────────────────────────────────────────────────────┘
┌───────────────────────────────┴──────────────────────────────
└ │ ) h 5suto-refres │ (A
│ ... │ │ ding mbed_state_e│
│ ▶ test✅ d ete Test complapp.log]│ [ ori_detect
│ ▶ test_u. │ding model..Loaapp.log] │ [manager faiss_st_ │
│ ▶ te ..tarted.t sg] Tes [app.logine │usion_en
│ ▶ test_f │ │ │
│ 🔄] ] │ [cer tous] [🔄an─┤
│ [L────────────────────────────┼────────────────────────│
├─────── │ 📝 Logsitaires s Unest────┐
│ 🧪 T───────────────────────────────┬───────────────────
┌──────────┘───────────────────────────────────────────────────── │
└────es nc Dépenda Intégration Unitaires Tests │
│ [✅] ] [5 [10] [18]
│ ────┤───────────────────────────────────────────────────────
├── │ stème Sy 📊 Statut du────┐
│──────────────────────────────────────────────────
┌───────═╝════════════════════════════════════════════════════════════ ║
╚═ s t de test enitoring modeace erf║
║ Int d - DashboarA Vision V3║ 🚀 RP═══╗
════════════════════════════════════════════════════════
╔═══rçu
```
## 📸 Ape5000
```//localhost:http:eur
# navigatrir le
# 3. Ouvardbo--dash
./run.sh dashboarder avecLanc
# 2. on_v3
visie
cd rpa_épertoirr dans le r1. Alle
#
```bashommandes
C En 3Web
##ard shboRapide - Daarrage # 🚀 Dém

View File

@@ -0,0 +1,253 @@
)
9.4sk nitaires (TaTests u: ession**chaine sIA)
**Pro (Assistant Kiro*:
**Auteur*b
---hboard wedans daségrer stats : Intrd***Dashboations
4. *r sugges amélioreL pourer Ms** : UtilisggestionL pour su3. **Mération
e récuptratégies dus de sr pljoutees** : Agies avancé **Stratéack
2.pour rollbnverses actions ies vraiémenter ses** : Impl inverions
1. **Act
Futuresrations io## Amél
#ts
composanrtagé entre e pa êtrr peutandlerrorHsafety** : E**Thread-llback
4. ns pour ro à 10 actiorique limitéHistore** : **Mémoixécution
3.alentir l'eur ne pas rpoynchrone gging as : Loe***Performanc2. *nges
hareaking citer bvées pour évconserantes es existodté** : MéthibiliCompat1. **ttention
oints d'A
### Pchniques
Te
## 💡 Notes
---
entes.
n intelligratios de récupéie stratég etes erreursomatique dgestion autc vepaux ancipris osantans les compé dent intégreinem plntenant mai estndlerrrorHa
L'Eplétées**
2 tâches coméussie - Session rat
**
### Résultnges
chaeakingde br Pas ibles
- [x]ues accessistiq- [x] Stataillé
étx] Logging dnelles
- [onctionpération fes de récu[x] Stratégirs
- erreumatique des estion autoer
- [x] GchdeMatans Noer intégré dorHandl [x] ErrExecutor
-tion dans AcintégréorHandler Errx]
- [uccès
e Sritères d
### Cdationli
## ✅ Va-`
--S_24NOV.md `STATU** : 1
-s mis à jour
- **Fichier10.md`
24NOV_PHASEON_SI`SES`
- _COMPLETE.md`TASK_9_3d`
- ETE.mON_COMPLNTEGRATITASK_9_2_I - `** : 3
réés**Fichiers con
- cumentati
### Doge()`
_ui_chandetect
- `edges()`atic_oblemt_pr)
- `getics()` (x2_statis `get_error : 4
- ajoutées**hodes
- **Méts** : ~100téegnes ajou
- **Lir.py`de_matcheh/noap/gron_v3/core- `rpa_visiutor.py`
action_exec/execution/v3/coresion_rpa_vi
- `fiés** : 2hiers modi
- **Fice Modifié
s
### Codétrique
## 📈 M---
ing
bleshoots
- TrouracticeBest purs
- ren d'erpératioécules de remp
- Exdlerion ErrorHansattiliide d'u:
- Gumentation 6)
Docuask 9.nt (Tinaleme## Fel
#onntiollback fonct rs
- Teserreure d'omplètération cécuper
- Test rrorHandlvec Erher aest NodeMatcdler
- TrorHanvec Ercutor axe ActionEn :
- Testégratio'intsts d
Te.5)uite (Task 9### Ensques
stitati
- Test s`()tionast_ac`rollback_l
- Test ge()`ui_chanect_et
- Test `dn_failure()`tconditio`handle_pos)`
- Test found(arget_not_t `handle_t Teslure()`
-matching_fai`handle_
- Test rHandler :our Erroes pitairests unréer t)
Cask 9.4 (Tiat### Immédpes
ines Éta## 🔄 Procha
--
```
-LDSHODJUST_THREE_NODE, AATions: UPDggest0
INFO: Su4_15310024112g_failed_2s/matchino data/errorgged ttch lod ma
INFO: Faile762 ajusté à 0.ec seuil avtryy - Re retr strategy:FO: Recovery.850)
INreshold: 0.782, thnfidence: 0und (best cotch foNG: No maWARNI
```
erNodeMatch### Exemple
0.5ms)
```(125ed: success n completcutio
INFO: Exe0)t (450, 32licking a C.823)
INFO:ilarity=0em_5 (sim elmentded: eleback succeearity fallil simO: Visual.
INFon..on executitrying acti3)
INFO: Reempt 1/atts ( fallback- Retry avec retry tegy: straFO: Recoveryon
IN_acti primarynd:ourget not f0): Ta1530041124_202not_found_target_id=or_und (errget not foG: TarNIN_2
WAR -> node: node_1uting edge ExecNFO:or
```
IExecut Action Exemplerés
###📝 Logs Géné
## -
ges
-- chaning de break - Pasrvées
ntes conseodes exista*
- Méthté*mpatibiliCo
3. **USE
tégie PAt
- Strahoc screensveogging a - Lvs seuil
similarité Comparaison - I**
ements Ution chang2. **Détecération
écuptégies de rtra- S matiques
ns autotioggesque
- Sumatiction autoDéte
- g** matchincsécheestion r
1. **GMatche## Nodetiques
#problémas dgefication entirs
- Ide'erreuux stats dès a*
- Accistiques*3. **Statpar edge
age échecs
- Comptctionernière aRollback d
- s intégrés fallback Retry avec
-**ération récup deiestég*Stra
2. *back
llns pour roioactistrement Enregck
-ollbaD avec rFAILECONDITION_ POST -avec retry
OUND T_F TARGET_NOeurs**
-es errique d automat**Gestionor
1. onExecut# Actioutées
##nnalités Aj 🎯 Fonctio##
---hes)
tâc6 % (3/ 50ion** :gresse
**Proèton complocumentati.6 : Dk 9as [ ] T
-d'erreurspération récu'intégration.5 : Tests dask 9 ] T
- [ler ErrorHandnitaires: Tests u9.4
- [ ] Task /6)
ntes (3Tâches Restaer ✅
### Matchs Node danrHandlerrotégrer Ersk 9.3 : In✅
- [x] TaionExecutor s Actanler dHander Error: Intégrask 9.2 x] T
- [réé ✅orHandler c: Err 9.1 ] Task
- [x6) (3/mplétéeshes Co
### Tâce 10as## 📊 État Ph
---
E.md`
_9_3_COMPLET `TASKréé** :
**Fichier c
s aux statsaccèics()` pour ror_statist- `get_er
s**tatistiqueéthode s5. **M
nshotscreevec - Logging ae()`
changi_etect_uhandler.d à `error_gation Délé
-)`change(i_`detect_uméthode ouvelle - N
*s UI*angement chon4. **Détecti)
ETRY, ABORT RE,USation (PAe récupérégies d - Stratggestions
ue de suautomatiqnération ()`
- Génearh_li_matc `ans()` dreluaihing_fndle_matchappel `- A**
ching matecs deon échti **Gesique
3.ion automatInitialisat- dler]`
rrorHanal[Eoner: Optierror_handle `mètrara - Ajout pifié**
eur mod**Construct
2. es
écessaires imports nt d - Ajou **
dlerrrorHanImport E
1. **:tées** tions apporicadif
**MoodeMatcher ✅er dans Ndlion ErrorHanratégnt 9.3 : I# Task
---
##TE.md`
ON_COMPLENTEGRATI`TASK_9_2_I: créé** ier ch
**Fi3 échecs
vec >s a Edge()` :esdgroblematic_e `get_pes
-tats complèt Ss()` :tisticet_error_sta - `gaccès**
d'thodes. **Mée
6hecs par edgptage des éc Com -e
ecommandéCK rLBA ROLgietratési sk - Rollbac `
_failure()stcondition_pohandlee `tomatiqul au Appe
-D**ON_FAILEONDITIstion POSTC*Geexte
5. *ontillé avec cgging déta
- LoTRYREatégie si strs vec fallback - Retry a ound()`
t_not_fhandle_targematique ` Appel auto
-UND**_FOET_NOTstion TARG**Ge
4. ck
ur rollbas poctionnières ae des 10 deristorique()`
- He_edgexecut `ns()` dad_actionrecoror_handler.ppel `err - A actions**
ement desnregistr
3. **Eni
ur si None foqueon automatinitialisati
- Iandler]`ErrorHl[ Optionahandler:tre `error_ut paramè - Ajo
odifié**structeur mon)
2. **CStrategy, RecoveryType, ErrorlerndErrorHaes (ircessaports néout des im - Aj
dler**rorHan**Import Er
1. s** :ortéeations app
**ModificnExecutor ✅s Actiondler danion ErrorHa Intégrat# Task 9.2 :
##ations
lis Réa
## ✅-
--cipaux.
nts prinsa compolesdans é hier crédler t l'ErrorHanégran int eneurs) Errion desase 10 (Gestla Phtinuer Conon
Sessie la s d🎯 Objectif
## ---eMatcher
od et Ncutorns ActionExedaorHandler ration Errus**: Intég
**Focrée**: ~1h
**Du 2024vembre4 no**Date**: 2ression
se 10 Prog Phaembre 2024 -Novn 24 # Sessio

View File

@@ -0,0 +1,108 @@
n boutbout ectionne de eline fon- Le pipnt
ctemehe correet rechercindexe FAISS
- embeddings génère desarge et
- CLIP che : quprouvents sts te
Le.**atoiresvecteurs alés es, pas deèle VRAIS modant dise maintenstème util*Le sylusion
*
## Concs.py
```
y_modelhon3 verif
pytrificationy
# Véipeline.pte_pleest_comp3 examples/t
python_simple.py/test_clipleson3 exampthsts
py# Teactivate
venv/bin/urce ver venv
so# Actih
./run.s
# Setup`bash
``Utilesndes ## Comma
```
completPipeline ↓
⏳ recherche)
ion + dexatger (inanaSM ↓
✅ FAISP)
se CLIer (utilidingBuildeEmbed ↓
✅ Statisé)
512D, normaler (IPEmbedd`
✅ CLe
``Validéecture Architture
## capème deec systr av⏳ Intégreue
5. disqS sur FAISer index Persist⏳ bout
4. de bout en ne complet pipeli ⏳ CréerOllama
3.en3-VL via ⏳ Tester Qwe
2. e imag vrai OWL-v2 avecréer exemplee
1. ⏳ CReste à Fairi Qu
## Ceemblensnctionnent efoIP + FAISS e CL→ Prouve quEL
```
CTIONNPLET FONCOMIPELINE
✅ Ppeline
```# Test Piés
##similaritonnes uve les bSS troue FAI→ Prouve q`
: 0.9270
``
2. greend: 1.0000
```
1. re Test FAISSsés
###normaligs eddin VRAIS emb génère deue CLIP→ Prouve q
```
0000orme=1.(512,), né: shape=ng générEmbeddi✓ LIP
```
Test Cs
###ncrètes Co
## PreuveÀ tester | | ⏳ |
| Qwen3-VL tester |⏳ | À| détection L-v2 |
| OWe.py`line_pipet_completxamples/testhon3 e ✅ | `pyet |e complipelin.py` |
| Ppelinecomplete_pitest_mples/3 exathon | `pytion | ✅S indexa
| FAIS |.py`lelip_simpest_cples/ton3 exampyths | ✅ | `ddingembeP LI` |
| C| `./run.shmplet | ✅
| Setup co------|----|--------|----nde |
|--atut | Comma St| Test |és
ids Val
## Testctor`ns `UIDete✅ Utilisé dagration:**
- **Inté présent8be qwen3-vl:** ✅ Modèlnibilité:spo*Di
- *Ollamaion:** Via **Installatn3-VL
-
### ✅ QweÀ créer
t:** Tesor`
- **tectIDelisé dans `U ✅ Utigration:****Inté-
rge sur CUDA ✅ Se chargement:**ha
- **CMB)mble (620h16-ensev2-base-patce/owlgl:** goo
- **ModèleL-v2✅ OW
### `.pye_pipelinest_completes/te3 examplython* `p
- **Test:*rrectement coritésla simi lesuvehe:** ✅ Troechercings
- **Rdes embeddstocke e et ut** ✅ Ajoation:0
- **Indexon:** 1.13. **Versi
-AISS ✅ F
###simple.py`_clip_xamples/testn3 e** `pytho*Test:
- *lder`ingBuidd`StateEmbeisé dans :** ✅ UtilgrationInté0)
- **me L2 = 1.isés (nornormal2D eurs 51des vecte ** ✅ Génèrgs:*Embeddinchargé
- *T-B/32 e Vi:** ✅ ModèlmenthargeIP
- **CenCL OpNT
### ✅AIMEVRctionne Qui Fon Ce onnels
## et Foncti Intégrés** ✅ Modèles*Statut:24
*re 202 Novembate:** 2
**Dion V3l - RPA Vis# Status Rée

View File

@@ -0,0 +1,268 @@
4
024 novembre 2 2on**:complétie dA)
**Datestant IKiro (Assieur**:
**Autiques
--- problématn des edgesioentificats et idstique Stati'erreurs
- rapports d etlég détailogginigentes
- Lon intellrati de récupé- Stratégies
reurser des automatiqueestion :
- Gtor avecActionExecutégré dans ment inant pleinemaintenHandler est Error
L'ès**
ec succCOMPLÉTÉE av*Task 9.2 ultat
✅ *és### Rge
edecs parge des éch- [x] Comptarreurs
é des etaillLogging déques
- [x] atistix st'accès au] Méthodes dk
- [xbacec rollON_FAILED avPOSTCONDITI Gestion [x]
-ytrOUND avec reGET_NOT_F Gestion TARback
- [x] pour rolléesns enregistr- [x] Actioitialisé
té et inndler imporErrorHas
- [x] de Succè## Critèresidation
#✅ Val
##
---
teon complèatint: DocumeTask 9.6 urs
- [ ] 'erreération dation récupsts d'intégrsk 9.5 : TeTa- [ ] rHandler
Erroires unitaTests9.4 : - [ ] Task r
deMatcheer dans Nor ErrorHandlIntégre Task 9.3 :
- [ ]✅ionExecutor er dans Act ErrorHandlgrernté I.2 :sk 9
- [x] Tanes Étapes
ai Proch
## 🔄
---
}
```"icke_cl": "moustion "ace_2",
1 -> nod: "node_"edge"": 1,
tsovery_attemp},
"rec: null
xt""target_te",
tiony_acimar"prle": "target_ro {
ils": "detaon",
mary_actiri pd:not fount argege": "T "messa23456",
30.14:45:2024-11-24T1stamp": "",
"timefoundot_get_narype": "tror_t,
"er123456"_144530_41124und_202et_not_foarg: "t"error_id" `json
{
n`
``eport.jso_r123456/error_144530__20241124_not_foundtargetdata/errors/ier: `eur
Fichpport d'Errle de Rampxe# E
```
##1250.5ms)ess (pleted: succon comecutiFO: Ex, 320)
INng at (450kiNFO: Clic823)
Iilarity=0. elem_5 (simed: elementeedlback succlarity falVisual simiWARNING: n...
iocutn exeng actiotryi)
INFO: Reattempt 1/3allbacks (etry avec f: retry - Ry strategyercovFO: Rection
INrimary_a found: p not456): Target0_123445324_111024ot_found_2_n=target_idfound (errorTarget not WARNING: node_2
_1 ->e: nodeg edgcutin Exe
```
INFO:
vec Erreurde Log a### Exemple
Générés
📝 Logs
---
##``
3 échecs
` Au moins>= 3 #1] ic[0][emat probl > 0
asserttic)problemaert len(s()
assgeatic_edget_problemecutor.= exematic ue
probl problématiqqué commest maru'il er q# Vérifieate)
en_stcrec_edge, slematirobge(pcute_edexer.
executo range(5):s
for _ inec échecs avoiurs fe plusie edguter le mêmexéchon
# E
```pytes
roblématiques P 3: Edg
### Testts']
```
error_couns['tat in sd'tion_failestcondi
assert 'potistics()et_error_staexecutor.gstats = e
riquhistofier l'
# VériEDAILTION_FSTCONDIPOutionStatus.Exec == t.statussert resulnté
ask a été tebacollue rérifier qte)
# Vn_staion, screeitostconddge_with_pdge(ecute_eexeexecutor.= result onditions
post-cles choue on qui éctier une an
# Exécut
```pythoc Rollbackled avetion Faist-Condiest 2: Po T`
###``] > 0
tal_errors'ts['totassert s)
atatistics(.get_error_sutorecs = ex
stattatistiqueses sier lif
# VérFOUND]
NOT_tus.TARGET_utionStaCESS, ExecUCtus.SnStaExecutioatus in [ result.stsertasé tenté
y a étue retrVérifier q# te)
stascreen_et, alid_targwith_inv_edge(edge_uteor.execlt = executide
resuget invalarn avec tr une actioxécute
# Eecutor()ionExcutor = Act
exeorHandler Err avecionExecutorun Act# Créer python
``etry
` Recound av Not F Target 1:# Testdés
##s Recomman🧪 Test
##
---
```utionResult Return Exec │
└─>
<─┘n()iost_actllback_la └─> ro │ │
rategy ROLLBACK st └─>
│ n_failure()nditiotcohandle_pos └─>
│ │ ─> FAILED? │ └ │
│ │ │
ions() onditverify_postc
├─> _ │ │
│ SUCCESS └─>│
│ │ etry)
│() (rte_actionexecu└─> _ │ │
│ rategy ETRY st └─> R│ │ nd()
t_not_foundle_targeha └─> │ │ │
D? T_NOT_FOUNRGE ├─> TA │
│ │
│ │ n()te_actiocu├─> _exe
│ ─┐
│──────────────n() ─────record_actio
├─> │ute_edge()
exec```
rorHandlertion avec ErExécu 📊 Flux d'--
##s
-erreurlet des rique comptoes
- Hisématiques probldgon des eficati - Identireur
type d'erge par Compta**
-'Erreursues dStatistiq
4. ** d'échec
lback en casPermet rolion
- aque actavant ch
- État nsières actioes 10 dern dstorique - Hions**
nt des Actiegistreme
3. **Enr
blématiquess proage des edgeMarqu - lback
u rolretry oégie de trat - Sreenshot
ging avec sc
- Logetiquomaétection auted**
- Ddition Failst-Con2. **Poe
cs par edges éche dptage- Comcks
allbaretry avec fe de - Stratégicontexte
é avec détaillgingLog - omatique
n aut - Détectiound**
et Not Fo**Targ1. s
es Erreuratique dstion Autom## Ge
#joutéestés Aionnali
## 🎯 Fonct--
`
-ges()
``edmatic__probledler.gethanf.error_ selurn""
rettiques."roblémadges pliste des eObtenir la """ t]]:
[str, in> List[Tuplef) -dges(selmatic_eproble
def get_stics()
or_statier.get_errror_handl.ern selfetur
r"ndler.""ErrorHapuis l'eurs de d'errstatistiquesbtenir les """OAny]:
ct[str, -> Dielf)atistics(sor_stdef get_errhon
```pytesx Statistiqucès aues d'Ac 6. Méthod
```
###")message}ck_result.rollbalt: {resuRollback nfo(f"r.i loggeion()
t_actrollback_lasr_handler. = self.errosultrollback_re CK:
LBAegy.ROLyStrat== Recoverategy_used y.str if recovermandé
k si recomer rollbacqu Appli #
e}").messagcovery- {resed.value} gy_uvery.strateecotrategy: {r"Recovery so(fr.inf logge)
ut_ms
eotimefault_ut_ms=self.dimeon_state, tree scedge,
n_failure(stconditioer.handle_podl.error_hanlf= secovery er
reorHandlavec Errtion condist- échec de po # Gérer
isfied"sats not dition"Post-conage = .mess resultD
ITION_FAILEOSTCONDtus.PExecutionStalt.status =
resu_state):e, screenitions(edgy_postcondifelf._ver not s``python
if
`snditionst-Coecs de Pos Éch Gestion de### 5.
```
)xt, edgente_state, coreene.action, scion(edgute_act_execself.esult = r.")
n..utioction execng afo("Retryi.inogger:
lRYy.RETrategyStver= Recod =_usetegyery.stra if recovtry
retion sipérae récuie dégratpliquer st # Ap
essage}")
ry.mcove - {resed.value}strategy_ury.cove: {reery strategyovfo(f"Rec logger.in
ge
)tate, ed, screen_sdge.action eot_found(
et_n_targndler.handleha self.error_ecovery =D:
rET_NOT_FOUNtatus.TARGionS == Executesult.statusthon
if r
```pyOUND_F_NOTreurs TARGETon des Er 4. Gesti###te)
```
reen_staaction, scn(edge.ecord_actioor_handler.rf.errl
seltentieollback poion pour r avant l'actl'étatrer stEnregi``python
# :
`ge()`te_edexecuans `llback
D Roours Actions pstrement deegi 3. Enr
###
```
rHandler()r Erro_handler or = errorndle.error_ha:
self
)True= ol nditions: boy_postco verif5000,
_ms: int = eoutault_timdef
VEAU # ✨ NOUr] = None,andleErrorHnal[tior: Opandleror_h er
e,er] = NonolvgetResOptional[Tart_resolver:
targef,(
sel __init__
def```pythoncteur
e Construout dans l 2. Aj
###`
``trategyrySType, Recove, ErrorrrorHandlerimport Endler error_ham .python
frondler
``` l'ErrorHaport deIm
### 1. portéesApions catModifi---
## ✅ on.
pératicugies de réc straténs ave'actioion drs d'exécutes erreutiquement lomar autpour géreutor ionExec Actdler dansHaner l'Errorgrif
Intéject
## 📋 Ob
---
COMPLÉTÉ
✅ tatut**:24
**Sbre 20eme**: 24 novat
**D✅
r cutoxenEtioer dans AcrHandlroégration ErntTask 9.2 - I#

View File

@@ -0,0 +1,173 @@
024
vembre 2*: 24 notion*de complé
**Date IA) ant Assistr**: Kiro (
**Auteudler
---ErrorHanitaires ts unsk 9.4 - Tes Tae**:chaine étaps
**Prour des erre complètesiquesn
- Statist résolutiopoures omatiquutstions a
- Suggegements UIes chane delligentction intg
- Déteine matchs échecs due den automatiq
- Gestiodler avec : ErrorHantenantègre mainr int
NodeMatche
✅ Résultat
```
##lysenapour amatique autose exécutionpauI changed - Uy: pause -ategstrvery O: Reco700)
INF.650 < 0.larity: 0simietected (changed d UI 012):
145130_789ed_20241124_i_changrror_id=udetected (e: UI change
ERROR```ngement UI
e Log Cha Exempl
```
###SHOLDUST_THRE_NODE, ADJs: UPDATEestionINFO: Sugg23456
030_1451124_1ailed_2024ng_ftchierrors/mato data/atch logged Failed mO: 2
INFà 0.76justé seuil ary avec try - Retrey strategy: : Recover50)
INFOeshold: 0.8 0.782, thrence:id(best confnd ch fouNG: No mat
```
WARNIngÉchec Matchig e Lo Exempl
###és
s GénérLog`
## 📝 5
``errors'] >=otal_tats['tt sics()
assersttit_error_sta matcher.geats =comptage
strifier s)
# Véidate_nodestate, canderent_h(diffher.matcmatcge(5):
ran
for _ in hecssieurs écrer plu# Génén
hoeurs
```pytques Erratisti Test 3: St``
###gy.PAUSE
`ryStrateecovesed == R_ury.strategyrecove
assert ed is Truert ui_changon
asseétectiifier d
# Vér 0.70
) # <ity=0.65ilar_simrent curted_node,
,
expecteent_sta(
currt_ui_changeetec= matcher.d, recovery _changed
uient UIgemanr chmule Sipython
#
```angement UIion Chect DétTest 2:
```
### or_counts']ats['err in stiled'atching_fa'm 0
assert '] >rors['total_erert statssstics()
aatisr_st.get_erroeratch = m
statsns générées suggestio
# Vérifier
sult is Noneh
assert re'aucun matcVérifier qu# e_nodes)
andidat_state, cnowner.match(unkt = matchérent
resulifftat très dec étch avr ma Tente
#eMatcher()er = Nod
matchonons
```pythtiggesg avec Suinchec Matchest 1: É
### Tmmandés
sts Reco
## 🧪 Teery)
```
nged, recovui_chatourne (─> Re
└ UIement chang ├─> Loguil
té < se similariérifie ├─> V()
ui_changeer.detect_rror_handl
└─> e │ange()
chi__uect
detce)iden (node, confurn None ou └─> Ret)
litétibich() (compa_failed_mat └─> _log
│ │ │lt
Resue RecoveryRetourn─> └│ │
estions Génère sugg├─> │ │eenshot
avec scrreur ├─> Log er│ │ ure()
g_failndle_matchin ha│ └─>│ ld?
ce < threshoenfid best_con─> ├│
│ │ tés
l similarialcu ├─> C
│ │ │inear()
_latch├─> _m
match()
```rorHandlerFlux avec Eres
## 📊 g chang breakinde
- Pas éss généruraux toujoorts locRappervée
- consed_match()` log_fail- Méthode `_ Existante
bilité3. Compati
### tectésents dées changemtorique duelle
- Hisse manr analy pouAUSE Stratégie Pgé
-'état chanot de lreensh scvec a Logging
-par défaut)0.70 seuil (é vs ritn simila ComparaisoUI
-gements anChn . Détectio
### 2Y, ABORT)
RETRSE,ération (PAUe récupes dStratégi
- utomatiquesestions an de suggioGénératet
- ompltexte cvec con détaillé ae
- Loggingch mate ne nodun quand auc automatiqueectionng
- Déttchichecs Ma Éiquetion Automat. Gess
### 1és Ajoutéealit Fonctionn
```
## 🎯tatistics()get_error_sr.leror_handlf.ern se retur."""
dlerHan'Errorurs depuis lques d'errees statisti"Obtenir l ""ny]:
[str, A Dictics(self) ->statistf get_error_hon
deyt
```ptiquesatiséthode St
### 5. M )
```milarity
_sicurrent
cted_node,xpe e ate,
current_st
change(t_ui_ec.detdlerhanlf.error_se return "
cative.""fiière signi de manngé l'UI a chaDétecter si
"""ny]]:nal[Aio, Opte[bool Tuplfloat
) ->y: ariturrent_similode,
c WorkflowNpected_node: ex State,
ate: Screen current_st,
self(
angeect_ui_chon
def det
```pyth)` :t_ui_change(ode `detece méth
NouvellIents Uangemection Ch## 4. Dét
#e}")
```
ry.messagve- {recovalue} d.rategy_useovery.stategy: {recery str(f"Recov.info
loggershold
)ty_threarif.simil
sel_confidence,,
bestnodesdidate_anate,
cent_st currlure(
hing_faitcndle_mar.hahandleself.error_ry = ler
recoveandErrorH utiliser -e matching
# Échec dthon` :
```pyear()ch_lins `_mat
Danatching Mecs deion ÉchGest. 3one
###tique si Nautomalisation ]`
- InitiarrorHandlerptional[Eler: O_handmètre `error- Ajout paraié
r Modifteuruc. Constgy`
### 2atecoveryStr RerrorType,orHandler, E Errndler importerror_haecution.e.ex core `fromAjout dndler
- port ErrorHa
### 1. Imrtées
Appons atioModific# 📋 ÉTÉ
#**: ✅ COMPL
**Statut4 202vembreate**: 24 no*Dr ✅
*s NodeMatcheandler danrorHtégration Er.3 - Ink 9as# T

View File

@@ -0,0 +1,87 @@
nnées.
te des doecION et colle OBSERVATn mod eème este systent - l immédiatemworkflowsr de pas voie rmal de nC'est no
derphBuil Graec leration avL'intég-
pétitives nces ré séqueétection des
- La dson d'étataraie la compn démentatio
- L'implite encore :nécessworkflows** de ctions la **détean, maicrre l'écaptut tenant eainne mionnct
Le GUI fonte
Importa Note##
```owson de workflO] Détecti → [TOD te()
ocess_stangManager.prLearniODO] [T →state
ast_.lhestratordans orctocké État s → etect()
UIDetector.d → s les 2s]
e() [touteer.capturCapturen Scre)
→rt(or.stachestrat Or
GUI (Start)
```uelle ActtureArchitec
## flows
pas de worke vois tu nême sirière-plan mpture en ar ca- Le systèmes
erreuresour l logs pegarde les`
- Rrep msst | gpip lisé : `est installue mss ifie qien :
- Vérne vois r
Si tu Diagnostic
##ted`
etecelements d screens, Y 📸 Captured Xis voir : `vra. Tu de"Live"
5 l'onglet es logs dans Regarde l
4.re 5 fois)enêt f/fermer uneex: ouvrirtitives (épéactions r des 3. Fais **Start**
. Clique sur/run.sh`
2 `. :e le GUIe
1. LancTest Rapidon
## la validatimettreectés
- Perrns déttteher les pa Afficows"
-orkflau tab "Wecter ConnAIRE)
-ows (À Fkflcher les Wor Affi3 :
### Phase kflow
dats de wor des candies
- Créers répétitivencer les séqufie
- Identicessifs suc étatslesComparer À FAIRE)
- rns ( Patte les: Détecter Phase 2
###tected
```nts deelemeeens, 7 cr20 sred :20] 📸 Captu0018:tected
[s dements, 5 ele 10 screen] 📸 Captured:00```
[18:00ENANT)
ures (MAINTs Captleoir Phase 1 : Vapes
### ines Ét
## Prochaessimilairséquences s ecté devoir détnt après auisenstre co sorkflowses wétitifs
- Lrns répatten de ptioétecogique de dnter la laut impléme fpture
- Illa caecté à e connncors e** n'est paeranag*LearningM:
- Le *écran, MAIS ntenant l'apture maie cystèmows
Le ss de WorkflNe Vois Paquoi Tu
## Pourcapturese de ent le nombrchfi logs af. ✓ Les
4ureaque capt ch sur détectés UI sontes élémentsdes)
3. ✓ L2 secons utes lee (toarran déme d'écr captur2. ✓ Lants
les composae tous ialisstème init
1. ✓ Le syStart** :
s sur **queQuand tu clitenant
se Main Qui Se Pas`
## Cerun.sh
``bash
./``
`u GUI
ment d# Lance``
#etwindow
` pygstall mssp inactivate
piv_v3/bin/enrce von_v3
soucd rpa_visi
``bashuantes
`nces Manq des Dépendanstallation## IV3
n - RPA Visiouide de Test# G

View File

@@ -0,0 +1,122 @@
ntasse* : 16/16 ps***TestTÉ**
TESRRIGÉ ET **COt** : ✅
**Statu 2025 novembre** : 24
**Date---
.sh`testshboard_: `fix_dasrection** de coript
- **Scr_FIX.md`ESTSHBOARD_T : `DAS rapide***Guided`
- *SOLUTION.mS_SHBOARD_TESTte** : `DA complèSolution
- **on
atiDocument 📚
##
---sts/ -v
```s
pytest teous les test
# Tnit/ -v
t tests/uaires
pytests unit les tesus
# Tot -vemeneate_ui_elcr:test_ement:y::TestUIElement.p_ui_elestests/unit/tue
pytest tcifiqt spé
# Un tesbin/activate3/ource venv_vion_v3
s
cd rpa_visbash```de
de Comman Ligne### En
)ed" !ndefin"uplus de nt** (emeectffiche corrs'aRésultat **5. d'un test
*▶** à côté er sur *qu
4. Cliests**t **TleOng3. t:5001
calhostp://lorir : htOuvd`
2. h --dashboar `./run.s. Lancer :board
1 DashVia le
### ation
isUtil
## 🚀
---
```
======================0s =========.5n 0 16 passed i============================
==pes PASSED
nt_tyrefe_difentest_ui_elemnt::tElemeUI:Testent.py:_ui_elem/test
tests/unitASSEDfined Pent_roles_detest_ui_element::stUIElemment.py::Telest_ui_e/teests/unitPASSED
tined _defesent_typ_ui_elemest::tElementtUI.py::Tesment_elet/test_uiests/uniSSED
tetadata PA_with_mntelemest_ui_::teementestUIElent.py::Ttest_ui_elemests/unit/
tEDg PASSon_strinm_jsement_froui_elt_:tesUIElement:estt.py::Temen_ui_elts/unit/testPASSED
tesg rint_to_json_sti_elemennt::test_umetUIElent.py::Tes_ui_elemet/testD
tests/uniip PASSE_round_trment_ui_elestment::tetUIElet.py::Tes_elemenit/test_ui/unSSED
testsom_dict PAent_frui_elemnt::test_TestUIElemeement.py::ui_elnit/test_
tests/u PASSEDictlement_to_d:test_ui_estUIElement:ment.py::Teest_ui_elenit/tsts/uPASSED
teon ce_validatifiden_con_ui_element:testUIElement:sty::Tement.pst_ui_elests/unit/te
teEDnt_bbox PASSst_ui_elemement::teestUIElelement.py::T_ui_eit/testED
tests/unement PASS_elt_create_uiElement::tes.py::TestUIementst_ui_elit/tes/unestSSED
tPArialization atures_sefeal_est_visures::tlFeatuTestVisua::element.py_ui_/unit/teststss PASSED
teureal_featisucreate_vst_s::terelFeatusua::TestVilement.pyst_ui_es/unit/teSED
testzation PASgs_serialiddintest_embeEmbeddings::tUIElement:Tesy:i_element.pit/test_u/unestsSSED
ts PAe_embeddingatest_credings::ttEmbedemenTestUIElpy::ui_element./test_unitests/
t-vlement.py st_ui_e/unit/te tests pytest
$`bash
``t !**
anensent maint6 tests pas**Tous les 1Résultat
## --
-urd'erreessages des m✅ Affichaged
- ineleurs undefon des vasti- ✅ Ges réseau
eur err desion
- ✅ Gest`
s/index.htmllaterd/tempoa `web_dashbier** :*Fich✅
*ontend ration du Fr4. Amélioed
### s undefins valeuron de ✅ Gestiur clairs
- d'erre- ✅ Messagesexiste
r de test ue le fichiefication q ✅ Vérinstallé
-est iytest que pn atioVérific`
- ✅ d/app.pyeb_dashboarchier** : `w✅
**Fidu Backend ration élio. Am
### 3
```t UIElement impor_elementuicore.models.)
from nt.parent)ent.pare__).parh(__filet(0, str(Patinserys.path.rt Path
shlib impos
from patport syimn
```pytho** :*Après
*
``UIElement
`t import _elemendels.uiv3.core.mopa_vision_from rhon
```pyt** :`
**Avantt.pyst_ui_elemen/teunit* : `tests/hier*
**Fic
s ✅ortes Impection d## 2. Corr
#v
```test-co.0.0 py=7l pytest>ip instal
```bash
ptest ✅
pyllation deta### 1. Insuées
ons Appliqecti
## 🔧 Corr**
---
!nant corrigé mainte**Problèmests. es te lfined" pourundehait "ard afficshbo
Le dame Résolu🎯 Problèe
## mplètrrection CoCooard - sts du Dashb✅ Te#

View File

@@ -0,0 +1,166 @@
és ! 🚀
ctionnalitles fonder toutes rd et valishboaancer le da** : Lapeaine étroch
---
**P``
dashboard
`un.sh --3 && ./r_vision
cd rpa_v :
```bashement**de lancande **Comm
on V3sir RPA Vir et débogueoppes
3. Dével logts etrer les tesonito web
2. Mdashboard. Lancer le
1 :ourenant prêt pst maintstème e sy
LeUSSIE**ET RÉN COMPLÈTE *VÉRIFICATIO
✅ *nnclusioCo-
## 🎯 )
```
--t=5000 por0.0.0.0',st='se, houg=Falun(debon
app.r
```pythebug :
dle moder ctivetion, désar la produce`). Poudebug=Truactivé (`debug est mode nce
Le rforma
### Pe000)
```.1', port=5st='127.0.0ug=True, hopp.run(deb``python
a
`5 :y` ligne 16.phboard/appb_dasier `wedifment, mot uniqueu localhos aer l'accèsr limitocal. Pouréseau le depuis lccessibleend ae re qui l0.0.0'`, c0.ec `host='uré av configboard este dashurité
L## Séc
#antesort Impotes
## 📝 N
---rt**nflit de po cocuncé sans autre laneut êboard p dash **Le
🎉sultat
### RéMPLÈTE**CO : **entation [x] DocumTIONNEL**
-FONCcation : **fiipt de véricr
- [x] SES** **TOUS LIBRternatifs :rts alfication po[x] Véri- BRE**
5000 : **LIication portrif [x] Véectués
-sts Eff# Teon
##Validati
## ✅ ```
---
888|9000)'
|8080|8|8000000|5000:(3 | grep -E '-tulnbash
ss eb
```les ports wous tfier# Véri)
```
##00-t -i:50l $(lsof sh
kilbaort
```érer un p### Lib
00
```
lsof -i :50t
```bash
sur un porocessusle pr Identifier `
###p :5000
``ln | gre-tu
ss ue
```bash spécifiqr un portfie### Véritiles
Commandes U
## 🔍
---
rojet)
ncien p(atale rimenterface Expé* : InDescription*est`
- **i/visual_tdom/aome/e** : `/hoir- **Répertpp.py`
thon a`py* : *Commande*2533
- *** : 386*PIDté
- *rêssus Ar
### Proceemplèton cocumentatiDoation
6. ✅ érific de vdu script✅ Création natifs
5. s alterion des port Vérificat. ✅ du port
4 libérationion de la Vérificat533)
3. ✅(PID 3862ntal imexpéreur e servdu. ✅ Arrêt 00
2 port 50pant lecuessus ocproc du tification
1. ✅ Idensffectuéens Etio# Ac## Actions
desHistorique 📊
---
##
```ost:5000tp://localhs
```
htcè# 3. Ac
##rd
```
ashboah --d./run.sash
`bt
``emen 2. Lanc##h
```
#ort.shboard_pheck_das
./con_v3rpa_visi`bash
cd
``on finaleificatiVér. :
### 1e lancementr l pou**0% prêt10ant **st maintenashboard ee dapes
LÉtochaines Pr 🚀
---
##aire si nécessn de portératios de libructionInst
- des portsrificationtape 0 : Vée l'é Ajout dY.md`
-ARD_READ `DASHBOchier** :
**Fidyshboard Rea à Jour DaMisee
### 3. démarragklist de mes
- Checn de problèolutioe rés
- Guide ddboarion du dashConfigurats web
- portous lese tt complet d
- ÉtaTUS.md`_STAPORTS `ier** :rts
**Fich Potion des. Documenta``
### 2
`sht.porshboard_ck_dache
./`bash
``* :ge*s
**Usaationrecommanddes
- Fournit ports les s occupantssu procee lesIdentifi
- isponiblesfs drnatis ports altee lest
- Liport 5000té du disponibilint lamequefie automatiri
- Vé`d_port.shashboareck_dch : `Fichier**tion
**cae Vérifiipt d### 1. Scrs
rs Crééiech
## 📁 Fi
---00 : LibrePort 90
- ✅ ibre888 : Lrt 8e
- ✅ Pobr080 : Li Port 8- ✅Libre
8000 : - ✅ Port : Libre
rt 3000es :
- ✅ Poisponiblnt dgaleme sont éb standards ports welestifs
Tous Alterna
### PortsVision V3RPA : Dashboard t pour** 33)
- **Prê (PID 38625êtéarrérimental ur expen servecictuée** : Anffetion e- **AcBRE**
t** : ✅ **LI*Statu)
- *pal (5000incirt Pr Po
###rificationVé la detat
## 🎯 Résul
---
**BLESTS DISPONIORES PUS L ✅ **TOatut** :
**St4 02ovembre 2te** : 24 nÉE
**Da TERMINs Ports -ication de# ✅ Vérif

View File

@@ -0,0 +1,182 @@
"""Screen capture using mss and pyautogui with robust validation"""
import numpy as np
from typing import Optional, Dict
import logging
import time
logger = logging.getLogger(__name__)
class ScreenCapturer:
"""Captures screenshots efficiently with validation and retry logic"""
def __init__(self):
"""Initialize screen capturer with fallback support"""
try:
import mss
self.sct = mss.mss()
self.method = "mss"
logger.info("Using mss for screen capture")
except ImportError:
try:
import pyautogui
self.pyautogui = pyautogui
self.method = "pyautogui"
logger.info("Using pyautogui for screen capture")
except ImportError:
raise ImportError(
"Neither mss nor pyautogui available for screen capture. "
"Install with: pip install mss pyautogui"
)
def capture(self, max_retries: int = 3) -> Optional[np.ndarray]:
"""Capture current screen with retry logic and validation
Args:
max_retries: Maximum number of retry attempts (default: 3)
Returns:
Screenshot as numpy array (H, W, 3) RGB, or None if all attempts failed
"""
for attempt in range(max_retries):
try:
# Capture using selected method
if self.method == "mss":
img = self._capture_mss()
else:
img = self._capture_pyautogui()
# Validate captured image
if self._validate_image(img):
logger.debug(f"Capture successful: {img.shape}")
return img
else:
logger.warning(
f"Invalid image captured (attempt {attempt + 1}/{max_retries})"
)
except Exception as e:
logger.error(
f"Capture failed (attempt {attempt + 1}/{max_retries}): {e}"
)
# Small delay before retry
if attempt < max_retries - 1:
time.sleep(0.1)
logger.error(f"All {max_retries} capture attempts failed")
return None
def _validate_image(self, img: np.ndarray) -> bool:
"""Validate captured image with comprehensive checks
Args:
img: Image to validate
Returns:
True if image is valid, False otherwise
"""
if img is None:
logger.error("Image is None")
return False
if not isinstance(img, np.ndarray):
logger.error(f"Image is not numpy array: {type(img)}")
return False
if img.size == 0:
logger.error("Image is empty (size=0)")
return False
if len(img.shape) != 3:
logger.error(f"Image has wrong dimensions: {img.shape} (expected 3D)")
return False
if img.shape[0] == 0 or img.shape[1] == 0:
logger.error(f"Image has zero width or height: {img.shape}")
return False
if img.shape[2] != 3:
logger.error(f"Image has wrong number of channels: {img.shape[2]} (expected 3)")
return False
# Check for reasonable dimensions (not too small, not too large)
if img.shape[0] < 100 or img.shape[1] < 100:
logger.warning(f"Image is very small: {img.shape}")
return False
if img.shape[0] > 10000 or img.shape[1] > 10000:
logger.warning(f"Image is very large: {img.shape}")
return False
# Check data type
if img.dtype != np.uint8:
logger.warning(f"Image has unexpected dtype: {img.dtype} (expected uint8)")
# Try to convert
try:
img = img.astype(np.uint8)
except:
return False
return True
def _capture_mss(self) -> np.ndarray:
"""Capture using mss (fast method)"""
# Use primary monitor (index 0 is all monitors combined, 1 is primary)
# Fallback to all monitors if primary not available
monitor_idx = 1 if len(self.sct.monitors) > 1 else 0
monitor = self.sct.monitors[monitor_idx]
sct_img = self.sct.grab(monitor)
# Convert to numpy array
img = np.array(sct_img)
# Convert BGRA to RGB
img = img[:, :, :3][:, :, ::-1]
# Basic validation
if img.size == 0 or img.shape[0] == 0 or img.shape[1] == 0:
raise ValueError("Captured image has invalid dimensions")
return img
def _capture_pyautogui(self) -> np.ndarray:
"""Capture using pyautogui (fallback method)"""
screenshot = self.pyautogui.screenshot()
img = np.array(screenshot)
# Basic validation
if img.size == 0 or img.shape[0] == 0 or img.shape[1] == 0:
raise ValueError("Captured image has invalid dimensions")
return img
def get_active_window(self) -> Optional[Dict]:
"""Get active window information
Returns:
Dict with window title, position, size, or None if unavailable
"""
try:
import pygetwindow as gw
active = gw.getActiveWindow()
if active:
return {
'title': active.title,
'x': active.left,
'y': active.top,
'width': active.width,
'height': active.height
}
except Exception as e:
logger.debug(f"Could not get active window: {e}")
return None
def __del__(self):
"""Cleanup resources"""
if hasattr(self, 'sct'):
try:
self.sct.close()
except:
pass

View File

@@ -0,0 +1,99 @@
()
main
n__": == "__maiif __name__")
70}\n(f"{'='*
print")vec succèsnée armi te Détectionint("")
pr"{'='*70}int(fpr
n")
_path}\é: {outputuvegard"✓ Sa print(f_path)
ions, outputge, detectctions(imaize_dete.visualor
detection...")isualisaton de la vnt(f"Créati
pried.png"stem}_detectge_path)."{Path(imant / fre).pah(image_path= Patput_path out
serali # Visu()
print ]}")
r'{det['centee: f" Centrint(
pr")['bbox']}on: {detPositi(f" print}")
dence']:.3f['confie: {detnfianct(f" Co prin)
'label']}"}. {det[{iint(f" pr1):
detections, te(ra enume in for i, det)
:\n" élémentsons)}cti(deteé {len\n✓ Trouv print(f"e)
lements(imagui_ect_tor.detens = detectioec detUI...")
nts des élémetionecDét"rint(
pnts UIélémecter les # Déte
êt\n")-v2 pr OWLint(")
prold=0.05threshdence_r(confitectowlDetor = Oetec")
d2...ion d'OWL-vInitialisat print("
tecteurle # Créer
e}\n")image.sizargée: { Image ch print(f"
age_path)open(ime.ag image = Im}")
{image_path: t de l'imagef"Chargemen print(
ger l'imagehar # C
n")='*70}\"{' print(f -v2")
UI avec OWLion ect" Détprint(f")
n{'='*70}int(f"\
prgv[1]
= sys.are_path imag else:
th
= test_path image_pa}")
_pathest créée: {tge de testint(f"✓ Ima pr
path)st_(teave img.sg"
reenshot.pn"test_ui_sc/ e__).parent th(__fil = Pa_pathst
te t)
5), font=fon255, 255, 25l=( text, fil), tyxt((tx,draw.te h) // 2
(y2 - y1 - ty = y1 + t - tw) // 2
(x2 - x1 x = x1 + t1]
3] - bbox[ = bbox[ th ]
[2] - bbox[0ox tw = bb
font=font) 0), text, bbox((0,w.textox = dra bb )
=2 width),50=(50, 50, tline=color, ou2, y2], fille([x1, y1, xglrectandraw. tons:
olor in butxt, cy2, te, x2, r x1, y1 fo
default()
nt.load_= ImageFo font :
ept exc, 20)
f"aVuSans.tte/dejavu/Dejruetyp/t/share/fonts("/usrtypeont.true ImageFont = f
y:tr
]
100)),100, 200, OK", ("00, 200, , 2, 15050 (),
100, 100), ", (255Cancel0, 100, "0, 40 (250, 5,
50, 255)), (100, 1t""Submi 200, 100,, 50, 50 (
uttons = [ bons
es boutiner quelqu # Dess
aw(img)
eDraw.Drraw = Imag)
d40, 240)240, 2r=(0), colo', (600, 40new('RGBImage. img =
geFontgeDraw, ImamaL import I from PItest
ne image de r u # Crée
)
st..."image de tetion d'une éarint("\nCr pe_path>")
magon.py <i_detectiexample_uithon3 sage: pynt("U pri) < 2:
gvsys.ar if len(ain():
r
def mwlDetectoimport Otector n.owl_deore.detectiofrom ct Image
L impor
from PIent))nt.parare_).pPath(__file_t(0, str(path.inserath
sys. parent au piree réperto
# Ajouter l
mport Pathhlib i
from patimport sys"""
shot.png
entest_screes/mpl.py exaectionet_ui_dpleam/exxamplesthon3 eple:
py
Exemth>paage_.py <imctionle_ui_detes/exampplethon3 exam
pye:
Usagvec OWL-v2
a'Éléments UIion détectoncret: D
Exemple C
"""python3/env #!/usr/bin

View File

@@ -0,0 +1,160 @@
)
xit(main()sys.e :
ain__''__m__name__ == if rn 1
retu" * 60)
"=fo(er.in logg LED")
} tests FAIssed{total - pa.error(f"✗ logger:
else return 0
* 60)fo("="ogger.in)
lSED" PASestsll tr.info(" A loggetotal:
= passed = if
d")
sts passel} tesed}/{totapaslts: {nfo(f"Resuger.i log(results)
tal = len
tosults)sed = sum(re
pas60)"=" * \n" + ("info logger.)
nd(Falseresults.appe =True)
_info{e}", excashed: __} crt.__namest {tesf"Ter.error(ogge las e:
eption except Exc
pend(result)lts.ap resu ()
testesult = ry:
trts:
st in tesr te[]
fo results =
]statusution_exec test_on_types,
est_acti t reation,
xecutor_cction_e test_a
creation,lver_t_resot_targe tes ts,
t_impor tess = [
test)
=" * 60fo(" logger.infied)")
(Simpli Tests n Execution6 - ActioPhase ger.info("60)
log=" * ger.info("log""
sts." all te"Run
""ef main():
dalse
return F}")
{efailed: eck ch"✗ Statuser.error(f loggs e:
ion apt Except exceurn True
ret
)
available"ion statusesecutll ex(" Ager.infolog
")
D.value}_NOT_FOUNGETtus.TARxecutionStaT_FOUND = {ET_NOatus.TARGEExecutionSt" fo(fger.in loglue}")
TIMEOUT.vaStatus.utionecEOUT = {ExTIMionStatus.ecut" Exer.info(fgg
lolue}")s.FAILED.vaecutionStatu = {Ex.FAILEDtatus ExecutionSo(f"nf logger.i alue}")
SUCCESS.vtionStatus.cu= {Exetus.SUCCESS nSta" Executioer.info(flogg
onStatust Executior importion_executecution.acrom core.ex f try:
==")tus =n StaExecutio Testing ==o("\n=inflogger."""
m.atus enuStExecution"""Test ):
tatus(_sexecutionf test_
dese
return Fal {e}")
ion failed: ion creatActrror(f"✗ .e logger
tion as e:cept Excep exrue
n T retur
)
on.params}"rams: {acti(f" Pager.info logrole}")
n.target.by__role={actiot: by Targef"fo(.inlogger
")ype.value}ion.tted: {acteacr Action fo(f" logger.in
)
}
r_ms': 500it_aftearams={'wa p
arget,=t targetICK,
SE_CLonType.MOU type=Acti
on(cti action = A irst")
licy="fn_poectioutton", selt_bmile="subpec(by_ro = TargetStarget n
actioa simple reate # C
")
e}OUND.valuCOMPpe.onTyD = {ActiMPOUN.COonTypef" Actiogger.info( l)
e}"luUT.vaEXT_INPonType.T= {ActiXT_INPUT pe.TE" ActionTyo(finf logger.ue}")
SE_CLICK.valMOUe. {ActionTyp =MOUSE_CLICKionType.nfo(f" Actogger.i le enum
ctionTypest A # T
tSpec, TargectionTypection, At Agraph impor.workflow_.modelsfrom core
try:)
="pes ==on Tyng Actiti=== Tesnfo("\n.i logger
""."enumsnType ctioon and A"Test Acti "":
on_types()_acti
def testFalse
return e}")
n failed: {Creatioor(f"✗ ger.err log
n as e: Exceptio excepturn True
ret
)
ms)"_timeout_ms}ultcutor.defatimeout={exer created (ionExecutofo(f" Act logger.in 00)
ms=30eout_fault_timnExecutor(de = Actioxecutor e
utor
t ActionExececutor imporn.action_ex.executiorom core f:
try=")
ion ==utor CreatxecActionE= Testing ==.info("\nlogger"""
n.ioiator instantxecutTest ActionE
"""reation():_executor_ct_actiondef tes
False
turn
re")ailed: {e}ation fCreerror(f"✗ logger.
ion as e:t Exceptexceprue
return T
ld})")
reshoty_th.similariolver{reshold=res(thated lver creetResofo(f"✓ Targinogger. l
)shold=0.8arity_threr(similgetResolve= Tar resolver
er
esolvt TargetRlver impor.target_resotionecue.exrom cor f try:
=")
Creation ==Resolverrget= Testing Tao("\n==gger.inf lo"""
tiation.nstanver iTargetResol""Test ():
"ionsolver_creatst_target_re
def te Falsern retu")
ed: {e} Import failr.error(f"✗logge ion as e:
cept except Exn True
uret
r ted")
ls impordew mofloWorkfo("✓ ger.in log ec
, TargetSpTypetiont Action, Ac imporaphkflow_grworls.m core.mode fro
")
importedonExecutor Actigger.info(" loonStatus
uti Execor,tionExecutt Acutor importion_execacion.re.execut from co
imported")er solv✓ TargetRer.info("logge et
rgedTaolvr, ResesolveargetRimport Ter solvt_reon.targeore.executi from c try:
=")
mports === Testing I("\n==ger.info"
loged.""portcan be imall modules t tha """Test
mports():est_i
def t_)
r(__name_oggelogging.getLer =
loggO)ng.INFggivel=loicConfig(le
logging.basgging
import loarent))
.parent.pile__)th(__f(Pastrsert(0, path.inth
sys.port Pahlib imfrom patrt sys
po"
imcies.
""dependenh minimal ver witTargetResoland ionExecutor
Tests Acted)
(Simplifise 6 Phation - ction ExecuTest A
n3
"""thopyv /bin/en#!/usr

View File

@@ -0,0 +1,210 @@
t()
s !")
prinlee VRAIS modèntenant dutilise maion V3 RPA Visisystèmet("🎉 Le rint()
princision")
peilleure préur mnCV poète OpeCompl(" -
printUI")d'éléments zero-shot - Détection(" printetector")
ns UIDnctionnel dat foégré e OWL-v2 int
print(")
print()toires !"éaalecteurs lus de vint(" - P
praires)")ings similbeddres → emaimilages sivérifiée (imnce - Cohérerint(" ")
prme L2 = 1)(nosés gs normaliEmbeddinnt(" - r")
priildeeEmbeddingBus Stattionnel dant fonc eintégréCLIP int("✅ Openint()
pr * 70)
pr"="")
print(Testsumé des " Rés)
print(" * 70t("=rin
p====
================================================================= =======sumé
#====
# Ré====================================================================
# ====t()
prin(1)
ys.exit()
sprint_excback.
trace traceback importe}")
EC Test 2: {nt(f"❌ ÉCHpri:
eption as et Excré")
excepgno(" Test i
print)0"=4.35.mers>ll transforpip instan: tiollaInstaprint(" : {e}")
n disponible-v2 not(f"⚠️ OWLe:
prinrror as ImportE
exceptement")e correcttionn-v2 foncÉUSSI: OWL Test 2 Rt("\nrin
p elle")
fonctionntion OWL-v2 t("✓ Détec prine:
els")
?) trop élevé(seuil détecté élémentcun Au print("⚠️ s) == 0:
detectionn(owl_ le if
ox']}") @ {det['bb3f}ce']:.iden{det['conf}: abel']{i}. {det['lt(f" prin
ons, 1):etectiate(owl_der det in enumfor i,")
s:nt élémeections)}len(owl_detcté {v2 a déte"✓ OWL-(f print
g)
(test_imentstect_ui_elemr.dector.owl_detens = detectowl_detectio
o-v2...") OWLion avecétectst de drint("\nTe pWL
avec Oon directeectiTest de dét #
")
tectorsé dans UIDeialiinit OWL-v2 "✓ print( else:
oré")
Test ign(" print")
.0354.mers>=forstall transpip in: ationtallt(" Insinpr
nquant?)")masformers ible (trant pas dispon OWL-v2 n'es⚠ print(" None:
ctor is wl_deteector.o if detisé
alL est initiue OWier q Vérif
#ig)
(config=conftectorDeUIetector = d
)
=0.05hresholdnce_t owl_confide test
cever VLM pour # Désaction=False,ficatilm_classi use_v on=True,
ectil_det use_ow ig(
ctionConffig = Dete")
conec OWL-v2...avUIDetector tion du Créat("\nv2
prin avec OWL-urteréer détec
# C
h}")t_pat {tes créée:mage de testrint(f" I ph)
patsave(test_mg.t_ites
.png"ionl_integrat"test_ownt / file__).pareath(__h = P test_patr
Sauvegarde
# ont)
), font=f555, 2=(255, 25ill fubmit","S15), xt((150, 1aw.te
dr()
load_defaultgeFont.nt = Ima fo
except:f", 16)
Sans.ttejavu/DejaVupe/dfonts/truetyr/share/etype("/ust.trumageFon = I font
try:xte
jouter te # A
, width=2)50, 50)line=(50, 5), out, 150, 2500, fill=(1(button_rectectangleraw.r d150]
, 00, 2500, 1n_rect = [10tto bu
nbouto un iner# Dess
)
w(test_imgageDraw.Dra draw = Im , 240))
(240, 240lor= co400, 300),('RGB', ( Image.new_img =test")
de test...ne imageion d'u("Créat printouton
un b test avecimage der une # Créeor
OwlDetectort detector impction.owl_ore.detem c fronConfig
Detectioector, t UIDetr imporetectoi_dection.ucore.det from ry:
t-" * 70)
int("r")
pr UIDetectov2 dans 2: OWL-int("Test===
pr===================================================================or
# ======ctdans UIDeteL-v2 st 2: OW# Te========
==================================================================nt()
# ==pri(1)
sys.exit nt_exc()
eback.prik
traccebacra import t 1: {e}")
HEC Test ÉCf"❌int( pras e:
xception
except E
ement")ectorrctionne conIP f OpenCL1 RÉUSSI:est "\n T
print(
")ngs vérifiéebeddince des emohéret(" C prin
(1)
s.exitsy ")
imilaritéplus de s avoir evraientes dmilairsi: Images "❌ ÉCHEC print(sim_13:
= if sim_12 <
}")
sim_13:.4fouge-bleu: {Similarité r" rint(f
p_12:.4f}")uge: {sime-roroug Similarité int(f" pr
ntes
différe Images 3) #ot(emb1, embnp.d13 = sim_
ess similair Image) #, emb2ot(emb1= np.dim_12 nus
s cosiarité# Simil
3)
image_image(.embedderclip_embedbuilder. emb3 = age2)
bed_image(imedder.em.clip_emb= builder2 1)
embimage(imagembed_r.elip_embeddebuilder.c= emb1
# Bleu255)) 0, =(0, 224), color, ', (224GBw('R3 = Image.ne imageire
mila Rouge si10, 10)) #=(255, 224), color', (224,'RGBe.new(age2 = Imag imuge
# Ro0, 0)) , 55), color=(2(224, 224('RGB', = Image.new
image1nce...") cohéredet("\nTest in prilaires
dings sim embedavoirivent es doairimages similcohérence: # Test de
")
m:.4f}) {text_norrme =ormalisé (note nedding texmb"✓ Ent(f
pri t(1)
xi sys.e f}")
norm:.4= {text_xte edding te l'embrme de ÉCHEC: Not(f"❌ prin 1.01):
< < text_norm.99 ot (0
if n g)
ext_embeddinlg.norm(tp.linaext_norm = n tton")
("butmbed_text_embedder.eder.clipdding = built_embe texe...")
ing de text'embeddst d"\nTe( printe texte
dd'embedding
# Test
4f})"){norm:.é (norme = ormalisng nddi" Emberint(f
pxit(1) sys.e)
normalisé"n léatoire nocteur aà un ve ressemble Cela" print(1.0)")
ndu ~atte4f} ( {norm:.edding =emborme de l'"❌ ÉCHEC: Nrint(f
p< 1.01):m 99 < nort (0. if no
g)bedding.norm(emm = np.linal 1)
nore L2 =norms (séormalisont nP dings CLImbed # Les e normale
distributione t unatoires onléteurs a # Les vectoire
vecteur aléa PAS un est que ce n'# Vérifier
_image)
stimage(tebed__embedder.emr.clipilde bu embedding =
, 150, 200)) color=(100, 224),24RGB', (2ge.new(' Ima_image =")
testd'image...d'embedding "\nTest nt(
priimageng d'd'embeddist
# Te ")
dderCLIPEmbelise age utiim Embedder print("
(1)
sys.exit
Embedder")st pas CLIPage n'er imembedde ÉCHEC: L'nt(" pri:
der)LIPEmbedimage"), C"t(embedders.gelder.tance(buif not isins iCLIP
tilisent mbedders u les erifier que
# Vé")
lderbeddingBuidans StateEmisé initialOpenCLIP t(" prin1)
sys.exit(")
initialisés LIP n'est paCHEC: OpenC print("❌ É
s None:der i.clip_embed buildersé
ifali initiIP estifier que CL
# VérTrue)
lip=uilder(use_cddingBmbeateE Stlder =ui b)
enCLIP..."er avec OpddingBuild StateEmbeéation du print("CrOpenCLIP
ec builder avr un # Crée
dder
IPEmber import CL_embeddeclipding..embed from corelder
beddingBuiport StateEmimbuilder g_ddinate_embeing.stre.embeddfrom co:
try * 70)"-"")
print(erdingBuildteEmbedtaans SP dnCLIt 1: Opent("Tes
pri===
====================================================================== ===Builder
#eEmbeddingans StatenCLIP dest 1: Op# T===
=====================================================================
# ====)
print()"=" * 70")
print(LIP + OWL-v2enCOpn 'IntégratioTest dt("
prin"=" * 70)
print(umpy as npt npor
imageFontraw, Im ImageDrt Image,mpo
from PIL int))
.parent.pareth(__file__)str(Pa.insert(0, thsys.pa au path
arentertoire péper le r Ajout
#Pathib import om pathlport sys
fr"
im
""aléatoires.e vecteurs au lieu dutilisés t modèles sone les vrais
Vérifie qu + OWL-v2
n OpenCLIPtégratio d'In
Test"""ython3
in/env p#!/usr/b

View File

@@ -0,0 +1,129 @@
)
else 1ccess t(0 if su sys.exi = main()
successin__":
== "__mae__
if __nam
return True
")
ruction.pyow_const/test_workflon examplesthce: py. Lan.info(" 3gger")
losessionapture une 2. C(" er.infoogg")
l.1:5000//127.0.0nce http:. La 1" r.info(
loggeion GUI:")e sessune vraiester avec Pour t("foinger. log)
P réels."LI Cembeddingses dn utilise sessio Cettete: No("\nnfo logger.iings
ddur les embe Note s #
)
} edges"low.edges)en(workfdes, {lnoes)} nodn(workflow.kflow: {leinfo(f"Worogger. l" * 70)
o("=infogger.")
lÉUSSIEST Rfo("✓ T logger.in" * 70)
" + "=.info("\noggerumé
l
# Rés
)}")ata_storeager.metadn(faiss_mandonnées: {le(f" - Métagger.info)
lontotal}"er.index.ss_manag: {fai Vecteursinfo(f" -ogger.")
lS:FAISndex \nI"gger.info( lo
_count}")ationdge.observions: {e Observat - er.info(f" loggype}")
n.tioe.actn: {edg - Actio.info(f" logger _id}")
ge.to_node{edid} e.from_node_d}: {edge.edge_i" {edgr.info(f loggees:
orkflow.edgin we or edg
f")étectés:ges dfo("\nEdr.inlogge
rity}")_similacosine.min_mbeddingate.eode.templreshold: {n" - Thgger.info(f lo nt}")
coution_servas: {node.obationservf" - Oblogger.info(
e}")amd}: {node.ne_i {node.nod" fo( logger.inf
odes:ow.nde in workflor no")
ftectés:des "\nNo.info( logger")
résultatsdes ] Analyse 4/4.info("\n[ logger
er résultatsysape 4: Anal
# ÉtFalse
return xc()
print_ek.tracebac ack
cebrt tra impour: {e}")
rre Ef"ror(gger.er loion as e:
ptExcept exces)}")
orkflow.edgen(wEdges: {lef" - gger.info( lodes)}")
ow.non(workfl- Nodes: {leinfo(f" logger.
_id}")low.workflowrkfnstruit: {woow cokflfo(f" Worlogger.in low")
hetic Workf"Synton, n(sessissiofrom_seer.build_ow = buildworkfl try:
")
workflowtion du ] Construc"\n[3/4ger.info(og lflow
ire work 3: ConstruÉtape # ")
sétialihBuilder iniapnfo("✓ Grr.ilogge )
ires
atoeddings aléif pour embrmisslus pe0.20 # Pstering_eps= clu rns
s 3 patteter noec dét# Bas pourns=2, etitiorn_rep_pattein m
,aiss_managerger=ffaiss_mana
lder(aphBui = Grbuilder=512)
(dimensionsager FAISSMannager =mas_is falder")
hBuiGrapation du tialisIni] o("\n[2/4ogger.infr
laphBuilder Gr 2: Créepe Éta
#
session()etic_nth = create_sy sessione")
ynthétiqu sa session ldetion /4] Créanfo("\n[1gger.i lo
synthétiqueionCréer sesspe 1: # Éta
* 70)
" nfo("=gger.i)
loHÉTIQUE"SESSION SYNTSTRUCTION - W CONKFLO"TEST WORer.info( logg70)
" * "=o( logger.inf"""
al.ncipprit d'entrée in""Po ":
def main()sion
n ses retur")
shotss)} screennshotree(session.scc {lenvee a crééion"✓ Sessr.info(fge
loghot)
(screensndnshots.appecree session.s)
)
rmat(w().isofotetime.noured_at=da capt ,
ng"{i:03d}.pts/screen_a/screenshoth=f"datative_pa rel
:03d}","screen_{iot_id=fcreensh s(
eenshothot = Scr screens ):
12 in range(
for i 8, 11
hots 2, 5,eensn C: screr
# Patt 10s 1, 4, 7,creenshotttern B: s Pa 9
#, 3, 6,enshots 0A: scre# Pattern un)
hacois crépétés (4 fatterns s avec 3 pscreenshotr 12 # Simule
)
at()rmfosonow().ime.=datetied_attart s
,"}ntheticsy": "ext={"typ conte",
"test_user user=,
e}st": Truux", "te"lin={"os": vironment
en0",on="v3._versi agent,
001""synthetic_session_id=
ssion(sion = RawSe
seséss répétotdes screenshion avec une sess# Créer
")
ique...synthétion session d'une fo("Créatin logger.""
s." testque pour lesétion synth une sessi """Créer awSession:
Ron() ->ssietic_sesynthte_rea
def c
__name__).getLogger(ogging
logger = l
)message)s' - %((levelname)ss - %ime)at='%(asct formO,
ging.INF level=logConfig(
ng.basicr
logginageport FAISSMaager ims_mandding.fais core.embefromext
onthot, WindowCcreensession, SRawSimport session ls.raw_ore.mode
from chBuilder import Grapraph_builder.graph.goreom cnt))
frparent.pare(__file__).ath(0, str(P.insertsys.pathdatetime
me import tetiath
from da import Pm pathliblogging
fro
import ysort s
imp""
ession.
" se vraiepturer unin de caoir beso
sans avilderGraphBuester le pour tynthétiquee session srée unpt ce scri
Cthétique
ssion Syn Selow avecn de Workftiotrucst de Cons""
Te
"hon3v pytbin/en#!/usr/

View File

@@ -0,0 +1,178 @@
#!/usr/bin/env python3
"""
Dashboard de monitoring de la santé du système de matching.
"""
import json
import time
import sys
from pathlib import Path
from datetime import datetime, timedelta
from typing import Dict, Any, List
from collections import deque
class MatchingHealthMonitor:
"""Moniteur de santé du système de matching."""
def __init__(
self,
failed_matches_dir: str = "data/failed_matches",
alert_threshold: int = 5,
window_minutes: int = 10
):
self.failed_matches_dir = Path(failed_matches_dir)
self.alert_threshold = alert_threshold
self.window_minutes = window_minutes
self.recent_failures = deque(maxlen=100)
self.last_check = None
def check_health(self) -> Dict[str, Any]:
"""Vérifier la santé du système."""
now = datetime.now()
# Charger les nouveaux échecs
new_failures = self._load_new_failures(since=self.last_check)
self.recent_failures.extend(new_failures)
self.last_check = now
# Calculer les métriques
metrics = {
'timestamp': now.isoformat(),
'total_failures_tracked': len(self.recent_failures),
'failures_last_10min': self._count_recent_failures(minutes=10),
'failures_last_hour': self._count_recent_failures(minutes=60),
'failure_rate_per_min': self._calculate_failure_rate(),
'avg_confidence': self._calculate_avg_confidence(),
'alerts': []
}
# Générer des alertes
metrics['alerts'] = self._generate_alerts(metrics)
return metrics
def _load_new_failures(self, since: datetime = None) -> List[Dict[str, Any]]:
"""Charger les nouveaux échecs."""
if not self.failed_matches_dir.exists():
return []
if since is None:
since = datetime.now() - timedelta(hours=1)
new_failures = []
for match_dir in self.failed_matches_dir.iterdir():
if not match_dir.is_dir():
continue
try:
timestamp_str = match_dir.name.replace("failed_match_", "")
timestamp = datetime.strptime(timestamp_str, "%Y%m%d_%H%M%S")
if timestamp > since:
report_path = match_dir / "report.json"
if report_path.exists():
with open(report_path, 'r') as f:
report = json.load(f)
report['_timestamp'] = timestamp
new_failures.append(report)
except:
continue
return sorted(new_failures, key=lambda x: x['_timestamp'])
def _count_recent_failures(self, minutes: int) -> int:
"""Compter les échecs récents."""
cutoff = datetime.now() - timedelta(minutes=minutes)
return sum(1 for f in self.recent_failures if f['_timestamp'] > cutoff)
def _calculate_failure_rate(self) -> float:
"""Calculer le taux d'échec par minute."""
if not self.recent_failures:
return 0.0
recent_count = self._count_recent_failures(minutes=self.window_minutes)
return recent_count / self.window_minutes
def _calculate_avg_confidence(self) -> float:
"""Calculer la confiance moyenne."""
if not self.recent_failures:
return 0.0
confidences = [f['matching_results']['best_confidence'] for f in self.recent_failures]
return sum(confidences) / len(confidences)
def _generate_alerts(self, metrics: Dict[str, Any]) -> List[Dict[str, str]]:
"""Générer des alertes."""
alerts = []
if metrics['failures_last_10min'] >= self.alert_threshold:
alerts.append({
'level': 'WARNING',
'type': 'HIGH_FAILURE_RATE',
'message': f"{metrics['failures_last_10min']} échecs en 10 min"
})
if metrics['avg_confidence'] < 0.60:
alerts.append({
'level': 'CRITICAL',
'type': 'LOW_CONFIDENCE',
'message': f"Confiance moyenne: {metrics['avg_confidence']:.3f}"
})
return alerts
def print_dashboard(self, metrics: Dict[str, Any]):
"""Afficher le dashboard."""
print("\n" + "="*70)
print("DASHBOARD DE SANTÉ DU MATCHING")
print("="*70)
print(f"Timestamp: {metrics['timestamp']}")
print(f"\n📊 Métriques")
print(f" • Échecs suivis: {metrics['total_failures_tracked']}")
print(f" • Échecs (10 min): {metrics['failures_last_10min']}")
print(f" • Échecs (1 heure): {metrics['failures_last_hour']}")
print(f" • Taux: {metrics['failure_rate_per_min']:.2f}/min")
print(f" • Confiance moy: {metrics['avg_confidence']:.3f}")
if metrics['alerts']:
print(f"\n🚨 Alertes ({len(metrics['alerts'])})")
for alert in metrics['alerts']:
icon = {'CRITICAL': '🔴', 'WARNING': '🟡', 'INFO': '🔵'}.get(alert['level'], '')
print(f" {icon} [{alert['level']}] {alert['type']}")
print(f" {alert['message']}")
else:
print(f"\n✅ Système en bonne santé")
print("\n" + "="*70)
def main():
import argparse
parser = argparse.ArgumentParser(description="Monitorer la santé du matching")
parser.add_argument('--continuous', action='store_true', help="Mode continu")
parser.add_argument('--interval', type=int, default=60, help="Intervalle (s)")
args = parser.parse_args()
monitor = MatchingHealthMonitor()
if args.continuous:
print("🔄 Monitoring continu... (Ctrl+C pour arrêter)")
try:
while True:
metrics = monitor.check_health()
monitor.print_dashboard(metrics)
time.sleep(args.interval)
except KeyboardInterrupt:
print("\n✓ Arrêté")
else:
metrics = monitor.check_health()
monitor.print_dashboard(metrics)
return 0
if __name__ == '__main__':
sys.exit(main())

View File

@@ -0,0 +1,129 @@
o ""log"
echashboard. -f logs/diltales logs : ier rif. Vé" 3ho rd"
ec --dashboa : ./run.shc dashboard ave Lancer 2.
echo " sh"n.n : ./rulicatioapper l' " 1. Lanccho :${NC}"
epeschaines étaBLUE}Proe "${"
echo -
echo ""C}${N════╝═══════════════════════════════════════════════════════N}╚═EE -e "${GR{NC}"
echo ║$ SIS TS RÉUSUS LES TES ✓ TO║ "${GREEN}"
echo -e {NC}═══════╗$═══════════════════════════════════════════════════${GREEN}╔══o -e "ch""
e
echo uvé"
fion tro.py noard appDashb{NC} ED}✗$"${Ro -e eche
fi
elsk)"asl flinstallé (pip instalFlask nonOW}⚠${NC} "${YELL echo -e e
els"
éallask inst${NC} Fl${GREEN}✓cho -e " e
then -eq 0 ];
if [ $?/dev/null2>rt flask" "impo-c ython3 plask
pendances Fier les dé
# Vérif "
.py trouvéboard app${NC} DashN}✓${GREEho -e "en
ecp.py" ]; thboard/apash"web_d-f "
if [ hboard...as d duérification${NC} V[4/4]LUE}e "${Bncé
echo -peut être laashboard le dfier que éri VTest 4:
#
fi
1
exitué" écho aConversion{NC} ED}✗$"${R echo -e
elseectement"
orrnne csion fonctio ConverEEN}✓${NC}-e "${GR
echo 0 ]; then
if [ $? -eqK")
EOF
le OPIL → tempfinumpy → rsion t("✓ Conveh)
prinpat(tmp_.unlink
osNettoyer)
# sys.exit(1eated")
e not crTemp fil print("
th):_pah.exists(tmpf not os.pater existe
iue le fichier q# Vérifih)
(tmp_patveil_image.saname
ppath = tmp.:
tmp_ tmpe) asalse=F deletng',='.pixaryFile(suffTempor.Named tempfilet
withairemender temporaruveg
# Sa
ot)y(screenshage.fromarraage = ImPIL
pil_imonvertir en it(1)
# Cexys.
sled")faiapture rint("✗ Cone:
phot is Nens
if screture()urer.caphot = captcreenspturer()
s = ScreenCa
capturer
port os
imepfiltemrt
impoport Image PIL imturer
from ScreenCap importcapturerreen_re.sccapturom core.)
ft(0, '.'.path.inseryss
st sy
imporF'EO< '3 <"
python PIL... numpy →onsi converst de la4]${NC} Te${BLUE}[3/echo -e " PIL
mpy →ion nu convers Vérifier la Test 3:fi
# exit 1
choué"
a érereenCaptu}✗${NC} Scr${REDho -e " ece
elsnt"
temee correcfonctionnenCapturer C} Scre}✓${NGREEN"${ echo -ethen
q 0 ]; $? -ef [ OF
i
Ehape}")reenshot.sOK: {sce (f"✓ Capturnt
pri1)
exit( sys.]}")
ape[2ot.sh{screenshchannels: Wrong "✗ print(f 3:
ape[2] !=reenshot.sh1)
if sct(s.exi sy")
nshot)} {type(screee:ng typ"✗ Wro print(frray):
daot, np.ncreenshstance(ssint i
if nos.exit(1)
)
syure failed"✗ Capt print("t is None:
hocreens
if sapture()r.capturehot = ceens)
scrurer(creenCaptcapturer = S as np
pyport numapturer
im ScreenCimporten_capturer ure.scre core.capt
fromsert(0, '.').path.int sys
sysimpor << 'EOF'
python3..."aptureru ScreenC${NC} Test dLUE}[2/4]"${Be
echo -e onnurer fonctiaptle ScreenCrifier que 2: Véest
# T
fi exit 1r.py"
rchestratouvée dans onon tro Correction ✗${NC} "${RED}ho -e eclse
pfile"
etem → numpy → PIL conversion quée :n appliCorrectioEN}✓${NC} -e "${GREho ecy; then
ator.pestrui/orchryFile" goraNamedTemp "tempfile.rep -q g.."
ifstrator.py.ction orchea correon de lificatiVér1/4]${NC} "${BLUE}[e
echo -ifiéodété mpy a tor.chestraorer le fichir quet 1: Vérifie}"
# Tes-e "${NC"
echo ════════════════════════════════════════════════════ "╚════════
echo ║" 3 ion VA VisRPions - rrect des Co Testcho ""
e╗═════════════════════════════════════════════════════════╔═══"
echo "e "${BLUE}ho -[0m'
ec
NC='\033[0;34m'\033E='m'
BLU1;33'\033[W=
YELLO033[0;31m'2m'
RED='\'\033[0;3e
GREEN=
set -sug de b correctionse test desScript dbin/bash
# #!/

View File

@@ -0,0 +1,157 @@
it 0
ex*.txt
/tmp/test_ge
rm -fettoya
# N
echo "".md"_READMETCHING_TOOLSMAn: tio "Documenta ""
echoply"
echoy --apching.p_improve_mat ./autorez:" 4. Amélio"
echo tches.py_mae_failedalyzz: ./anse 3. Analyo "
echchecs"nérer des égéions pour actuez des 2. Effect
echo "run.sh"tème: ./ez le sys1. Lanccho "
e:"étapesProchaines "
echo " "hoement"
ecnt correcttionne fonc les outils TousEEN}✓${NC}"${GR "
echo -eo "
ech═╝"═════════════════════════════════════════════════════════════ho "╚ec ║"
TS ESÉSUMÉ DES T R ""
echo ╗══════════════════════════════════════════════════════════════"
echo "╔ho "# Résumé
ec
fi
1it exove.txt
t_imprtest /tmp/"
caationorméli de l'a✗${NC} Échec{RED}o -e " $echlse
fi
eplète"comration inamélioAnalyse d'}⚠${NC} ${YELLOW-e " echo else
recte"
corélioration e d'amC} Analys${GREEN}✓${N -e " echo hen
t; tt_improve.txp/tes" /tmsaireécesation naméliore q "Aucun grep - || \
ve.txt/test_improNS" /tmpTIORAMÉLIORÉSUMÉ DES Aq "if grep -oin
as bes en a p n'yées ou qu'ilt proposons son améliorati que desifier Vér
# "
ion)mulat (siien réusslioratioC} AméGREEN}✓${N" ${ echo -e then
txt 2>&1;mprove./tmp/test_i> ng.py ove_matchito_imprthon3 auif py."
..tiqueutoman aamélioratioest de l'{NC} TOW}[4/4]$ -e "${YELL"
echo
echo "mulation) sie (modequmatiautotion : Améliora# Test 3it 1
fi
ext.txmonitorst_p/tecat /tm
ring"itou monC} Échec dD}✗${N " ${REo -ese
echfi
el"
d incompletshboar Da{NC} W}⚠$" ${YELLO -e echo else
"
rd correctboa DashEN}✓${NC}" ${GREo -e ech n
r.txt; theest_monito" /tmp/tMétriquesrep -q " gxt && \
nitor.ttmp/test_mo SANTÉ" /BOARD DEep -q "DASHs
if gruemétriqs contient lehboarde le dasier qu # Vérif
ssi"
ing réuC} Monitor{N ${GREEN}$-e " echo en
txt 2>&1; thitor.st_mony > /tmp/te_health.phingor_matc monitif python3
e santé..."onitoring dt du m4]${NC} TesW}[3/ "${YELLO -echo""
e
echo anténg de s: Monitori 2i
# Test
fxit 1xt
ealyze.ttmp/test_an
cat /se"l'analyc de }✗${NC} ÉcheRED-e " ${cho
else
ei
fplet"com inporte rapormat dOW}⚠${NC} F " ${YELL echo -e se
elorrect"port cape rmat d{NC} For ${GREEN}$-e " echo
txt; thenanalyze./test_tmp" /alesiques Génértist "Sta grep -q
xt && \analyze.ttest_/tmp/SE" NALY"RAPPORT D'Af grep -q is
dueenattctions ient les serapport cont le que # Vérifier
e"
ussise réAnaly}✓${NC} EN " ${GREho -e
ec 2>&1; thennalyze.txttmp/test_a--last 5 > /s.py matcheiled_e_fa analyz
if python3s..."d'échecl'analyseur est de ${NC} T[2/4]OW}"${YELLcho -e o ""
eechhecs
yse des éc 1: Analest
# Tiouvés"
fecs trL_COUNT éch} $FAI${NC ${GREEN}✓-e "ho
ecl)es | wc -chfailed_matls -1 data/L_COUNT=$(se
FAI
eléées"es crnées fictiv✓${NC} Don" ${GREEN}cho -e
e
n(512))"random.randng.npy', np.tate_embeddi140000/s51123_h_202matced_fails/heailed_matce('data/favs np; np.srt numpy a"impo -c hon3 pytictif
g finun embedd # Créer
}
EOFpe"
]totydu proe à jour mis, considéreror Main'alculatvec node 'C aoche (0.782)té primilariATE_NODE: S "UPDns": [
estiosugg },
" ]
}
: falsematched"
".850,hold": 0 "thres
": 0.782,ity"similar
Main","Calculator ": abel"node_l
e_001",d": "nod "node_i {
ies": [
similarit 3,
"ndidates":cam_ "nu0.850,
reshold": "th
82,": 0.7ceidennfest_co "b": {
esults"matching_r },
15
":ountts_c"ui_elemen
hot.png",/screens000123_140tch_20251iled_mamatches/fafailed_": "data/shot_path"screen or",
Calculattitle": " "window_{
": "state
3_140000",ch_2025112d_mat"faile": atch_id"failed_m",
040000251123_1"2mestamp": '
{
"ti'EOF.json << 0/report23_1400011_match_2025es/failedtchta/failed_macat > datif
N ficrt JSOn rappoer uré # C
23_140000match_202511ailed_s/fled_matcheata/fai mkdir -p d est
if pour le thec fict éc Créer un
#
ives..."onnées ficttion de dstant, créa l'in" Pourecho o ""
ch
ee script"z cce 3. Relan echo "
g"hinatcu mnt aoue échactions quies ctuez d 2. Effecho "sh"
eme: ./run.tèez le sysnc" 1. La echo "
:nnéesies do avec de vratester 💡 Pour echo "tré"
nregis eun échec " ⚠️ Aucecho
]; thennull)" v/hes 2>/ded_matc/failels -A data -z "$(" ] || [iled_matchesfad "data/
if [ ! -e test..."données dation des Prépar1/4]${NC} "${YELLOW}[re
echo -e nécessaist site de donnéesdes
# Créer
fiit 1 exion_v3/"
pa_vis rcript depuis scexécutez reur: E} Er{NCe "${RED}✗$ -hohen
ec; t.py" ]matchesyze_failed_-f "anal
if [ ! rtoire le bon répemmes dansso nous r queifie
# Vér0m'='\033[;31m'
NCED='\033[01;33m'
R3['\03LOW=ELm'
Y3[0;32'\03urs
GREEN=Coule"
# echo ""
═════════╝═══════════════════════════════════════════════════o "╚══
ech ║"NG MATCHIRATION DU D'AMÉLIOLS OUTIDES TEST "║
echo ════════╗"═════════════════════════════════════════════════════
echo "╔═
set -e
#
matchingation du éliorls d'amt des outit de tes#
# Scrip!/bin/bash
#

View File

@@ -0,0 +1,147 @@
"""
Tests d'intégration pour la récupération d'erreurs
Teste les scénarios complets de gestion d'erreurs :
- Récupération après échec de matching
- Récupération après target introuvable avec fallbacks
- Récupération après violation de post-conditions
- Détection et gestion de changements UI
- Rollback d'actions
"""
import pytest
import numpy as np
from pathlib import Path
from datetime import datetime
from unittest.mock import Mock, patch
import tempfile
import shutil
from core.execution.error_handler import ErrorHandler, RecoveryStrategy
from core.execution.action_executor import ActionExecutor, ExecutionStatus
from core.execution.target_resolver import TargetResolver
from core.graph.node_matcher import NodeMatcher
from core.models.screen_state import ScreenState, RawLevel, PerceptionLevel
from core.models.workflow_graph import WorkflowNode, WorkflowEdge, Action, ActionType
from core.models.ui_element import UIElement
from core.embedding.state_embedding_builder import StateEmbeddingBuilder
@pytest.fixture
def temp_dirs():
"""Créer des répertoires temporaires pour les tests."""
error_dir = tempfile.mkdtemp()
failed_matches_dir = tempfile.mkdtemp()
yield error_dir, failed_matches_dir
shutil.rmtree(error_dir)
shutil.rmtree(failed_matches_dir)
@pytest.fixture
def error_handler(temp_dirs):
"""Créer ErrorHandler pour les tests."""
error_dir, _ = temp_dirs
return ErrorHandler(error_log_dir=error_dir)
@pytest.fixture
def action_executor(error_handler):
"""Créer ActionExecutor avec ErrorHandler."""
target_resolver = TargetResolver()
return ActionExecutor(
target_resolver=target_resolver,
error_handler=error_handler,
verify_postconditions=True
)
@pytest.fixture
def node_matcher(error_handler, temp_dirs):
"""Créer NodeMatcher avec ErrorHandler."""
_, failed_matches_dir = temp_dirs
embedding_builder = StateEmbeddingBuilder()
return NodeMatcher(
embedding_builder=embedding_builder,
error_handler=error_handler,
failed_matches_dir=failed_matches_dir
)
@pytest.fixture
def mock_screen_state_with_button():
"""Créer un ScreenState avec un bouton."""
raw_level = RawLevel(
window_title="Test App",
screenshot_path=Path("/tmp/test.png"),
timestamp=datetime.now()
)
button = UIElement(
element_id="btn_1",
role="button",
text="Submit",
bbox=(100, 100, 200, 150)
)
perception_level = PerceptionLevel(
ui_elements=[button],
timestamp=datetime.now()
)
return ScreenState(
raw_level=raw_level,
perception_level=perception_level
)
class TestActionExecutorErrorRecovery:
"""Tests de récupération d'erreurs dans ActionExecutor."""
def test_target_not_found_triggers_error_handler(
self, action_executor
):
"""Test que target introuvable déclenche ErrorHandler."""
# Créer un état sans le bouton attendu
raw_level = RawLevel(
window_title="Test App",
screenshot_path=Path("/tmp/test.png"),
timestamp=datetime.now()
)
perception_level = PerceptionLevel(ui_elements=[], timestamp=datetime.now())
screen_state = ScreenState(raw_level=raw_level, perception_level=perception_level)
action = Action(
type=ActionType.MOUSE_CLICK,
target=Mock(role="button", text_pattern="Submit")
)
edge = WorkflowEdge(from_node="node_1", to_node="node_2", action=action)
result = action_executor.execute_edge(edge=edge, screen_state=screen_state)
assert result.status == ExecutionStatus.TARGET_NOT_FOUND
stats = action_executor.get_error_statistics()
assert stats['total_errors'] >= 1
class TestNodeMatcherErrorRecovery:
"""Tests de récupération d'erreurs dans NodeMatcher."""
def test_matching_failure_triggers_error_handler(
self, node_matcher, mock_screen_state_with_button
):
"""Test que l'échec de matching déclenche ErrorHandler."""
node = WorkflowNode(node_id="node_1", label="Different State")
node.matches = Mock(return_value=(False, 0.50))
result = node_matcher.match(
current_state=mock_screen_state_with_button,
candidate_nodes=[node]
)
assert result is None
stats = node_matcher.get_error_statistics()
assert stats['total_errors'] >= 1
if __name__ == '__main__':
pytest.main([__file__, '-v'])

View File

@@ -0,0 +1,81 @@
-v'])e__, 'in([__fil pytest.maain__':
me__ == '__m
if __na600
<= height'] ox[' + bbbox['y']sert b as
<= 800'] bbox['width + bbox['x'] assert 0
> ['height'] bbox assert > 0
dth'] x['wit bboasser
'] >= 0box['yssert b a >= 0
x['x'] bbossert a t.bbox
lemenbbox = e nts:
nt in elemeeme for el
image)ts(_elemenctetector.detelf.dlements = se
e00)ge(800, 6te_test_imaelf.crea s image =""
s."ident valxes soounding bo les b que """Test (self):
ditylinding_box_va test_bouef
d"
ut of boundsfidence} olement.con{efidence on f"C \
= 1.0, nce <onfident.c eleme0 <=0. assert ements:
elelement in for
(image)
elementsetect_ector.delf.det = sements el)
ge(est_imaelf.create_t = simage"
" et 1."e 0entrnce est confiae la"Test qu "" self):
ounds(onfidence_bef test_c d
nk']
eckbox', 'li'ch', t_inpututton', 'texype in ['bt element_t asser
n réelledétectio lors de la fiéeera vériopriété stte pr# Ce ):
ions.items(d_combinatin valioles d_re, valiypelement_tfor s
ces règlespecte ecteur re le détr quefie # Véri
} '],
ernal_linkion', 'extgatvi'na [k': 'lin e'],
t', 'toggl['form_inpueckbox': 'chd'],
sword_fielield', 'pasarch_fsenput', ' ['form_it_input': 'tex '],
ionondary_act 'sec'submit',cel', ', 'canction'primary_aton': [ 'but ns = {
ombinatiod_c valie
de cohérencègles finir les r # Dé
"""types.s et ôlence entre rreCohéerty 13: "Prop "" elf):
sistency(sone_c_typty_roleest_properef t
d0
ts) >= enlen(elemassert e
age blanch ime surut être vid # Pet)
ts, lisance(elemensert isinst as
ge)
ments(imat_eler.detectoec self.detements = el()
age_test_imcreateself.= image e."""
mage simpl sur it détection"Tes ""):
e_image(selfplect_on_simtest_detdef
elements')detect_ector, 'self.det hasattr(assert e
Non is not.detectorlfrt se asse "
""eur.ctteon du désatiiali init"Test ""
elf):lization(stor_initiaest_detec def t
hite')
or='wight), colhe, idthB', (ww('RGrn Image.ne retu""
".est de tgeimar une ""Crée "=600):
=800, heightidthge(self, wate_test_imacre def
tor()
tecector = UIDe self.det "
ue test.""aqchant av """Setup f):
ethod(selup_mef set
d"ctor.""teur UIDe po"Tests"":
tUIDetectores Tclass
tectorIDemport U_detector in.uiore.detectioion_v3.cispa_vfrom rport Image
L imm PIs np
fropy at nummpor
itest
import py
"""
3.3equirementses: Rlidat- Va
s typesrtain ce'àgnés quassieuvent être ôles ne pains r- Certs Per Type
enest Role Uniqu: UIElemen
Property 13 testing.
ty-based properector avecetr UIDaires pous unit"
Test""

View File

@@ -0,0 +1,101 @@
s())
t_importtessys.exit(
":_main__"_e__ == am_n
if _
rn 1
retu")
TH:$(pwd)PYTHONPAPYTHONPATH=$xport nt(" e prit:")
oire parenut le répertclTHONPATH inifier que PY vért(" 2. Ouin pr)
print( e .")
install -ip print(" p3")
n_vrpa_visio cd print("
ement:")ode développackage en mr le p. Installe(" 1print")
"SOLUTION:int(
prprint() ")
le}: {error}" - {modurint(f pors:
error in err, or module f()
print :")
ée(s)étect(s) drreurrrors)} e{len(ent(f"✗ pri else:
rn 0 retu ")
nfiguré.rectement cot est corje"Le pro print(
print()
ement!") correcttionnentmports foncs i✓ Tous le print("ors:
err if not
("=" * 60))
printSUMÉ"int("RÉ0)
pr" * 6"=nt( priint()
pr Résumé
#e)))
h", str(rap"workflow_gors.append(( err")
chec: {e}" ✗ É print(f or as e:
ortErrpt Imp")
excehwGrap: Workfloéussiort r(" ✓ Imp print
lowGraphWorkfort raph imp.workflow_gcore.modelsa_vision_v3. rp from
try:
)_graph..."flowwork Import de \nTest 5:nt("h
pri_graporkflowe w d5: ImportTest #
)))
str(ebedding",state_em.append(("errors )
c: {e}"heÉcrint(f" p or as e:
pt ImportErrxce e ")
teEmbedding: StassiImport réuint(" ✓ pr
edding StateEmbport imte_embeddingtamodels.sv3.core.rpa_vision_ from try:
.")
mbedding..te_ee start dmpo 4: I\nTestrint(" pg
e_embeddinport de stat Test 4: Im #
, str(e)))t"en("ui_elems.append( error ")
: {e}f" ✗ Échecint(
pre:rror as ImportEexcept
")IElementsi: U Import réusnt(" pri t
Elemenport UIlement im_e.models.uicoreion_v3.a_visrprom f try:
.")
ment..i_ele Import de u\nTest 3:nt(" prient
t de ui_elem Impor Test 3:
#
", str(e)))_state(("screenpendap errors.
c: {e}")f" Éche print(:
s eror artErImpoexcept
eenState")Scrréussi: port Im ✓ print("ate
creenSt Se importeen_statdels.scrre.mo3.copa_vision_vfrom r try:
")
tate...n_seet de scrporst 2: Im\nTe print("state
screen_t det 2: Impores # T
)
(e))", strsion"raw_ses.append((rrors e {e}")
Échec:f" print( ror as e:
ortEr except Impt")
ndowContext, Wienshocre, Event, SessionawSt réussi: Ror" ✓ Imp print(
)ext
dowCont Win
shot, Screen ,
Event
on, RawSessi t (
orsion impesels.raw_s.core.modision_v3m rpa_v fro
ry: tn...")
siot de raw_ses Impor"Test 1:int(
pr raw_session: Import de# Test 1
ors = []
errt()
prin"=" * 60)nt(
pri")3PA VISION V RRTS -N DES IMPOVÉRIFICATIO print(" * 60)
"("=
printt"""
du projeprincipaux imports este les""T):
"ts( test_impor
defmport Pathib ifrom pathlys
import s
""
" d'imports.n du systèmetioorrec la caprèst
correctementionnent ncs fos importous le te queifiript vérv3
Ce scsion_r rpa_vits pou imporon desicativérif
Script de
"""python3sr/bin/env #!/u