Files
rpa_vision_v3/scripts/paste_and_execute_linuxdb.sh
Dom 5ea4960e65
Some checks failed
tests / Lint (ruff + black) (push) Successful in 1m50s
tests / Tests unitaires (sans GPU) (push) Failing after 1m50s
tests / Tests sécurité (critique) (push) Has been skipped
backup: snapshot post-démo GHT 2026-05-19
Backup état complet après enregistrement vidéo démo de bout en bout.
À utiliser comme point de référence pour la consolidation post-démo.

Changements majeurs de la session 18-19 mai :
- AIVA-URGENCE : page autonome avec preset URL + auto-focus chain
- Workflow Demo_urgence_3_db : merge linux_db + steps AIVA + pause humaine NoMachine
- Bypass LLM (static_result / static_text) dans replay_engine
  pour démos déterministes sans appel Ollama
- Fix api_stream:3013 — replay_paused au premier polling /next
- dag_execute : lift duration_ms vers top-level pour wait runtime
- NPM bypass auth /aiva-urgence/ via location ^~ (proxy_host/10.conf hors git)
- scripts/cancel-replays.sh — workaround Stop VWB qui ne purge pas la queue

Anchors visuels (468) forcés dans le commit pour garantir restorabilité.
DB workflows actuelle + ~12 .bak DB de la journée incluses.

Sujets identifiés pour consolidation post-démo (TODO) :
1. Bug VWB recapture anchor ne régénère pas le PNG
2. Léa client accumule état mémoire (restart périodique requis)
3. Stop VWB ne purge pas la queue serveur (lien manquant vers /replay/cancel)
4. Bug coord client mss tronqué 2560x60 → mapping Y cassé
5. delay_before/delay_after ignorés au runtime (fix partiel duration_ms)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 14:55:06 +02:00

71 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Déclenche manuellement le Ctrl+V puis Ctrl+Enter dans DBeaver de la VM via ydotool.
# Contournement nécessaire car NoMachine en "passive grab" mange la touche Ctrl
# envoyée par pynput depuis Léa Windows (les clics passent, pas les key combos).
#
# Pré-conditions (vérifiées + auto-réparées par ce script) :
# - ydotoold tourne dans la VM avec socket /tmp/.ydotool_socket (perm 0666)
# - Le gardien clipboard (prepare_clipboard_linuxdb.sh) maintient le INSERT
# dans les clipboards Wayland + X11 de la VM
#
# Pré-condition manuelle (le script ne peut pas la vérifier) :
# - DBeaver console <demo_95 2> a le focus dans la zone éditeur SQL
#
# Usage : lancer juste après les clics du workflow linux_db (entre ord 7 et ord 8).
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VM_HOST="dom@192.168.122.132"
SSH_PASS="loli"
SUDO_PASS="loli"
YDOTOOL_SOCKET="/tmp/.ydotool_socket"
ssh_vm() {
SSHPASS="$SSH_PASS" sshpass -e ssh -o StrictHostKeyChecking=no "$VM_HOST" "$@"
}
# 1. Vérifier ydotoold (doit être lancé en amont par opérateur — voir handoff §5)
# Le script ne tente PAS de le relancer car invoqué depuis le serveur systemd
# qui n'a pas de TTY → sudo via stdin échoue silencieusement.
if ! ssh_vm "test -S $YDOTOOL_SOCKET"; then
echo "ERREUR: ydotoold (socket $YDOTOOL_SOCKET) absent dans la VM" >&2
echo "Lance manuellement depuis terminal VM (TTY) :" >&2
echo " sudo ydotoold --socket-path=$YDOTOOL_SOCKET --socket-perm=0666 &" >&2
exit 1
fi
# 2. Vérifier gardien clipboard, relancer si nécessaire
GUARD_OK=$(ssh_vm "
if [ -f /tmp/clipboard_guard.pid ]; then
P=\$(cat /tmp/clipboard_guard.pid)
kill -0 \$P 2>/dev/null && echo OK || echo DEAD
else
echo MISSING
fi
")
if [ "$GUARD_OK" != "OK" ]; then
echo "[setup] gardien clipboard absent/mort ($GUARD_OK), relance via prepare_clipboard_linuxdb.sh…"
"$SCRIPT_DIR/prepare_clipboard_linuxdb.sh" || {
echo "ERREUR: échec préparation clipboard" >&2
exit 1
}
fi
# 3. Envoyer Ctrl+V (scan codes : Ctrl=29, V=47)
echo "[ydotool] Ctrl+V"
ssh_vm "YDOTOOL_SOCKET=$YDOTOOL_SOCKET ydotool key 29:1 47:1 47:0 29:0"
# 4. Délai pour que DBeaver finisse de coller (~1.6k chars)
sleep 0.5
# 5. Envoyer Ctrl+Enter (scan codes : Ctrl=29, Enter=28)
echo "[ydotool] Ctrl+Enter"
ssh_vm "YDOTOOL_SOCKET=$YDOTOOL_SOCKET ydotool key 29:1 28:1 28:0 29:0"
echo ""
echo "OK INSERT collé et exécuté dans DBeaver."
echo ""
echo "Pour vérifier en base demo_95 :"
echo " sshpass -p $SSH_PASS ssh $VM_HOST \"python3 -c 'import sqlite3; c=sqlite3.connect(\\\"/home/dom/demo_95\\\"); print(list(c.execute(\\\"SELECT id,nom_patient,date_creation FROM requalification_urgence ORDER BY id DESC LIMIT 2\\\")))'\""