Automatischer Push: 8 Datei(en) geändert
- .vault-tools/trading-plattform-pruefung/LIESMICH.md - .vault-tools/trading-plattform-pruefung/angriffe.py - .vault-tools/trading-plattform-pruefung/browserlauf_zugang.py - .vault-tools/trading-plattform-pruefung/handabruf_kerzen.py - .vault-tools/trading-plattform-pruefung/lies_paper_protokoll.py - .vault-tools/trading-plattform-pruefung/pruef_beobachtung_echt.py - .vault-tools/trading-plattform-pruefung/start_probe_backend.py - .vault-tools/trading-plattform-pruefung/start_probe_zugang.py 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
3bb28e4b3c
commit
371a1f5d2a
8 files changed
+890
-3
No files matched your search
@@ -0,0 +1,109 @@
|
||||
"""Probe-Backend mit Anmeldung: die echte App mit Attrappe, Wegwerf-Register und Wegwerf-Zugang.
|
||||
|
||||
Koordinator-Werkzeug zu Teil 10, nicht fuers Repo. Kein Broker-Aufruf, kein Ereignis im echten
|
||||
Register, keine echte Zugangsdatei. Der Wegwerf-Zugang traegt ein bekanntes Passwort und das
|
||||
Beispielgeheimnis der TOTP-Literatur; beides steht in zugang.json im Ausgabeordner, damit
|
||||
angriffe.py und der Browser-Lauf sich anmelden koennen.
|
||||
|
||||
Aufruf aus dem Projektordner (oder einer Kopie davon):
|
||||
python start_probe_zugang.py <port> <ausgabeordner> [mit-paperstatus]
|
||||
"""
|
||||
|
||||
import dataclasses
|
||||
import json
|
||||
import sys
|
||||
from datetime import UTC
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
import uvicorn
|
||||
|
||||
from trading.broker.attrappe import BrokerAttrappe
|
||||
from trading.dashboard.app import erzeuge_app
|
||||
from trading.dashboard.config import lade_dashboard_config
|
||||
from trading.dashboard.zugang import Benutzer
|
||||
from trading.dashboard.zugang import schreibe_benutzer
|
||||
from trading.dashboard.zugang import setze_passwort
|
||||
from trading.killswitch.killswitch import lade_killswitch_config
|
||||
from trading.registry.registry import Registry
|
||||
|
||||
BENUTZER = "probe"
|
||||
PASSWORT = "nur-fuer-die-probe-2026"
|
||||
GEHEIMNIS = "JBSWY3DPEHPK3PXP"
|
||||
|
||||
port = int(sys.argv[1])
|
||||
ordner = Path(sys.argv[2])
|
||||
ordner.mkdir(parents=True, exist_ok=True)
|
||||
mit_status = len(sys.argv) > 3 and sys.argv[3] == "mit-paperstatus"
|
||||
|
||||
zugang_datei = ordner / "zugang.toml"
|
||||
schreibe_benutzer(
|
||||
zugang_datei,
|
||||
{BENUTZER: Benutzer(name=BENUTZER, passwort=setze_passwort(PASSWORT), totp_geheimnis=GEHEIMNIS)},
|
||||
)
|
||||
(ordner / "zugang.json").write_text(
|
||||
json.dumps({"benutzer": BENUTZER, "passwort": PASSWORT, "geheimnis": GEHEIMNIS}),
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
paper_ordner = ordner / "paper"
|
||||
paper_ordner.mkdir(exist_ok=True)
|
||||
status_datei = ordner / "status.json"
|
||||
if mit_status:
|
||||
protokoll = paper_ordner / "2026-09-18T131502-paper.jsonl"
|
||||
zeilen = [
|
||||
{"art": "kopf", "modus": "paper"},
|
||||
{"art": "takt", "schritt": 1, "phase": "handelt", "position": 10, "zielposition": 10},
|
||||
]
|
||||
protokoll.write_text("\n".join(json.dumps(z) for z in zeilen) + "\n", encoding="utf-8")
|
||||
status_datei.write_text(
|
||||
json.dumps(
|
||||
{
|
||||
"zeit": datetime.now(UTC).isoformat(),
|
||||
"modus": "paper",
|
||||
"phase": "handelt",
|
||||
"agent": {
|
||||
"quelle": "register",
|
||||
"name": "aapl-minute-ppo",
|
||||
"version": "v20260907-074410",
|
||||
"status": "paper",
|
||||
},
|
||||
"instrument": "AAPL.XNAS",
|
||||
"killswitch": "aktiv",
|
||||
"position": 10,
|
||||
"zielposition": 10,
|
||||
"letzte_aktion": {"zeit": datetime.now(UTC).isoformat(), "aktion": 3, "stufe": 1},
|
||||
"letzte_kerze": datetime.now(UTC).replace(second=0, microsecond=0).isoformat(),
|
||||
"orders": 1,
|
||||
"kontowert": 100012.5,
|
||||
"startkapital": 100000.0,
|
||||
"hinweis": None,
|
||||
"protokoll": str(protokoll),
|
||||
"pid": 1,
|
||||
}
|
||||
),
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
config = dataclasses.replace(
|
||||
lade_dashboard_config("config/dashboard.toml"),
|
||||
port=port,
|
||||
broker_wahl="attrappe",
|
||||
sendeintervall_s=2.0,
|
||||
erlaubte_hosts=(f"127.0.0.1:{port}", f"localhost:{port}"),
|
||||
anmeldung_pflicht=True,
|
||||
mfa_pflicht=True,
|
||||
zugang_datei=str(zugang_datei),
|
||||
zugang_protokoll=str(ordner / "anmeldungen.jsonl"),
|
||||
paper_status_datei=str(status_datei),
|
||||
paper_protokoll_ordner=str(paper_ordner),
|
||||
)
|
||||
app = erzeuge_app(
|
||||
broker=BrokerAttrappe(),
|
||||
registry=Registry(db_pfad=ordner / "registry.db", artefakt_wurzel=ordner / "artifacts"),
|
||||
config=config,
|
||||
killswitch_config=lade_killswitch_config("config/killswitch.toml"),
|
||||
dist=Path("dashboard/dist"),
|
||||
)
|
||||
print(f"Probe-Backend mit Anmeldung auf 127.0.0.1:{port}, Ablage {ordner}", flush=True)
|
||||
uvicorn.run(app, host="127.0.0.1", port=port, log_level="warning", server_header=False, proxy_headers=False)
|
||||
Reference in new issue
Block a user