"""Probe-Backend des Koordinators: die echte App mit Attrappe und Wegwerf-Register auf eigenem Port. Kein Broker-Aufruf, kein Ereignis im echten Register. Aufruf aus dem Projektordner: python start_probe_backend.py [sendeintervall_s] """ import dataclasses import sys import tempfile 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.killswitch.killswitch import lade_killswitch_config from trading.registry.registry import Registry port = int(sys.argv[1]) config = lade_dashboard_config("config/dashboard.toml") aenderungen = {"port": port, "broker_wahl": "attrappe"} if len(sys.argv) > 2: aenderungen["sendeintervall_s"] = float(sys.argv[2]) config = dataclasses.replace(config, **aenderungen) temp = Path(tempfile.mkdtemp(prefix="probe-backend-")) app = erzeuge_app( broker=BrokerAttrappe(), registry=Registry(db_pfad=temp / "registry.db", artefakt_wurzel=temp / "artifacts"), config=config, killswitch_config=lade_killswitch_config("config/killswitch.toml"), dist=Path("dashboard/dist"), ) print(f"Probe-Backend auf 127.0.0.1:{port}, Takt {config.sendeintervall_s} s, Register {temp}", flush=True) uvicorn.run(app, host="127.0.0.1", port=port, log_level="warning")