Commit Graph
4 Commits
Author SHA1 Message Date
RichardandClaude Opus 5 55011644a3 Fruehjahrsputz 1/2: toter Code, Altlast-Dateien, veraltete Verweise
Toter Code:
* ApiConfiguration.ConfigureApi (29 Z.) hatte keinen Aufrufer mehr.
  PredictalyticsHost baut die WebApplication seit Phase 2 selbst auf
  (Kestrel, CORS, Swagger, Static Files); ConfigureApi war der
  zurueckgebliebene Zwilling aus der Zeit davor.
* IAnalyticsService.GetTraitsAsync samt Implementierung. Die Methode gab
  konstant eine leere Liste zurueck; ihr eigener Kommentar hielt fest, dass
  sie ungenutzt ist. Der Endpunkt /api/traders/traits liest direkt aus dem
  DbContext und bleibt unveraendert.

Ungenutzte Paketreferenzen:
* Swashbuckle.AspNetCore aus Predictalytics.Api - wurde nur von ConfigureApi
  gebraucht; Swagger baut Hosting auf, das die Referenz selbst haelt.
* Microsoft.EntityFrameworkCore.Design aus Predictalytics.Worker - die
  Design-Time-Factory liegt in Infrastructure.
* Serilog.Sinks.File/.Console und Serilog.Formatting.Compact aus
  Predictalytics.Infrastructure - dort wird kein Logger konfiguriert, nur
  Serilog.Core/Events/Context verwendet. Die Sinks haengen am Hosting.

Altlast-Dateien:
* Spike/ - Projektdatei ohne eine einzige Quelldatei, net8.0, nicht in der
  Solution.
* query.csx - Ad-hoc-Abfrageskript von Juli mit fest eingetragenen
  DB-Zugangsdaten.
* NewDesign.zip (388 KB) und temp_new_design/ - Rohmaterial des
  Design-Entwurfs vom 15.07. Das Ergebnis liegt fertig in
  wwwroot/landing.html und wwwroot/docs.html.

Veraltete Verweise auf den entfernten WinForms-Host:
* CLAUDE.md nannte fuer die Release-Version eine csproj, die es nicht mehr
  gibt - sie steht seit der Zentralisierung in Directory.Build.props.
* docs/BETRIEB-Deploymentcenter.md: Anbindung und BuildInfo sitzen in
  Predictalytics.Hosting.
* docs/API.md: Die Aussage "ohne Authentifizierung" galt vor Phase 4. Jetzt
  mit Header X-Predictalytics-Key und den heutigen Methodennamen.
* Kommentare in Directory.Build.props, DevEndpoints.cs, PredictalyticsHost.cs.

Build ohne neue Warnungen (die 8 bestehenden CS86xx sind unveraendert),
126 Tests gruen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 12:19:46 +02:00
RichardandClaude Opus 5 5ccd4f5f4e UpdateService: Zugangsschutz, Plattform und sauberer Agent-Uebergang
Seit Deploymentcenter 2.4 liegt die Release-Ablage hinter HTTP-Basic-Auth mit
dem Lizenzschluessel als Zugangsdatum. Ohne ihn antwortet jeder Paketabruf mit
401. Predictalytics hat noch kein Release veroeffentlicht; nach UPGRADE.md
16.1 entsteht der Schutz fuer ein Produkt mit dem ersten Upload, der erste
ausgelieferte Build muss die Zugangsdaten also bereits mitbringen.

- DcUpdateService reicht licenseKey und platform (PlatformId.Current) an
  CheckForUpdateAsync und LaunchUpdateAgent weiter. Fehlt der Schluessel am
  Aufruf, greift LicenseClient.TryGetCachedKey - damit ist der Headless-Pfad
  mit abgedeckt.
- LaunchAgent startet ohne Lizenzschluessel gar nicht erst. Sonst schliesst
  sich die Anwendung, der Agent laeuft in einen 401, und zurueck bleibt eine
  geschlossene App ohne Update.
- restartPath und waitForCurrentProcess werden gesetzt: der Agent wartet auf
  das Ende dieses Prozesses, statt auf noch gesperrte Assemblies zu schreiben,
  und startet die Anwendung danach wieder. Ein null-restartPath ist dafuer
  nicht brauchbar - das SDK ersetzt ihn durch denselben ProcessPath -, beim
  Start ueber "dotnet App.dll" wird deshalb der Apphost aufgeloest.
- result.Unauthorized wird vor dem "ist aktuell"-Zweig behandelt. Bei 401
  setzt das SDK weder Error noch UpdateAvailable; die Pruefung meldete bisher
  "aktuell", waehrend in Wirklichkeit keine Updates mehr ankamen.
- Version zentral in Directory.Build.props, damit Hosting und Shell nicht
  auseinanderlaufen.
- run.sh setzt unter Linux das beim Entpacken verlorene Ausfuehrungsbit.
  .gitattributes haelt Shell-Skripte auf LF: mit core.autocrlf=true traegt die
  Arbeitskopie sonst CRLF, und CopyToPublishDirectory nimmt genau die ins
  Linux-Paket - dort scheitert der Start an "bad interpreter".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 09:43:44 +02:00
RichardandClaude Opus 5 c9eff9f75e Phase 1: Solution auf .NET 10 und zentrale Paketverwaltung
Zielframework aller Projekte auf net10.0 (WinFormsHost: net10.0-windows),
zentral in Directory.Build.props statt je csproj. SatelliteResourceLanguages
ebenfalls zentralisiert.

Neue Directory.Packages.props mit ManagePackageVersionsCentrally: 21 Pakete,
Versionsangaben aus allen csproj entfernt.

EF Core bleibt bewusst auf 9.0.18 mit Pomelo 9.0.0. Pomelo hat keine
EF-Core-10-Version; 9.0.0 pinnt EntityFrameworkCore.Relational auf
[9.0.0, 9.0.999]. Die EF-9-Pakete zielen auf net8.0 und laufen auf der
net10.0-Runtime. Begruendung als Kommentar in Directory.Packages.props.

Uebrige Pakete auf aktuellen Stand: Swashbuckle 10.2.3 (ohne Bruchstellen),
Serilog 4.4.0, Microsoft.Extensions 10.0.10, Test-SDK 18.8.1, coverlet 10.0.1.

Sicherheits-Pin: SQLitePCLRaw 2.1.12 statt transitiv 2.1.10
(GHSA-2m69-gcr7-jv3q, High). Dazu CentralPackageTransitivePinningEnabled.

Build: 0 Fehler, 8 Warnungen (alle vorbestehend).
Tests: 100 bestanden, 0 Fehler, 1 uebersprungen, Testhost net10.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 22:54:18 +02:00
Richard afb251acfc Initial commit: Predictalytics solution
Clean Architecture .NET 8 solution (Domain/Application/Infrastructure/Api/Worker/WinFormsHost)
for analyzing Polymarket traders for copytrading/strategy-replication candidates.

Includes EF Core InitialBaseline migration and DB secrets removed from source/config
in preparation for version control.
2026-07-01 19:53:29 +02:00