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>
71 lines
2.7 KiB
Bash
Executable File
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\\\")))'\""
|