v1.0 - Version stable: multi-PC, détection UI-DETR-1, 3 modes exécution

- Frontend v4 accessible sur réseau local (192.168.1.40)
- Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard)
- Ollama GPU fonctionnel
- Self-healing interactif
- Dashboard confiance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Dom
2026-01-29 11:23:51 +01:00
parent 21bfa3b337
commit a27b74cf22
1595 changed files with 412691 additions and 400 deletions

View File

@@ -0,0 +1,151 @@
e 1)cess elsf sucexit(0 i
sys.=")'ÉCHOUÉ'} ==ess else ccif suSSI' ÉU'R Test {f"\n===
print(load_flow()omplete_up test_c =ccess suin__":
_ == "__ma
if __name_False
return _exc()
eback.print trac
eback tracimport ")
e}ion: {sessla éation de cr lors de la Erreur print(f"❌ :
n as etioep Exccept
ex
n False retur ")
e}requête: { Erreur de t(f" ❌ prin s e:
tException aquesxceptions.Requests.e except re
se
Fal return )
[:500]}"text {response.Réponse:int(f" pr
_code}")tussponse.staTP {rer HTreu(f" Er print else:
e
Tru return )
non-JSON)"ponseussi (rérépload Unt(f" pri eError:
od.JSONDecjson except n True
retur
")}('user')a.get_datesponseeur: {risatt(f" Util prin )
unt')}"reenshots_coata.get('scsponse_drets: {nshoScree" nt(f pri nt')}")
ts_cout('evenata.geponse_dres: {reçusénements int(f" Év pr ")
ion_id')}a.get('sessponse_datesn ID: {r Sessioprint(f" )
ad réussi!" ✅ Uplot(f" prin
json()ponse.= resta e_da respons try:
0:
== 20tatus_code response.sif
")
_code}se.statusP: {respon Status HTTt(f" prin
)
t=30
timeou ,
=headersrs heade ,
data=data files,
files=
er_url,rv se post(
sts.onse = reque resp
} "
n}toke{auth_"Bearer zation": fhori "Aut
= {ders hea
} _id,
on.sessiontest_sessid": _i"session {
= data }
"),
reamston/octet-licati, f, "appd_path)e(encrypteh.basenam.pate": (os"fil = {
files :
") as fth, "rbd_papteencrypen( with o y:
tr
..")
rveur.s le seoad ver\n3. Upl("rint p
le serveurverser # 3. Upload
")
bytes)} ath_pede(encryptth.getsiz.paille: {osint(f" Ta pr")
th}rypted_pa: {enciffréer ch Fichi" (f print )
")
n_passwordencryptiog.get("ent_confi=agassword p =True,
encryption enable_ tmpdir,
ssion,
est_se t
cryption(_enithon_zip_wcreate_sessited_path = ncryp e chiffré
le fichier Créer #
")
ents)}session.evn(test_ents: {le" Événemrint(f p
d}")ion_ision.sessst_ses{teéée: Session crf" print()
tmpdirave_json(session.sest_ t sion
r la ses Sauvegarde #r:
pdi tmory() asirect.TemporaryDtempfileith w
session()on.end_t_sessi tes)
"}orldello W"H {"key": key",_event("session.add test_t"})
"lefon": tt0, "bu "y": 200, 10, {"x":ck"_event("clisession.addtest_
ts de tests événemenuelqueter qAjou
#
]
)=[1920, 1080olution_res screen host",
"test_ hostname= ",
m="linuxfor plat",
low_upload_f"testd=er_i us reate(
ession.csion = RawSt_ses tesst
tee session de # Créer un
r_config()
_usenfig = loadco agent_g agent
er la confi # Charg
nfig
coer_rt load_uspofig imuser_conv0.nt_ from age
ryptionip_with_encsession_z create_d importyptee_encroragst0.om agent_v
frsionport RawSes imionw_sessgent_v0.ra from a
try:..")
n chiffrée.iod'une sessréation t("\n2. Cprint
vec l'agenhiffrée a session c une 2. Créer #lse
return Fa
te")ncomplè iserveurration " Configuint(pr
n:tokeot auth_ nl ort server_ur
if no")
ÉFINIn: NON D toke" Authn else f auth_toke:16]}..." i_token[{authn: h toket(f" Autin
pr}")server_url: {ver URL(f" Serrint p
")
_TOKEN_ADMIN"RPAs.get(env_varn = auth_toke")
SERVER_URLet("RPA_env_vars.grver_url = se
p()= value.stririp()] vars[key.st env_ )
, 1e.split('='in lkey, value = n line:
) and '=' iartswith('#'.stot linend n aine if l )
strip(line = line. in f:
for line r') as f:
path, 'v_local_h open(en wit {}
s =var env_cal
env.lo . Parser
#alse
Freturn
vable")ntrou i.localnvFichier .e print(" :
s()l_path.existcaenv_loot ")
if nallocenv.".(path = Pathocal_v_l enal
v.locenrger .Cha#
..")
ations.s configurrgement de. Chaint("\n1 prations
es configur Charger l
# 1.
t ===")remenec chiffd avd'uploau flux complet d Testt("===prin """
ment.ffrehivec cpload a'u dux flet du"Test compl):
""ow(e_upload_flmplet test_co
def)
")t_v0t / "agen.paren__file__)ath(ert(0, str(Pys.path.ins)
sparent)__).th(__file, str(Pah.insert(0s.patsyaires
emins nécessr les ch
# Ajoute Path
ib importrom pathl
f jsonimport
ort requests
impfileport tempsys
imort os
import """
imper
iffrpeut la déchrveur le seuee qVérifiveur
4. rs le sere ve'uploadurée
3. La clé confige avec lchiffr. La
2 l'agent v0on avecessine sée ust:
1. Cr te
Ce
ement.ec chiffrload av'updu flux d complet est"
T
""on3v pythbin/en#!/usr/