)
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("\nℹ️nfo 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 dé"\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/