Dinoer

Spickzettel

Alle Befehle, Aktionen und Exit-Codes auf einer Seite – der Spickzettel des Repositorys, unverändert übernommen.

Version 1.0.1 — September 2026

Alles auf einer Seite. Vollständige Referenz: docs/MANUEL.md.


Drei Befehle

# Eine Seite sehen: Accessibility-Baum
/opt/dinoer/venv/bin/python /opt/dinoer/shot.py --url URL --a11y

# Ein Szenario ausführen
/opt/dinoer/venv/bin/python /opt/dinoer/rpa.py --scenario DATEI.json

# Eine Szenario-Referenz lesen und vergleichen (strukturelle Überwachung)
/opt/dinoer/venv/bin/python /opt/dinoer/rpa.py \
  --scenario DATEI.json --replay-verifier REF.json

Der erste Aufruf auf einer Maschine benötigt --guide-version X.Y, zu lesen mit grep notice-version /opt/dinoer/docs/GUIDE_LLM.md.


Die Schleife

        Sie entscheiden, was als Nächstes zu tun ist
                  │
                  ▼
   ┌──────────────────────────────┐
   │  shot.py / rpa.py            │   ein Prozess, ein JSON auf stdout
   │    ├─ Chromium (headless)    │
   │    ├─ A11y: Seitenstruktur   │
   │    └─ secrets: füllt Credentials aus│   nie in der Shell, nie in einem Log
   └──────────────┬───────────────┘
                  │  boussole + JSON
                  ▼
        Sie lesen denselben Zustand,
        den auch der Betreiber sehen kann

Der Sitzungszustand lebt in einer Datei, nicht im Prozess: ein zweiter Aufruf mit --reprendre-session nutzt Cookies wieder — nie den DOM-Zustand.


Die Ausgabe in dieser Reihenfolge lesen

LesenSagt Ihnen
succesob der Lauf abgeschlossen wurde
boussole.url_courantewo Sie tatsächlich gelandet sind
boussole.dernier_code_httpStatus der letzten Navigation
etat.pret_a_agir + etat.raisonswahrgenommene Friktionen — ein Bericht, nie eine Schranke
a11y_treeSeitenstruktur — Überschriften, Felder, Schaltflächen
respectIhr eigener Fußabdruck: Seiten, Aktionen, Dauer

Stimmt boussole nicht mit Ihrer Erwartung überein: vor jeder mutierenden Aktion anhalten.


Jede Aktion

type ist immer erforderlich. Die folgenden Schlüssel sind die zusätzlichen.

AktionErforderlichOptional
naviguerurl—
cliquerselecteurforce, repli_js
cliquer_iframeiframe_selecteur | iframe_chemin, selecteurforce
remplirselecteur, valeursecret_cle
remplir_iframeiframe_selecteur | iframe_chemin, selecteur, valeursecret_cle
evaluerscriptattendu | contient | motif
extraire_texte——
defilerpx | selecteur—
pausems—
attendreselecteur—
attendre_selecteur_presentselecteur—
attendre_absenceselecteurdelai_initial_ms
attendre_navigation——
attendre_urlmotifattendre_changement
attendre_reseau_calme—timeout_ms
attendre_mfa_ntfyselecteurtimeout
nettoyer_overlayselecteur—
declencher_scenarioscenario—

Credentials — die einzig korrekte Form

{"type": "remplir", "selecteur": "input[name=\"password\"]", "valeur": "depuis_secrets", "secret_cle": "password"}

Nie ein Secret in die Shell extrahieren. lib/repertoire_chiffre.py löst es innerhalb des Playwright-Prozesses auf; der Wert erreicht nie Ihre Kommandozeile, Ihre History oder ein Log.


Wenn sich etwas sperrt

SymptomVersuchen
Klick läuft in Timeout, Element visuell verborgen"force": true, dann "repli_js": true
Element unterhalb des sichtbaren Bereichszuerst defiler
Seite wird nie fertig geladen--wait-until load
Absenden bewirkt nichts, kein Fehlernative HTML-Validierung — Formular über evaluer absenden
exit 42verschlüsseltes Verzeichnis nicht gemountet (bash ~/git/Dinoer/Dinoer/scripts/monter-repertoire-chiffre.sh), oder Prüfsumme der Credentials ungültig (Credentials-Datei prüfen) — beides SecretsFermesError
guide_non_lueinmalig --guide-version übergeben
403 / 429respect.waf_bloquants lesen — ein Signal, keine Ausnahme

Exit-Codes

0 Erfolg · 1 Ausführung fehlgeschlagen oder Assertion fehlgeschlagen · 2 Ungültige Argumente (abgelehnt, bevor ein Browser gestartet wurde) · 3 Falscher Interpreter – verwenden Sie die venv (/opt/dinoer/venv/bin/python) · 42 Verschlüsselter Credential-Verzeichnis geschlossen oder Prüfsumme der Credentials ungültig (SecretsFermesError Familie) · 43 Keine secrets_dir konfiguriert (SecretsNonConfigureError).