feat: lea_uia — helper Rust Windows UI Automation (cross-compilé)
Premier pas de l'Option B hybride : vision + UIA pour Windows natif. Pourquoi Rust ? - Binaire standalone ~500 Ko, aucune dépendance runtime - 5-10x plus rapide que pywinauto (10-20ms par query vs 50-200ms) - Compilation cross-platform depuis Linux (x86_64-pc-windows-gnu) - Safe : pas de crash sur null pointer ou memory leak - Préparation d'un déploiement industriel robuste Commandes : - query --x N --y N : élément UIA à cette position - find --name "..." --control-type "..." : recherche par nom - capture --max-depth N : élément focus + hiérarchie - health : vérifier que UIA est dispo Sortie JSON structurée (stdin/stdout pour IPC avec Python). Stub Linux pour dev/tests sans Windows. Validé sur VM Windows : - query (100,100) → "Bureau 1" en 18ms - query (500,400) → "Bureau 1" en 12ms - find "Rechercher" → not_found en 11ms (normal, rien d'ouvert) Le binaire lea_uia.exe sera packagé avec Léa dans C:\Lea\helpers\ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
34
agent_rust/lea_uia/Cargo.toml
Normal file
34
agent_rust/lea_uia/Cargo.toml
Normal file
@@ -0,0 +1,34 @@
|
||||
[package]
|
||||
name = "lea_uia"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
authors = ["Dom <dom@rpa-vision-v3>"]
|
||||
description = "Helper Windows UI Automation pour Léa (agent RPA V3)"
|
||||
license = "Proprietary"
|
||||
|
||||
[[bin]]
|
||||
name = "lea_uia"
|
||||
path = "src/main.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "4.5", features = ["derive"] }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
windows = { version = "0.59", features = [
|
||||
"Win32_Foundation",
|
||||
"Win32_System_Com",
|
||||
"Win32_System_Ole",
|
||||
"Win32_System_Variant",
|
||||
"Win32_UI_Accessibility",
|
||||
"Win32_UI_WindowsAndMessaging",
|
||||
"Win32_Graphics_Gdi",
|
||||
] }
|
||||
|
||||
[profile.release]
|
||||
opt-level = "z" # Taille minimale
|
||||
lto = true # Link-time optimization
|
||||
codegen-units = 1 # Meilleure optimisation
|
||||
strip = true # Retirer les symboles
|
||||
panic = "abort" # Pas d'unwinding → binaire plus petit
|
||||
Reference in New Issue
Block a user