Lagen unfertig im Worktree bzw. auf einem eigenen Branch und werden hier
gebuendelt, damit der Ausgangsstand vor der Aufraeumaktion festgehalten ist.
1. Event-Upsert kappte nur Slug und Title. Description, ImageUrl und Tags
haben in AppDbContext ebenfalls ein HasMaxLength, wurden aber ungekuerzt
geschrieben. Ein Polymarket-Event mit einer Beschreibung ueber 4096
Zeichen liess MySQL den gesamten Batch mit "Data too long for column
'Description'" ablehnen - damit brach der komplette Marktsync ab, nicht
nur dieses eine Event. Ersetzt durch TruncateEventStrings, analog zum
bereits vorhandenen TruncateMarketStrings. Regressionstest deckt beide
Zweige ab (neues und bestehendes Event); uebernommen vom Branch
fix-event-description-truncation, der damit aufgeht.
2. FingerprintSnapshotService warf bei jedem Trader, der in zwei
Unterkategorien derselben Kategorie gehandelt hat. Der eindeutige Index
ist TraderId+Category+Subcategory, ein ToDictionary auf die Kategorie
allein kollidiert deshalb. Jetzt per GroupBy summiert.
3. DcErrorReporter meldete Zustandswechsel nur auf Debug-Ebene. Ein stumm
abgeschalteter oder abgewiesener Fehler-Stream fiel erst auf, wenn im
Deployment Center nach einem Absturz nichts ankam. Meldet jetzt auf
Warning - das erreicht den DcErrorSink nicht (Error+) und erzeugt daher
keine Rueckkopplung. Transportfehler werden nur beim ersten Mal
gemeldet, damit ein Netzwerkaussetzer keine Warnung pro Fehler ausloest.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>