Vier Punkte aus der Durchsicht von f923721. Alles Uebrige traegt: Anmeldung
greift (unangemeldet 401 auf jedem /api-Pfad ausser status und login), alle
zwanzig Endpunkte antworten, SSE laeuft, die Oberflaeche zeigt echte Zahlen,
die Daemon-Schalter funktionieren weiter, und die Modul-Routen sitzen richtig
im Hosting-Projekt statt im Core.
1. Die Endpunkte /positions/lock und /positions/reassign deuteten den
Instrumentenschluessel mit InstrumentRef.ForStock als Ticker. Bei einer Aktie
ging das zufaellig gut - die Waehrung fiel still auf USD, der Schluessel kam
trotzdem richtig heraus. Bei einem Optionskontrakt warf Normalize wegen des
Trennzeichens "|" eine Ausnahme: HTTP 500 ohne Text, auf der Testmaschine
reproduziert. Jetzt InstrumentRef.TryParse, und ein unlesbarer Schluessel
ebenso wie ein unsinniger Buchname ergibt eine Antwort statt eines Absturzes.
2. OrderManager las UseTwsApi als Erreichbarkeitsnachweis. Das ist eine
Einstellung, kein Zustand - sie steht auch dann auf true, wenn TWS nicht
laeuft. Die Ansicht haette waehrend jeder Stoerung "Broker erreichbar, keine
offenen Orders" gemeldet und jede Bindung als grundlos dargestellt. Genau
davor warnt die Beschreibung an IBrokerOrderBook.GetOpenOrdersAsync.
3. AllowRemoteAccess stand als Vorgabe auf true: erster Start heisst 0.0.0.0,
Klartext-HTTP, und der AuthToken ist anfangs leer. Ausnutzbar war das nicht
(ohne Token faellt die Anmeldung zu, alles antwortet 401), aber die Vorgabe
zeigte in die falsche Richtung. Jetzt lokal, mit Begruendung im Text.
4. Das Sitzungstoken stand im Query-String des SSE-Stroms. Unnoetig: EventSource
schickt das HttpOnly-Cookie bei gleichem Ursprung von selbst. Die Oberflaeche
nutzt den Weg nicht mehr, und AuthService nimmt ihn nur noch fuer
/api/logs/stream an - ein Query-String landet in Logs, Verlauf und Referer.
Geminis Test auf den Query-Token bestand auf dem alten, breiten Verhalten. Er
ist durch zwei ersetzt, die die enge Regel in beide Richtungen festhalten.
499 Tests gruen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>