Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
301249f3b8 | ||
|
|
983900000a |
@@ -2,7 +2,7 @@
|
||||
<PropertyGroup>
|
||||
<!-- Version der Anwendung. Wird von Deploymentcenter.BuildInfo.targets,
|
||||
dem UpdateService, Fehler-Stream und Heartbeat genutzt. -->
|
||||
<Version>1.0.0</Version>
|
||||
<Version>1.1.0</Version>
|
||||
<!-- Zielframework zentral fuer alle Projekte. Seit die Avalonia-Shell den
|
||||
WinForms-Host abgeloest hat, gibt es keine windows-spezifische Ausnahme mehr. -->
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
|
||||
+88
-9
@@ -12,15 +12,94 @@
|
||||
|
||||
## Fortschritt
|
||||
|
||||
| Stufe | Stand |
|
||||
|---|---|
|
||||
| 0 — Sofort | ✅ erledigt (2026-08-24) |
|
||||
| 1 — Aufräumen abschließen | ✅ erledigt (2026-08-24) |
|
||||
| 2 — Portierung abschließen | offen — **braucht ein Linux-System**, sonst nicht prüfbar |
|
||||
| 3 — Analytik schärfen | offen, 3.1 ist der nächste inhaltliche Schritt |
|
||||
| 4 — Datenhaushalt | offen, liegt beim Nutzer (SQL) |
|
||||
| 5 — Ingest skalieren | offen, erst bei Bedarf |
|
||||
| 6 — Monetarisierung | Konzept |
|
||||
> Stand und Reihenfolge werden im **Deployment Center** gepflegt, nicht mehr hier:
|
||||
> `GET /api/bugtracker/v1/roadmap?action=list&project_slug=predictalytics`.
|
||||
> Der folgende Block ist daraus erzeugt (`action=render`); `action=check` meldet, wenn er
|
||||
> veraltet ist. Die Abschnitte darunter bleiben die Begründung und werden von Hand gepflegt.
|
||||
|
||||
<!-- dc:roadmap stand=2026-09-01T08:36Z items=28 projekt=predictalytics -->
|
||||
|
||||
<!-- ERZEUGT - nicht von Hand aendern. Dieser Block wird bei jedem Lauf von
|
||||
`php cli/roadmap.php --write` ueberschrieben. Der Zustand wird im
|
||||
Deploymentcenter gepflegt, nicht hier. Prosa gehoert AUSSERHALB der
|
||||
Marker - dort bleibt sie unberuehrt. -->
|
||||
|
||||
### Als Naechstes
|
||||
|
||||
1. **[2] #429 — [2.1] Erstlauf und Verifikation unter Linux**
|
||||
2. **[3] #431 — [3.1] Strategie-Klassifikation reparieren (ehemals A4)**
|
||||
3. **[4] #438 — [4.1] Einmalige DB-Optimierungen (liegt beim Nutzer)**
|
||||
4. **[2] #430 — [2.2] Deployment und CI**
|
||||
|
||||
### 0 — Stufe 0 - Sofort
|
||||
|
||||
| | Vorhaben | Stand | Ziel |
|
||||
|---|---|---|---|
|
||||
| #425 | [0.1] OpenRouter-API-Key aus dem Repository entfernt | ✅ Abgeschlossen | — |
|
||||
|
||||
### 1 — Stufe 1 - Aufraeumen abschliessen
|
||||
|
||||
| | Vorhaben | Stand | Ziel |
|
||||
|---|---|---|---|
|
||||
| #426 | [1.1] Nach main gebracht, zehn Feature-Zweige entfernt | ✅ Abgeschlossen | — |
|
||||
| #427 | [1.2] Nullable-Warnungen behoben - der Build ist warnungsfrei | ✅ Abgeschlossen | — |
|
||||
| #428 | [1.3] Kategorie-Backfill laedt nicht mehr den ganzen Marktbestand | ✅ Abgeschlossen | — |
|
||||
|
||||
### 2 — Stufe 2 - Portierung abschliessen
|
||||
|
||||
| | Vorhaben | Stand | Ziel |
|
||||
|---|---|---|---|
|
||||
| #429 | [2.1] Erstlauf und Verifikation unter Linux | 📋 Geplant | — |
|
||||
| #430 | [2.2] Deployment und CI | 📋 Geplant | — |
|
||||
|
||||
### 3 — Stufe 3 - Analytik schaerfen
|
||||
|
||||
| | Vorhaben | Stand | Ziel |
|
||||
|---|---|---|---|
|
||||
| #431 | [3.1] Strategie-Klassifikation reparieren (ehemals A4) | 📋 Geplant | — |
|
||||
| #432 | [3.2] CopytradingBacktestHarness anschliessen oder verwerfen | 📋 Geplant | — |
|
||||
| #433 | [3.3] Track-Record-Laenge in den Copyability-Score | 📋 Geplant | — |
|
||||
| #434 | [3.4] Edge-Freshness und Strategie-Drift ins Ranking | 📋 Geplant | — |
|
||||
| #435 | [3.5] Co-Movement-Graph vorberechnen | 📋 Geplant | — |
|
||||
| #436 | [3.6] Restpunkte aus der Kategorie-Erkennung | 📋 Geplant | — |
|
||||
| #437 | [3.7] Sortierpfeile in der Trader-Tabelle | 📋 Geplant | — |
|
||||
|
||||
### 4 — Stufe 4 - Datenhaushalt
|
||||
|
||||
| | Vorhaben | Stand | Ziel |
|
||||
|---|---|---|---|
|
||||
| #438 | [4.1] Einmalige DB-Optimierungen (liegt beim Nutzer) | 📋 Geplant | — |
|
||||
| #439 | [4.2] Materialitaetsschwelle fuer Mikro-Trades (liegt beim Nutzer) | 🧊 Zurueckgestellt — Ausloeser: Wenn 4.1 umgesetzt und gemessen ist und beziffert werden kann, was die Schwelle zusaetzlich einbringt. | — |
|
||||
| #440 | [4.3] Frischer Datenbank-Neustart (liegt beim Nutzer) | 🧊 Zurueckgestellt — Ausloeser: Wenn Stufe 3 abgeschlossen ist und der vorgelagerte Stichproben-Check bestaetigt hat, wie weit /activity fuer ein lan... | — |
|
||||
| #441 | [4.4] 65 Migrationsdateien zusammenfassen | 🧊 Zurueckgestellt — Ausloeser: Nur im Zuge von 4.3 - ohne den Datenbank-Neustart nicht angehen. | — |
|
||||
|
||||
### 5 — Stufe 5 - Ingest skalieren
|
||||
|
||||
| | Vorhaben | Stand | Ziel |
|
||||
|---|---|---|---|
|
||||
| #442 | [5.1] Historische Massendaten aus der Blockchain statt ueber REST | 🧊 Zurueckgestellt — Ausloeser: Wenn Rate-Limits im Ingest tatsaechlich druecken und die Evaluierung ergeben hat, dass ein hinreichend vollstaendiger... | — |
|
||||
| #443 | [5.2] Markt-Stammdaten aggressiv cachen | 📋 Geplant | — |
|
||||
| #444 | [5.3] Egress-Kanaele: Betriebsreste | 📋 Geplant | — |
|
||||
| #445 | [5.4] Header- und User-Agent-Rotation - bewusst verworfen | ❌ Verworfen | — |
|
||||
|
||||
### 6 — Stufe 6 - Monetarisierung vorbereiten
|
||||
|
||||
| | Vorhaben | Stand | Ziel |
|
||||
|---|---|---|---|
|
||||
| #446 | [6.1] Datenbank fuer eine oeffentliche Schicht vorbereiten | 🧊 Zurueckgestellt — Ausloeser: Wenn die Entscheidung gefallen ist, aus dem internen Werkzeug ein Produkt zu machen - oder frueher, sobald die Pruefu... | — |
|
||||
| #447 | [6.2] Oeffentlicher Host | 🧊 Zurueckgestellt — Ausloeser: Wenn die Entscheidung gefallen ist, aus dem internen Werkzeug ein Produkt zu machen. | — |
|
||||
|
||||
### A — Anhang - bewusst ausgelassen
|
||||
|
||||
| | Vorhaben | Stand | Ziel |
|
||||
|---|---|---|---|
|
||||
| #448 | [A.1] AzuroProvider loeschen - bewusst ausgelassen | ❌ Verworfen | — |
|
||||
| #449 | [A.2] Providers/Limitless/ loeschen - bewusst ausgelassen | ❌ Verworfen | — |
|
||||
| #450 | [A.3] wwwroot/landing.html und docs.html | 🧊 Zurueckgestellt — Ausloeser: Gehoeren zu Stufe 6 - erst mit der Entscheidung fuer einen oeffentlichen Host. | — |
|
||||
| #451 | [A.4] Kaltarchiv ausserhalb der DB - verworfen | ❌ Verworfen | — |
|
||||
| #452 | [A.5] EF Core auf 10 heben - blockiert | 🧊 Zurueckgestellt — Ausloeser: Wenn Pomelo einen EF-Core-10-Provider veroeffentlicht - vor einem Versuch dort nachsehen. | — |
|
||||
|
||||
<!-- /dc:roadmap -->
|
||||
|
||||
## Legende
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
@@ -4,6 +4,9 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Predictalytics API Reference</title>
|
||||
<link rel="icon" href="/favicon.ico" sizes="any">
|
||||
<link rel="icon" type="image/png" href="/icon-192.png" sizes="192x192">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Roboto+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 7.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 54 KiB |
@@ -5,6 +5,9 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="Predictalytics — Multi-Platform Prediction Market Smart-Money Tracker & Analytics">
|
||||
<title>Predictalytics</title>
|
||||
<link rel="icon" href="/favicon.ico" sizes="any">
|
||||
<link rel="icon" type="image/png" href="/icon-192.png" sizes="192x192">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
<link rel="stylesheet" href="css/style.css?v=20260715">
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.4/dist/chart.umd.min.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Predictalytics — See every trader and market before the crowd does</title>
|
||||
<link rel="icon" href="/favicon.ico" sizes="any">
|
||||
<link rel="icon" type="image/png" href="/icon-192.png" sizes="192x192">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Roboto+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# Programm-Icon
|
||||
|
||||
`predictalytics.ico` ist die **einzige Quelle**. Alles andere ist daraus abgeleitet:
|
||||
|
||||
| Datei | Wozu |
|
||||
|---|---|
|
||||
| `predictalytics.ico` (9 Größen, 16–256) | `<ApplicationIcon>` in `Predictalytics.Shell.csproj` — Explorer, Taskleiste, Task-Manager unter Windows |
|
||||
| `predictalytics.png` (256) | `Window.Icon` in `MainWindow.axaml` und `LicenseWindow.axaml`; Dialoge erben es vom Besitzerfenster. Bewusst PNG, weil Skia unter Linux kein ICO dekodiert |
|
||||
| `Predictalytics.Api/wwwroot/favicon.ico` (16–48) | Browser-Tab der Web-UI |
|
||||
| `Predictalytics.Api/wwwroot/apple-touch-icon.png` (180) | iOS-Homescreen |
|
||||
| `Predictalytics.Api/wwwroot/icon-192.png`, `icon-512.png` | Verlinkt aus `index.html`, `landing.html`, `docs.html` |
|
||||
|
||||
Ersetzt du das Icon, tausche `predictalytics.ico` aus und erzeuge den Rest neu:
|
||||
|
||||
```bash
|
||||
python - <<'PY'
|
||||
from PIL import Image
|
||||
src = 'src/Predictalytics.Shell/Assets/predictalytics.ico'
|
||||
im = Image.open(src); im.size = (256, 256); im.load(); im = im.convert('RGBA')
|
||||
im.save('src/Predictalytics.Shell/Assets/predictalytics.png', optimize=True)
|
||||
im.save('src/Predictalytics.Api/wwwroot/favicon.ico',
|
||||
sizes=[(16,16),(24,24),(32,32),(48,48)])
|
||||
for n, name in [(180,'apple-touch-icon.png'), (192,'icon-192.png'), (512,'icon-512.png')]:
|
||||
im.resize((n,n), Image.LANCZOS).save(f'src/Predictalytics.Api/wwwroot/{name}', optimize=True)
|
||||
PY
|
||||
```
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 166 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 6.8 KiB |
@@ -9,8 +9,18 @@
|
||||
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
||||
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
<!-- Icon der Programmdatei. Unter Windows das, was Explorer, Taskleiste und
|
||||
Task-Manager anzeigen — ohne das traegt jede unserer Anwendungen auf dem
|
||||
Server dasselbe generische Platzhalter-Icon. -->
|
||||
<ApplicationIcon>Assets\predictalytics.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Fenstericon fuer Avalonia. Die .ico bleibt aussen vor: sie geht ueber
|
||||
<ApplicationIcon> in die Programmdatei, und Skia dekodiert ohnehin nur PNG. -->
|
||||
<AvaloniaResource Include="Assets\**" Exclude="Assets\predictalytics.ico" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Avalonia" />
|
||||
<PackageReference Include="Avalonia.Desktop" />
|
||||
|
||||
@@ -37,7 +37,10 @@ public static class Dialogs
|
||||
MaxWidth = 640,
|
||||
WindowStartupLocation = WindowStartupLocation.CenterOwner,
|
||||
CanResize = false,
|
||||
ShowInTaskbar = false
|
||||
ShowInTaskbar = false,
|
||||
// Ohne das zeigt die Titelleiste des Dialogs das leere Standardsymbol
|
||||
// statt des Programmicons.
|
||||
Icon = owner.Icon
|
||||
};
|
||||
|
||||
for (var i = 0; i < buttons.Length; i++)
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
x:Class="Predictalytics.Shell.Views.LicenseWindow"
|
||||
Title="Predictalytics — Lizenzaktivierung"
|
||||
Icon="/Assets/predictalytics.png"
|
||||
Width="580" SizeToContent="Height"
|
||||
CanResize="False"
|
||||
WindowStartupLocation="CenterScreen">
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
x:Class="Predictalytics.Shell.Views.MainWindow"
|
||||
x:DataType="vm:MainWindowViewModel"
|
||||
Title="Predictalytics Analytics — Backend Server"
|
||||
Icon="/Assets/predictalytics.png"
|
||||
Width="1400" Height="900"
|
||||
MinWidth="900" MinHeight="600"
|
||||
WindowStartupLocation="CenterScreen">
|
||||
|
||||
Reference in New Issue
Block a user