Skip to content

StockPro-AI/TradoDesk

Repository files navigation

TradoDesk

StockPro-AI Hero

Eine sichere Desktop‑Trading‑Umgebung ("Cockpit") mit integriertem KI‑Agenten, Broker‑Browser und Automatisierung.

🟢 Windows One‑Click Desktop (robust)

Wenn dev:desktop in deiner Umgebung kein echtes Electron-Fenster öffnet, nutze den robusten Launcher:

start_desktop.bat

Sauber stoppen:

stop_desktop.bat

Debug-Variante (mit erweiterten Logs):

tools\windows\start_desktop_debug.bat

Alternativ kannst du die Setup/Start-Skripte direkt nutzen:

tools\windows\setup_desktop.bat
tools\windows\start_desktop.bat
tools\windows\stop_desktop.bat

Alternativ über NPM:

npm run desktop:setup
npm run desktop:start

Das Setup installiert Abhängigkeiten, rebuilt Electron und baut ein lokales Desktop-Bundle. Der Start läuft dann direkt über electron.exe (ohne fragilen Dev-Fallback).

🧪 Start mit .venv (Manuelle Installation)

# 1) Virtuelle Umgebung anlegen
python3 -m venv .venv

# Falls das fehlschlägt (z. B. fehlendes ensurepip auf Debian/Ubuntu):
python3 -m pip install --user virtualenv --break-system-packages
python3 -m virtualenv .venv

# 2) Aktivieren
source .venv/bin/activate

# Windows PowerShell:
.venv\Scripts\Activate.ps1

# Windows CMD:
.venv\Scripts\activate.bat

# 3) Projekt starten
npm install
npm start

⚙️ Setup

# Abhängigkeiten installieren
npm install

# Desktop-Entwicklung starten (Electron + React Hot Reload, empfohlen)
npm run dev:desktop --workspace=packages/app

# Optional: Desktop-Cache bereinigen und frisch starten
npm run dev:desktop:clean --workspace=packages/app

# Web-Preview ohne Electron (eingeschränkter Modus)
npm start

# TODOs synchronisieren
npm run todo:sync

🧩 Dependency Governance

