Automatischer Push: 19 Datei(en) geändert
- .vault-tools/plan-kopie/LIESMICH.md - .vault-tools/plan-kopie/rot_nachweis.py - .vault-tools/plan-kopie/welle_vergleich.py - .vault-tools/plan-kopie/welle_vergleich_treiber.py - .vault-tools/trading-plattform-pruefung/LIESMICH.md - .vault-tools/trading-plattform-pruefung/angriffe.py - .vault-tools/trading-plattform-pruefung/browserlauf.py - .vault-tools/trading-plattform-pruefung/browserlauf_zugang.py - .vault-tools/trading-plattform-pruefung/c_eigenlauf.py - .vault-tools/trading-plattform-pruefung/d_eigenlauf.py - .vault-tools/trading-plattform-pruefung/handelstag_auswertung.py - .vault-tools/trading-plattform-pruefung/ntfy_probe_server.py - … und 7 weitere Erzeugt vom PostToolUse-Hook .vault-tools/auto-push/auto_push.py. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
1 parent
371a1f5d2a
commit
395642c480
19 files changed
+1636
-32
No files matched your search
@@ -0,0 +1,52 @@
|
||||
"""Zeigt den Stand des laufenden Paper-Runners aus seinem Protokoll: Zeilen je Art, letzter Takt, Phase, Killswitch.
|
||||
|
||||
Liest nur. Gibt keine Kontowerte aus, nur Zaehler, Zeiten, Phase, Zustand und Stueckzahl der Position.
|
||||
Aufruf: python runner_stand.py [<protokoll.jsonl>] (ohne Angabe das neueste *-paper.jsonl im echten Projektordner)
|
||||
"""
|
||||
|
||||
import json
|
||||
import sys
|
||||
from collections import Counter
|
||||
from pathlib import Path
|
||||
|
||||
ORDNER = Path("/mnt/d/Claude/Code Projekte/active - Trading Plattform/artifacts/paper")
|
||||
ZEIGEN = ("zeit", "phase", "killswitch", "zustand", "position", "frisch", "letzte_kerze", "aktion", "stufe", "grund", "exit_code")
|
||||
|
||||
|
||||
def main() -> int:
|
||||
if len(sys.argv) > 1:
|
||||
pfad = Path(sys.argv[1])
|
||||
else:
|
||||
kandidaten = sorted(ORDNER.glob("*-paper.jsonl"), key=lambda p: p.stat().st_mtime)
|
||||
if not kandidaten:
|
||||
print("kein Protokoll gefunden")
|
||||
return 3
|
||||
pfad = kandidaten[-1]
|
||||
zeilen = []
|
||||
with open(pfad, encoding="utf-8") as datei:
|
||||
for zeile in datei:
|
||||
if zeile.strip():
|
||||
try:
|
||||
zeilen.append(json.loads(zeile))
|
||||
except ValueError:
|
||||
pass
|
||||
print(f"protokoll: {pfad.name}, {len(zeilen)} Zeilen")
|
||||
arten = Counter(str(z.get("art")) for z in zeilen)
|
||||
print("zeilen je art:", dict(arten))
|
||||
if zeilen:
|
||||
print("schluessel der ersten zeile:", sorted(zeilen[0]))
|
||||
takte = [z for z in zeilen if z.get("art") == "takt"]
|
||||
if takte:
|
||||
print("schluessel einer taktzeile:", sorted(takte[-1]))
|
||||
print("phasen:", dict(Counter(str(z.get("phase")) for z in takte)))
|
||||
print("killswitch:", dict(Counter(str(z.get("killswitch")) for z in takte)))
|
||||
letzter = takte[-1]
|
||||
print("letzter takt:", {k: letzter[k] for k in ZEIGEN if k in letzter})
|
||||
for z in zeilen:
|
||||
if z.get("art") in ("order", "ende", "stoerung", "abbruch", "grenze"):
|
||||
print(z.get("art"), {k: z[k] for k in ZEIGEN + ("seite", "menge", "status") if k in z})
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in new issue
Block a user