Core-Tooling folgt strikt den Regeln aus .codex/config.toml und AGENTS.md.

  • ESLint Major Policy: eslint ist derzeit auf Major 9.x begrenzt. eslint@10 ist blockiert, solange @typescript-eslint@8.x nur ^8.57.0 || ^9.0.0 als Peer unterstützt.
  • Kein Peer-Bypass: npm install --force und npm install --legacy-peer-deps sind für reguläre Reparaturen/Upgrades nicht erlaubt.
  • Upgrade-Prüfung: Vor Dependency-Commits immer npm install --dry-run ausführen, um ERESOLVE und Peer-Konflikte früh zu erkennen.
  • Lockfile-Konsistenz: package.json und package-lock.json müssen für Core-Tools (eslint, @typescript-eslint/*, vite, typescript) synchron bleiben.

🔐 Umgebungsvariablen

Nutze die Vorlage und kopiere sie nach .env:

cp ".env example" ".env"

Windows PowerShell:

Copy-Item ".env example" ".env"

Windows CMD:

copy ".env example" ".env"

Dann den Key eintragen:

API_KEY=dein_google_gemini_api_key

🧭 Konfiguration

TradoDesk nutzt eine zentrale Konfiguration, die im Renderer gelesen und über den Main-Process persistiert wird. Typische Parameter:

  • Modus: Demo (Standard, keine echten Orders) oder Secure (isolierter Broker-Browser).
  • rateLimitMs: Mindestabstand zwischen automatisierten Aktionen/API-Requests, um Limits einzuhalten.
  • Pricing/Quotas: Vorgaben für zulässige Kosten oder Token-Budgets pro Zeitraum.
  • Provider-Stack: Gemini, OpenRouter, Mistral, Ollama, LM Studio (umschaltbar im API Manager).
  • Broker: Primärziel ist https://webtrader.tradesecure.io/.

Die genaue Struktur ist in der Architektur dokumentiert (siehe ARCHITECTURE.md).

✨ vNext Cockpit

Die Oberfläche wurde auf ein dichtes Pro-Desk-Layout umgestellt:

  • Trade Desk: Chart-first Layout, rechts Order/Risk über Chat, Broker-Tools im Header.
  • API Manager: Provider-Konfiguration, API-Key speichern, Connection-Tests.
  • Portfolio / Automation / Risk / Developer: operative und technische Ansichten.
  • Bottom Dock: Logs und Event-Stream mit Correlation-Fokus.

🧩 API‑Manager‑Assistent (neu)

Der API Manager läuft jetzt als 5-Schritt-Assistent:

  1. Provider auswählen
  2. API-Key und Base-URL eintragen
  3. Verbindung testen und Modelle laden
  4. Fast/Deep-Modell aus Dropdown wählen (inkl. Suche und Capability-Tags)
  5. Review & Speichern

Zusätzlich bleibt ein Bereich „Erweitert (Fortgeschrittene)“ für direkte Provider-Karten verfügbar.

Wichtig:

  • Desktop-Modus: volle Funktion mit Secret-Store, Connection-Test per IPC und Modell-Autoload nach Key/Base-URL.
  • Web-Modus: Connection-Test für Sicherheit/CORS deaktiviert; Keys nur im RAM (nicht persistent), Hinweis im UI sichtbar.

Broker Login (TradeSecure)

  • Standardweg: Broker öffnen und direkt im WebTrader manuell einloggen.
  • Optional: Assist-Login mit Autofill (best effort), falls Credentials hinterlegt sind.
  • Session-Status, URL und Logout sind direkt im UI verfügbar.
  • Hinweis: Für eingebettete BrowserView-Funktionen npm run dev:desktop --workspace=packages/app nutzen.

Trade-Layout (anpassbar)

  • Im Trade Desk ist das Layout als Split-Pane aufgebaut:
    • Desktop: Chart (BrowserView-Host) | Rechte Spalte
    • Rechte Spalte: oben Order Ticket + Risk, unten Chat
    • Narrow Fallback: Chart oben, rechte Spalte darunter
  • Rechte Spalte ist horizontal anpassbar (Default 25%, Bereich 18-35%).
  • Order/Risk und Chat sind vertikal anpassbar und jeweils einklappbar.
  • Layout zurücksetzen stellt die Standardwerte wieder her.
  • Persönliche Größen und Einklapp-Zustände werden lokal gespeichert (localStorage Key: tradodesk:layout:trade:v3).
  • Broker-Status nutzt Hybrid-Erkennung (URL/DOM-Signale) plus manuellen Override über Broker Tools im Header.

Provider Keys

  • API-Keys werden per Main-Process Secret-Store verwaltet.
  • Falls keytar verfügbar ist, wird der OS-Keyring verwendet.
  • Ohne keytar wird ein AES-verschlüsselter Fallback im userData genutzt.
  • Im Web-Modus werden Keys aus Sicherheitsgründen nicht persistent gespeichert.

💾 Daten & Persistenz

Für Nachvollziehbarkeit und Betrieb speichert die App Daten an mehreren Stellen:

  • Usage-Tracking: Laufende Zähler/Statistiken (z. B. Requests, Tokenverbrauch) werden lokal persistiert.
  • Log-Dateien: Pro Session und Prozess werden Logs in Dateien geschrieben (siehe Abschnitt „Troubleshooting & Logs“).
  • Speicherorte: OS-spezifische Pfade (z. B. %APPDATA%, ~/Library/Application Support, ~/.config) dienen als Basis für Logs und Konfig.

🧾 Review‑Entscheidungen (09. Februar 2026)

  • UI-Sprache vereinheitlicht: Nutzernahe UI-Texte wurden auf Deutsch konsolidiert (Chat, Diagnose, Fehlerhinweise).
  • Usage-Robustheit erhöht: Persistenz wurde dedupliziert und im Main-Process atomar gespeichert (usage.json.tmp -> usage.json).
  • Rate-Limit zentralisiert: Die LLM-Drosselung ist über Service-Instanzen hinweg API-Key-basiert konsistent.
  • Log-Reaktivität verbessert: Log-UI nutzt direkte Subscription statt Polling für schnellere Updates.
  • Listener-Cleanup abgesichert: IPC-/Window-/Subscription-Listener werden auf Unmount wieder entfernt.
  • Build-Fix: @google/genai wurde auf eine verfügbare Version aktualisiert (^1.40.0).

🛠️ Troubleshooting & Logs

🟥 App startet nicht (Black Screen)?

  1. Prüfe die Konsole in den DevTools (Ctrl+Shift+I).
  2. Prüfe das boot-error-trap Overlay (roter Screen).

🟨 Fenster erscheint nicht (One‑Click)?

  1. Nutze den Debug‑Launcher: tools\windows\start_desktop_debug.bat
  2. Prüfe die Log-Datei unter %APPDATA%/tradodesk/logs/main.log
  3. Falls electron.exe fehlt, führe tools\windows\setup_desktop.bat aus (der One‑Click macht das automatisch).
  4. Starte danach erneut mit start_desktop.bat (Root).
  5. Falls Prozesse hängen geblieben sind: stop_desktop.bat ausführen und erneut starten.
  6. Prüfe auf ELECTRON_RUN_AS_NODE=1 in der Windows-Umgebung. Das erzwingt Node-Kompatibilitätsmodus ohne GUI-Fenster.
  7. User-Variable entfernen (PowerShell): [Environment]::SetEnvironmentVariable("ELECTRON_RUN_AS_NODE",$null,"User")
  8. System-Variable entfernen (PowerShell als Administrator): [Environment]::SetEnvironmentVariable("ELECTRON_RUN_AS_NODE",$null,"Machine")
  9. Hinweis: Die Startskripte (start_desktop.bat, tools\windows\start_desktop*.bat) leeren diese Variable vor dem Start bereits defensiv.

📄 Log‑Dateien

Logs werden an zwei Orten gespeichert:

  1. Browser Console: Filterbar nach Level.
  2. File System:
    • Windows: %APPDATA%/tradodesk/logs/main.log
    • macOS: ~/Library/Application Support/tradodesk/logs/main.log
    • Linux: ~/.config/tradodesk/logs/main.log

🔁 Reproduktion von Fehlern

Wenn ein Fehler auftritt:

  1. Notiere die Correlation-ID aus dem Fehler-Screen oder Log.
  2. Exportiere die Logs (falls möglich) oder kopiere den relevanten Abschnitt aus der Log-Datei.
  3. Erstelle ein Issue mit ID, Zeitstempel und Beschreibung.

✅ Validierungs‑Checks

Für lokale Stabilitätsprüfungen:

npm run typecheck
npm run lint
npm run dev:desktop --workspace=packages/app
npm start

Nach Änderungen am API Manager:

npm run dev:desktop --workspace=packages/app

Dann den kompletten Wizard (Schritt 1–5) im Desktop-Modus durchspielen und den Connection-Test prüfen.

🔒 Sicherheit

  • Demo Mode: Standardmäßig aktiv. Verhindert echte Order-Ausführungen.
  • Secure Mode: Isoliert den Broker-Browser in einer eigenen Partition.
  • Secrets: API Keys werden im OS-Keyring (oder verschlüsseltem Fallback) gespeichert.

🧱 Architektur

Eine detaillierte Übersicht findest du in ARCHITECTURE.md. Dort ist auch das IPC-Allowlist-Konzept beschrieben: Der Renderer darf nur die explizit freigegebenen window.electron Methoden aufrufen, alle anderen IPC-Zugriffe sind blockiert.

  • Packages/App: Electron Hauptprozess und React UI.
  • Packages/Automation: Playwright Scripte für Broker-Interaktion.
  • Packages/Shared: Gemeinsame Typen.

🏁 Credits

Gebaut mit Electron, React, Tailwind, Google GenAI.
StockPro‑AI @ 02/2026

About

Ein "sicheres" (aktuell erst in der Alpha Phase), KI-gestütztes Desktop-Handels-Cockpit mit integrierter Broker-Integration und Automatisierung. WARNUNG: Aktuell experimentell und erst in der Alpha Phase!

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors