From a69efe7df3f092e815dcef76d7152bcd75782084 Mon Sep 17 00:00:00 2001 From: Alberto Balbo Date: Wed, 23 Sep 2026 13:20:59 +0200 Subject: [PATCH] 5.0 Fasi 6-7: motore in Encelado.Engine, server Kestrel e interfaccia web al posto di WPF MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Il bot deve girare solo nel container (D-28, ADR-0007): la finestra WPF e le chiavi DPAPI se ne vanno. Il motore diventa la libreria Encelado.Engine; l'eseguibile Encelado.Server (nessun NuGet) serve un'API JSON scritta a mano, lo stream SSE con uno snapshot al secondo e l'interfaccia Material 3 incorporata: dashboard con margine e contatori, storico ordini (ordini, posizioni classificate, profitti per periodo, CSV), log, impostazioni con chiavi cifrate (AES-GCM + passphrase), ripristino in cinque passi, ricerca, diagnostica, valuta di visualizzazione, token locale in cookie. Lo strumento acquista il comando learn; VS Code avvia il server con F5 e la modalità campione; ~45 membri mai usati e i test WPF sono rimossi. Test dell'HTML incorporato, del token e dello stream, dello storico: 210 verdi. Co-Authored-By: Claude Fable 5.1 --- Encelado/.vscode/extensions.json | 8 +- Encelado/.vscode/launch.json | 52 +- Encelado/.vscode/tasks.json | 35 +- Encelado/Directory.Build.props | 12 +- Encelado/Encelado.slnx | 3 +- .../Assets => assets}/encelado.ico | Bin Encelado/build/Encelado.iss | 153 ---- Encelado/config/encelado.json | 10 +- Encelado/docs/UI_GUIDELINES.md | 86 ++ .../adr/ADR-0007-web-ui-al-posto-di-wpf.md | 29 + Encelado/docs/img/dashboard.png | Bin 0 -> 128090 bytes Encelado/docs/img/impostazioni.png | Bin 0 -> 134203 bytes Encelado/docs/img/log.png | Bin 0 -> 54557 bytes Encelado/docs/img/mobile.png | Bin 0 -> 60485 bytes Encelado/docs/img/storico.png | Bin 0 -> 53490 bytes Encelado/src/Encelado.Bot/App.xaml | 12 - Encelado/src/Encelado.Bot/App.xaml.cs | 174 ----- .../Configuration/EtoroKeyStore.cs | 253 ------ Encelado/src/Encelado.Bot/Encelado.Bot.csproj | 54 -- Encelado/src/Encelado.Bot/GlobalUsings.cs | 10 - Encelado/src/Encelado.Bot/MainWindow.xaml | 78 -- Encelado/src/Encelado.Bot/MainWindow.xaml.cs | 723 ----------------- Encelado/src/Encelado.Bot/Ui/Converters.cs | 108 --- .../src/Encelado.Bot/Ui/EtoroLoginWindow.xaml | 51 -- .../Encelado.Bot/Ui/EtoroLoginWindow.xaml.cs | 143 ---- Encelado/src/Encelado.Bot/Ui/IUiActions.cs | 44 -- Encelado/src/Encelado.Bot/Ui/LogViewModel.cs | 199 ----- Encelado/src/Encelado.Bot/Ui/MainViewModel.cs | 430 ---------- .../Encelado.Bot/Ui/Pages/DashboardPage.xaml | 309 -------- .../Ui/Pages/DashboardPage.xaml.cs | 84 -- .../src/Encelado.Bot/Ui/Pages/LogPage.xaml | 111 --- .../src/Encelado.Bot/Ui/Pages/LogPage.xaml.cs | 62 -- .../Encelado.Bot/Ui/Pages/SettingsPage.xaml | 209 ----- .../Ui/Pages/SettingsPage.xaml.cs | 224 ------ .../src/Encelado.Bot/Ui/PromptWindow.xaml | 24 - .../src/Encelado.Bot/Ui/PromptWindow.xaml.cs | 44 -- Encelado/src/Encelado.Bot/Ui/Theme.xaml | 563 -------------- .../Baskets/Backtest/BacktestBroker.cs | 2 - .../Encelado.Core/Baskets/BasketDecider.cs | 1 - .../Encelado.Core/Baskets/BasketExecutor.cs | 3 - .../src/Encelado.Core/Baskets/BasketMath.cs | 20 - .../Baskets/History/BasketOutcomeRow.cs | 69 ++ .../Baskets/History/HistoryBuilder.cs | 367 +++++++++ .../Baskets/Learning/OnlineLogistic.cs | 6 - .../Baskets/Learning/VolForecast.cs | 35 - .../src/Encelado.Core/Baskets/OrderTracker.cs | 25 - Encelado/src/Encelado.Core/Baskets/PipMath.cs | 6 - .../src/Encelado.Core/Baskets/SymbolSeries.cs | 3 - Encelado/src/Encelado.Core/Broker/Broker.cs | 3 - .../src/Encelado.Core/News/SentimentEngine.cs | 7 - Encelado/src/Encelado.Core/Statistics/Ols.cs | 25 - .../Encelado.Core/Statistics/Performance.cs | 88 --- .../Baskets/BasketEngine.Commands.cs | 7 +- .../Baskets/BasketEngine.Kill.cs | 6 +- .../Baskets/BasketEngine.Pending.cs | 5 +- .../Baskets/BasketEngine.Reconcile.cs | 5 +- .../Baskets/BasketEngine.Recovery.cs | 4 +- .../Baskets/BasketEngine.Snapshot.cs | 45 +- .../Baskets/BasketEngine.State.cs | 6 +- .../Baskets/BasketEngine.cs | 41 +- .../Baskets/ContextProvider.cs | 17 +- .../Baskets/Feeds.cs | 6 +- .../Baskets/HeadlessRunner.cs | 176 +---- .../Encelado.Engine/Baskets/HistoryService.cs | 188 +++++ .../Baskets/LearningState.cs | 7 +- .../Baskets/Ledger.cs | 69 +- .../Baskets/TelegramCommands.cs | 6 +- .../Baskets/TelegramReports.cs | 5 +- .../Encelado.Engine/Configuration/AppPaths.cs | 129 +++ .../Configuration/BotConfig.cs | 25 +- .../Configuration/ConfigDefaults.cs | 12 +- .../Configuration/ConfigLoader.cs | 15 +- .../Configuration/ConfigWriter.cs | 11 +- .../Encelado.Engine/Configuration/KeyStore.cs | 329 ++++++++ .../Encelado.Engine/Encelado.Engine.csproj | 24 + .../Engine/BotSnapshot.cs | 26 +- .../Engine/BotSupervisor.cs | 13 +- .../Engine/IEngine.cs | 2 +- .../Encelado.Engine/Engine/SampleSnapshot.cs} | 46 +- .../Encelado.Engine/Engine/SnapshotJson.cs | 230 ++++++ .../Logging/Log.cs | 4 +- .../Settings}/SettingField.cs | 20 +- .../Settings}/SettingsCatalogue.cs | 43 +- .../Settings/SettingsService.cs | 170 ++++ .../Settings}/UiClock.cs | 15 +- .../Encelado.Server/Encelado.Server.csproj | 60 ++ Encelado/src/Encelado.Server/Program.cs | 274 +++++++ Encelado/src/Encelado.Server/Web/Json.cs | 82 ++ Encelado/src/Encelado.Server/Web/LogBridge.cs | 40 + Encelado/src/Encelado.Server/Web/LogBuffer.cs | 65 ++ Encelado/src/Encelado.Server/Web/WebHost.cs | 735 ++++++++++++++++++ .../src/Encelado.Server/Web/wwwroot/app.css | 285 +++++++ .../src/Encelado.Server/Web/wwwroot/app.js | 414 ++++++++++ .../src/Encelado.Server/Web/wwwroot/icon.svg | 12 + .../Encelado.Server/Web/wwwroot/index.html | 215 +++++ .../Encelado.Server/Web/wwwroot/login.html | 21 + .../Web/wwwroot/manifest.webmanifest | 10 + Encelado/tests/Encelado.Tests/BasketTests.cs | 3 +- .../Encelado.Tests/ConfigurationTests.cs | 6 +- .../Encelado.Tests/CredentialStoreTests.cs | 139 ---- .../Encelado.Tests/Encelado.Tests.csproj | 27 +- .../tests/Encelado.Tests/ExecutionTests.cs | 2 +- Encelado/tests/Encelado.Tests/HistoryTests.cs | 154 ++++ .../tests/Encelado.Tests/KeyStoreTests.cs | 150 ++++ Encelado/tests/Encelado.Tests/LoggingTests.cs | 2 +- Encelado/tests/Encelado.Tests/NewsTests.cs | 2 +- .../tests/Encelado.Tests/PowerButtonTests.cs | 145 ---- .../tests/Encelado.Tests/TelegramTests.cs | 7 +- .../tests/Encelado.Tests/UiBindingTests.cs | 207 ----- .../tests/Encelado.Tests/UiRenderTests.cs | 122 --- Encelado/tests/Encelado.Tests/WebTests.cs | 295 +++++++ .../Encelado.Tests/WindowShutdownTests.cs | 174 ----- .../Encelado.Backtest.csproj | 5 +- Encelado/tools/Encelado.Backtest/Learn.cs | 53 ++ Encelado/tools/Encelado.Backtest/Options.cs | 8 + Encelado/tools/Encelado.Backtest/Program.cs | 9 +- 116 files changed, 4860 insertions(+), 5527 deletions(-) rename Encelado/{src/Encelado.Bot/Assets => assets}/encelado.ico (100%) delete mode 100644 Encelado/build/Encelado.iss create mode 100644 Encelado/docs/UI_GUIDELINES.md create mode 100644 Encelado/docs/adr/ADR-0007-web-ui-al-posto-di-wpf.md create mode 100644 Encelado/docs/img/dashboard.png create mode 100644 Encelado/docs/img/impostazioni.png create mode 100644 Encelado/docs/img/log.png create mode 100644 Encelado/docs/img/mobile.png create mode 100644 Encelado/docs/img/storico.png delete mode 100644 Encelado/src/Encelado.Bot/App.xaml delete mode 100644 Encelado/src/Encelado.Bot/App.xaml.cs delete mode 100644 Encelado/src/Encelado.Bot/Configuration/EtoroKeyStore.cs delete mode 100644 Encelado/src/Encelado.Bot/Encelado.Bot.csproj delete mode 100644 Encelado/src/Encelado.Bot/GlobalUsings.cs delete mode 100644 Encelado/src/Encelado.Bot/MainWindow.xaml delete mode 100644 Encelado/src/Encelado.Bot/MainWindow.xaml.cs delete mode 100644 Encelado/src/Encelado.Bot/Ui/Converters.cs delete mode 100644 Encelado/src/Encelado.Bot/Ui/EtoroLoginWindow.xaml delete mode 100644 Encelado/src/Encelado.Bot/Ui/EtoroLoginWindow.xaml.cs delete mode 100644 Encelado/src/Encelado.Bot/Ui/IUiActions.cs delete mode 100644 Encelado/src/Encelado.Bot/Ui/LogViewModel.cs delete mode 100644 Encelado/src/Encelado.Bot/Ui/MainViewModel.cs delete mode 100644 Encelado/src/Encelado.Bot/Ui/Pages/DashboardPage.xaml delete mode 100644 Encelado/src/Encelado.Bot/Ui/Pages/DashboardPage.xaml.cs delete mode 100644 Encelado/src/Encelado.Bot/Ui/Pages/LogPage.xaml delete mode 100644 Encelado/src/Encelado.Bot/Ui/Pages/LogPage.xaml.cs delete mode 100644 Encelado/src/Encelado.Bot/Ui/Pages/SettingsPage.xaml delete mode 100644 Encelado/src/Encelado.Bot/Ui/Pages/SettingsPage.xaml.cs delete mode 100644 Encelado/src/Encelado.Bot/Ui/PromptWindow.xaml delete mode 100644 Encelado/src/Encelado.Bot/Ui/PromptWindow.xaml.cs delete mode 100644 Encelado/src/Encelado.Bot/Ui/Theme.xaml create mode 100644 Encelado/src/Encelado.Core/Baskets/History/BasketOutcomeRow.cs create mode 100644 Encelado/src/Encelado.Core/Baskets/History/HistoryBuilder.cs rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/BasketEngine.Commands.cs (98%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/BasketEngine.Kill.cs (99%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/BasketEngine.Pending.cs (99%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/BasketEngine.Reconcile.cs (99%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/BasketEngine.Recovery.cs (99%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/BasketEngine.Snapshot.cs (82%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/BasketEngine.State.cs (99%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/BasketEngine.cs (97%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/ContextProvider.cs (64%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/Feeds.cs (99%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/HeadlessRunner.cs (60%) create mode 100644 Encelado/src/Encelado.Engine/Baskets/HistoryService.cs rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/LearningState.cs (99%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/Ledger.cs (85%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/TelegramCommands.cs (98%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Baskets/TelegramReports.cs (98%) create mode 100644 Encelado/src/Encelado.Engine/Configuration/AppPaths.cs rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Configuration/BotConfig.cs (89%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Configuration/ConfigDefaults.cs (90%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Configuration/ConfigLoader.cs (95%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Configuration/ConfigWriter.cs (94%) create mode 100644 Encelado/src/Encelado.Engine/Configuration/KeyStore.cs create mode 100644 Encelado/src/Encelado.Engine/Encelado.Engine.csproj rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Engine/BotSnapshot.cs (90%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Engine/BotSupervisor.cs (96%) rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Engine/IEngine.cs (98%) rename Encelado/{tests/Encelado.Tests/TestSnapshots.cs => src/Encelado.Engine/Engine/SampleSnapshot.cs} (72%) create mode 100644 Encelado/src/Encelado.Engine/Engine/SnapshotJson.cs rename Encelado/src/{Encelado.Bot => Encelado.Engine}/Logging/Log.cs (99%) rename Encelado/src/{Encelado.Bot/Ui => Encelado.Engine/Settings}/SettingField.cs (92%) rename Encelado/src/{Encelado.Bot/Ui => Encelado.Engine/Settings}/SettingsCatalogue.cs (86%) create mode 100644 Encelado/src/Encelado.Engine/Settings/SettingsService.cs rename Encelado/src/{Encelado.Bot/Ui => Encelado.Engine/Settings}/UiClock.cs (82%) create mode 100644 Encelado/src/Encelado.Server/Encelado.Server.csproj create mode 100644 Encelado/src/Encelado.Server/Program.cs create mode 100644 Encelado/src/Encelado.Server/Web/Json.cs create mode 100644 Encelado/src/Encelado.Server/Web/LogBridge.cs create mode 100644 Encelado/src/Encelado.Server/Web/LogBuffer.cs create mode 100644 Encelado/src/Encelado.Server/Web/WebHost.cs create mode 100644 Encelado/src/Encelado.Server/Web/wwwroot/app.css create mode 100644 Encelado/src/Encelado.Server/Web/wwwroot/app.js create mode 100644 Encelado/src/Encelado.Server/Web/wwwroot/icon.svg create mode 100644 Encelado/src/Encelado.Server/Web/wwwroot/index.html create mode 100644 Encelado/src/Encelado.Server/Web/wwwroot/login.html create mode 100644 Encelado/src/Encelado.Server/Web/wwwroot/manifest.webmanifest delete mode 100644 Encelado/tests/Encelado.Tests/CredentialStoreTests.cs create mode 100644 Encelado/tests/Encelado.Tests/HistoryTests.cs create mode 100644 Encelado/tests/Encelado.Tests/KeyStoreTests.cs delete mode 100644 Encelado/tests/Encelado.Tests/PowerButtonTests.cs delete mode 100644 Encelado/tests/Encelado.Tests/UiBindingTests.cs delete mode 100644 Encelado/tests/Encelado.Tests/UiRenderTests.cs create mode 100644 Encelado/tests/Encelado.Tests/WebTests.cs delete mode 100644 Encelado/tests/Encelado.Tests/WindowShutdownTests.cs create mode 100644 Encelado/tools/Encelado.Backtest/Learn.cs diff --git a/Encelado/.vscode/extensions.json b/Encelado/.vscode/extensions.json index 8e23111..4bdca3b 100644 --- a/Encelado/.vscode/extensions.json +++ b/Encelado/.vscode/extensions.json @@ -4,9 +4,9 @@ "ms-dotnettools.csharp", "ms-dotnettools.csdevkit", - // Colora installer\Encelado.iss e ne conosce direttive e costanti. Serve solo a - // leggere e scrivere quel file: l'installer si costruisce con il task - // "installer", che non dipende da nessuna estensione. - "idleberg.innosetup" + // Colora la Dockerfile e la docker-compose.yml e mostra container e immagini + // locali. L'immagine si costruisce con il task "immagine docker", che non + // dipende da nessuna estensione. + "ms-azuretools.vscode-docker" ] } diff --git a/Encelado/.vscode/launch.json b/Encelado/.vscode/launch.json index cc95b9f..493f479 100644 --- a/Encelado/.vscode/launch.json +++ b/Encelado/.vscode/launch.json @@ -1,17 +1,55 @@ { - // One way to launch, on purpose. Encelado is a desktop application: F5 here starts - // the same window you get by double-clicking Encelado.exe. Everything else — login, - // start/stop, backtest, settings — lives inside that window. + // F5 avvia il server (motore + interfaccia web) come processo locale, fuori dal + // container, con la cartella dati in Documenti\Encelado. Il browser si apre da solo + // appena Kestrel è in ascolto. "Encelado (campione)" serve l'interfaccia con dati + // finti, senza chiavi né mercato: è quello che si usa per lavorare sulle pagine. "version": "0.2.0", "configurations": [ { - "name": "Encelado", + "name": "Encelado (server)", "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Encelado.Bot/bin/Debug/net10.0-windows/Encelado.exe", - "cwd": "${workspaceFolder}/src/Encelado.Bot/bin/Debug/net10.0-windows", - "console": "internalConsole", + "program": "${workspaceFolder}/src/Encelado.Server/bin/Debug/net10.0/Encelado.Server.dll", + "args": ["--no-autostart"], + "cwd": "${workspaceFolder}/src/Encelado.Server/bin/Debug/net10.0", + "console": "integratedTerminal", + "stopAtEntry": false, + "env": { + "ENCELADO_WEB_PORT": "8080", + "DOTNET_ENVIRONMENT": "Development" + }, + "serverReadyAction": { + "action": "openExternally", + "pattern": "in ascolto su (http://\\S+)", + "uriFormat": "%s" + } + }, + { + "name": "Encelado (campione)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + "program": "${workspaceFolder}/src/Encelado.Server/bin/Debug/net10.0/Encelado.Server.dll", + "args": ["--sample", "--port", "8081"], + "cwd": "${workspaceFolder}/src/Encelado.Server/bin/Debug/net10.0", + "console": "integratedTerminal", + "stopAtEntry": false, + "serverReadyAction": { + "action": "openExternally", + "pattern": "in ascolto su (http://\\S+)", + "uriFormat": "%s" + } + }, + { + "name": "Backtest (baskets)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + "program": "${workspaceFolder}/tools/Encelado.Backtest/bin/Debug/net10.0/backtest.dll", + "args": ["baskets", "--data", "${env:USERPROFILE}/Documents/Encelado/data/market", "--out", "results", "--quick"], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", "stopAtEntry": false } ] diff --git a/Encelado/.vscode/tasks.json b/Encelado/.vscode/tasks.json index c5a3d7f..3ab954a 100644 --- a/Encelado/.vscode/tasks.json +++ b/Encelado/.vscode/tasks.json @@ -3,7 +3,8 @@ // MSBuild versionato col codice, e qui restano soltanto i nomi e le domande. // MSBuild non può chiedere niente a nessuno — i prompt stanno in "inputs". // - // È la stessa impostazione di Mimante/AutoBidder. + // È la stessa impostazione di Mimante/AutoBidder, con l'immagine Docker al + // posto dell'installatore. "version": "2.0.0", "tasks": [ { @@ -39,7 +40,7 @@ }, { "label": "backtest", - "detail": "Ricerca sui basket: ticks (tick MT5 → barre), baskets (griglia, PSR/DSR, PBO, walk-forward), falsify (test di falsificazione).", + "detail": "Ricerca sui basket: ticks (tick MT5 → barre), baskets (griglia, PSR/DSR, PBO, walk-forward), falsify (falsificazione), learn (ciclo di apprendimento in ombra su un ledger).", "type": "process", "command": "dotnet", "args": [ @@ -55,14 +56,14 @@ "problemMatcher": [] }, { - "label": "crea installatore", - "detail": "Verifica, pubblica ed esegue Inno Setup: bin/installer/Encelado--setup.exe. Crea il tag a pacchetto pronto. Non tocca Gitea.", + "label": "immagine docker", + "detail": "Verifica e costruisce l'immagine 192.168.30.23:3000/alby96/encelado: (e :latest) con la Dockerfile alla radice. Non pubblica niente.", "type": "process", "command": "dotnet", "args": [ "msbuild", "${workspaceFolder}/build/Release.proj", - "-t:Pacchetto", + "-t:Docker", "-p:Versione=${input:versione}", "-nologo", "-v:m" @@ -71,8 +72,8 @@ "problemMatcher": "$msCompile" }, { - "label": "crea installatore (senza rieseguire i test)", - "detail": "Solo pubblicazione e Inno Setup. Da usare quando i test sono appena passati.", + "label": "pacchetto", + "detail": "Verifica, pubblica la cartella portabile (bin/installer/Encelado__portabile.zip) e costruisce l'immagine. Crea il tag a pacchetto pronto. Non tocca Gitea.", "type": "process", "command": "dotnet", "args": [ @@ -80,7 +81,6 @@ "${workspaceFolder}/build/Release.proj", "-t:Pacchetto", "-p:Versione=${input:versione}", - "-p:SaltaVerifica=true", "-nologo", "-v:m" ], @@ -89,7 +89,7 @@ }, { "label": "rilascia su Gitea", - "detail": "Verifica, pubblica, installatore, tag e release su Gitea con i file allegati. La versione viene dal tag su HEAD. Richiede build/gitea.json.", + "detail": "Verifica, pacchetto, immagine, tag, push dell'immagine sul registro di Gitea e release con lo zip e il template Unraid allegati. Richiede build/gitea.json.", "type": "process", "command": "dotnet", "args": [ @@ -110,13 +110,22 @@ }, "presentation": { "reveal": "always", "panel": "dedicated" }, "problemMatcher": "$msCompile" + }, + { + "label": "docker compose up", + "detail": "Avvia il container dalla docker-compose.yml alla radice (immagine locale, cartelle ./deploy/local/config e ./deploy/local/data).", + "type": "shell", + "command": "docker compose up --build", + "options": { "cwd": "${workspaceFolder}" }, + "presentation": { "reveal": "always", "panel": "dedicated" }, + "problemMatcher": [] } ], "inputs": [ { "id": "versione", "type": "promptString", - "description": "Versione — lascia vuoto se hai già taggato (git tag v3.3.0), o per la minor successiva", + "description": "Versione — lascia vuoto se hai già taggato (git tag v5.0.0), o per la minor successiva", "default": "" }, { @@ -128,14 +137,14 @@ { "id": "dati", "type": "promptString", - "description": "Cartella dei dati: data/market (barre M15) per baskets e falsify, la cartella dei tick MT5 per ticks", + "description": "Cartella dei dati: data/market (barre M15) per baskets e falsify, la cartella dei tick MT5 per ticks, la cartella data del bot per learn", "default": "C:\\Users\\alber\\Documents\\Encelado\\data\\market" }, { "id": "comando", "type": "pickString", - "description": "Cosa misurare", - "options": ["baskets", "falsify", "ticks"], + "description": "Comando del backtest", + "options": ["baskets", "falsify", "ticks", "learn"], "default": "baskets" } ] diff --git a/Encelado/Directory.Build.props b/Encelado/Directory.Build.props index 240668b..9cf1993 100644 --- a/Encelado/Directory.Build.props +++ b/Encelado/Directory.Build.props @@ -13,12 +13,12 @@ false Encelado Encelado - - 4.0.0 + + 5.0.0 ;g8 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 literal 0 HcmV?d00001 diff --git a/Encelado/docs/img/impostazioni.png b/Encelado/docs/img/impostazioni.png new file mode 100644 index 0000000000000000000000000000000000000000..feb2f164b9489d27887a800711d44e7fbad33d11 GIT binary patch literal 134203 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
W(nnL&ppu9f&gi_}45;y}W4uobmK~_YsK~&^ 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%0AkF=e(M=e+Pz+syUkGv# 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 C8`-J= literal 0 HcmV?d00001 diff --git a/Encelado/docs/img/log.png b/Encelado/docs/img/log.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0cb51baa750ccb31b8f65471b69755cb69a644 GIT binary patch literal 54557 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

c1VKW2IL%h&n#O6fPNEPt;scm~q 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 literal 0 HcmV?d00001 diff --git a/Encelado/docs/img/mobile.png b/Encelado/docs/img/mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..6cef32d1f8464f0f9b42ab51e8822c048c636f38 GIT binary patch literal 60485 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

@zD+`#9-Ku&Ld%H>z9~tB!g#lgAZs7m};!xvQgT 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 literal 0 HcmV?d00001 diff --git a/Encelado/docs/img/storico.png b/Encelado/docs/img/storico.png new file mode 100644 index 0000000000000000000000000000000000000000..eda2c257a26c863a584a2f84b2255be5ae9a7c0a GIT binary patch literal 53490 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

Oiuo)`SzqT2 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 literal 0 HcmV?d00001 diff --git a/Encelado/src/Encelado.Bot/App.xaml b/Encelado/src/Encelado.Bot/App.xaml deleted file mode 100644 index 953b251..0000000 --- a/Encelado/src/Encelado.Bot/App.xaml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/Encelado/src/Encelado.Bot/App.xaml.cs b/Encelado/src/Encelado.Bot/App.xaml.cs deleted file mode 100644 index fcd5811..0000000 --- a/Encelado/src/Encelado.Bot/App.xaml.cs +++ /dev/null @@ -1,174 +0,0 @@ -using System.IO; -using System.Windows; -using System.Windows.Threading; -using Encelado.Bot.Configuration; -using Encelado.Bot.Logging; - -namespace Encelado.Bot; - -public partial class App : Application -{ - ///

Loaded once at startup and shared by every window. - public static BotConfig Config { get; private set; } = new(); - - public static IReadOnlyList ConfigWarnings { get; private set; } = []; - - public static string ConfigPath { get; private set; } = string.Empty; - - protected override void OnStartup(StartupEventArgs e) - { - base.OnStartup(e); - - // A crash in a background task must show a dialog, not vanish silently. - DispatcherUnhandledException += OnDispatcherException; - AppDomain.CurrentDomain.UnhandledException += (_, args) => - Log.Error("unhandled exception", args.ExceptionObject as Exception); - TaskScheduler.UnobservedTaskException += (_, args) => - { - Log.Error("unobserved task exception", args.Exception); - args.SetObserved(); - }; - - try - { - ConfigPath = ResolveConfigPath(); - Config = ConfigLoader.Load(ConfigPath, out List warnings); - ConfigWarnings = warnings; - } - catch (Exception ex) - { - MessageBox.Show( - $"Impossibile leggere la configurazione:\n\n{ex.Message}", - "Encelado", MessageBoxButton.OK, MessageBoxImage.Error); - Shutdown(2); - return; - } - - SeedStrategyFile(Config.Run.StrategyPath); - Ui.UiClock.Zone = Config.Ui.ResolveTimeZone(out _); - - // --headless: no window, the same engine, the same information as text on the - // console, commands from standard input. For a VPS or for a long unattended test. - if (e.Args.Any(static a => a.Equals("--headless", StringComparison.OrdinalIgnoreCase))) - { - Config.Logging.Console = true; - Log.Initialize(Config.Logging); - ShutdownMode = ShutdownMode.OnExplicitShutdown; - Thread worker = new(() => - { - int code; - try - { - code = Baskets.HeadlessRunner.RunAsync(Config, e.Args).GetAwaiter().GetResult(); - } - catch (Exception ex) - { - Log.Error("headless: errore fatale", ex); - code = 1; - } - - Dispatcher.Invoke(() => Shutdown(code)); - }) - { - IsBackground = false, - Name = "headless", - }; - worker.Start(); - return; - } - - Log.Initialize(Config.Logging); - - // Created here rather than via StartupUri: the config must load first, and a - // failure above has to be able to abort startup before any window exists. - MainWindow window = new MainWindow(); - MainWindow = window; - window.Show(); - } - - /// - /// Copies the factory strategy.json beside the configuration the first time, - /// like the configuration itself: it is the operator's file from then on. - /// - public static void SeedStrategyFile(string path) - { - if (File.Exists(path)) - { - return; - } - - try - { - Directory.CreateDirectory(Path.GetDirectoryName(Path.GetFullPath(path))!); - File.WriteAllText(path + ".tmp", Core.Baskets.BasketStrategyConfig.DefaultJson); - File.Move(path + ".tmp", path, overwrite: true); - SeedNote = (SeedNote is null ? string.Empty : SeedNote + " · ") + $"strategy.json di fabbrica creato in {path}"; - } - catch (Exception ex) when (ex is IOException or UnauthorizedAccessException) - { - SeedNote = $"impossibile creare {path}: {ex.Message}"; - } - } - - /// - /// Where the configuration lives, and how it gets there the first time. - /// - /// Documenti\Encelado\encelado.json. It is the operator's file — their - /// thresholds, their pairs, their notes — so it belongs with their documents, where a - /// backup catches it and a reinstall cannot overwrite it. The credentials do - /// not live here: they stay encrypted in the per-user application data folder, - /// because a file in Documents is precisely the kind of file that gets copied to a - /// USB stick or synced to a cloud drive. - /// - /// - /// On first run the file is seeded from the copy shipped beside the executable when - /// there is one (the previous location, so an existing tuning is carried over rather - /// than lost) and from the built-in default otherwise. - /// - /// - public static string ConfigDirectory => - Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Encelado"); - - private static string ResolveConfigPath() - { - string target = Path.Combine(ConfigDirectory, "encelado.json"); - if (File.Exists(target)) - { - return target; - } - - Directory.CreateDirectory(ConfigDirectory); - - string legacy = Path.Combine(AppContext.BaseDirectory, "encelado.json"); - if (File.Exists(legacy)) - { - File.Copy(legacy, target, overwrite: false); - SeedNote = $"configurazione copiata da {legacy} a {target}: da ora si modifica quella in Documenti"; - } - else - { - File.WriteAllText(target, ConfigDefaults.Json); - SeedNote = $"nessuna configurazione trovata: creata quella di fabbrica in {target}"; - } - - return target; - } - - /// What happened at first run, for the log; null when the files already existed. - public static string? SeedNote { get; private set; } - - private static void OnDispatcherException(object sender, DispatcherUnhandledExceptionEventArgs e) - { - Log.Error("UI exception", e.Exception); - MessageBox.Show( - $"Errore imprevisto:\n\n{e.Exception.Message}", - "Encelado", MessageBoxButton.OK, MessageBoxImage.Error); - e.Handled = true; - } - - protected override void OnExit(ExitEventArgs e) - { - Log.ShutdownAsync().GetAwaiter().GetResult(); - base.OnExit(e); - } -} diff --git a/Encelado/src/Encelado.Bot/Configuration/EtoroKeyStore.cs b/Encelado/src/Encelado.Bot/Configuration/EtoroKeyStore.cs deleted file mode 100644 index 7031980..0000000 --- a/Encelado/src/Encelado.Bot/Configuration/EtoroKeyStore.cs +++ /dev/null @@ -1,253 +0,0 @@ -using System.Buffers; -using System.Globalization; -using System.Security.Cryptography; -using System.Text.Json; - -namespace Encelado.Bot.Configuration; - -/// The two long-lived keys eToro issues, for one environment. -public sealed record EtoroKeys(string ApiKey, string UserKey, DateTime SavedUtc) -{ - public bool IsComplete => ApiKey.Length > 0 && UserKey.Length > 0; -} - -/// -/// Persists the eToro keys outside the repository, per user and per environment (demo -/// and real are different keys), in %LOCALAPPDATA%\Encelado\etoro.dat. -/// -/// On Windows the file is encrypted with DPAPI bound to the current user account, so it -/// needs no passphrase and survives an unattended restart; elsewhere it is plain JSON -/// with owner-only permissions and says so. -/// -/// -public static class EtoroKeyStore -{ - public static bool IsEncrypted => OperatingSystem.IsWindows(); - - /// - /// Where the store lives. ENCELADO_HOME overrides it, which keeps portable - /// installs self-contained and lets the tests run without touching the real profile. - /// - public static string DirectoryPath => - Environment.GetEnvironmentVariable("ENCELADO_HOME") is { Length: > 0 } custom - ? custom - : Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Encelado"); - - public static string FilePath => Path.Combine(DirectoryPath, "etoro.dat"); - - public static bool Exists => File.Exists(FilePath); - - public static EtoroKeys? Load(bool demo) - { - Dictionary all = LoadAll(); - return all.TryGetValue(Key(demo), out EtoroKeys? found) ? found : null; - } - - public static void Save(bool demo, EtoroKeys keys) - { - ArgumentNullException.ThrowIfNull(keys); - Dictionary all = LoadAll(); - all[Key(demo)] = keys; - Write(all); - } - - public static bool Clear(bool demo) - { - Dictionary all = LoadAll(); - if (!all.Remove(Key(demo))) - { - return false; - } - - if (all.Count == 0) - { - try - { - File.Delete(FilePath); - } - catch (IOException) - { - // The caller reports the path; nothing more to do. - } - } - else - { - Write(all); - } - - return true; - } - - /// - /// Strips control characters, byte-order marks and stray spacing from a pasted key. - /// Keys copied out of a browser routinely carry a zero-width space, which would - /// surface much later as an opaque 401 deep inside the stack. - /// - public static string? Clean(string? raw) - { - if (string.IsNullOrEmpty(raw)) - { - return null; - } - - Span buffer = raw.Length <= 256 ? stackalloc char[raw.Length] : new char[raw.Length]; - int length = 0; - - foreach (char c in raw) - { - if (!char.IsControl(c) && c != '' && c != '​' && c != ' ') - { - buffer[length++] = c; - } - } - - string cleaned = new string(buffer[..length]).Trim(); - return cleaned.Length == 0 ? null : cleaned; - } - - /// Masks a secret for display: the first six characters, then stars. Never the whole key. - public static string Mask(string? value) - { - if (string.IsNullOrEmpty(value)) - { - return "(vuota)"; - } - - if (value.Length <= 6) - { - return new string('*', value.Length); - } - - return value[..6] + new string('*', Math.Min(12, value.Length - 6)); - } - - /// Installs keys into the configuration: from the environment first, then from the store. - public static bool Resolve(BotConfig config, out string origin) - { - ArgumentNullException.ThrowIfNull(config); - if (config.Etoro.HasKeys) - { - origin = $"variabili d'ambiente ({Mask(config.Etoro.ApiKey)})"; - return true; - } - - if (Load(config.Etoro.IsDemo) is { IsComplete: true } saved) - { - config.Etoro.ApiKey = saved.ApiKey; - config.Etoro.UserKey = saved.UserKey; - origin = $"chiavi salvate ({Mask(saved.ApiKey)}, {saved.SavedUtc:yyyy-MM-dd})"; - return true; - } - - origin = "nessuna chiave eToro"; - return false; - } - - private static string Key(bool demo) => demo ? "demo" : "real"; - - private static Dictionary LoadAll() - { - Dictionary result = new(StringComparer.OrdinalIgnoreCase); - if (!File.Exists(FilePath)) - { - return result; - } - - byte[] raw; - try - { - raw = File.ReadAllBytes(FilePath); - } - catch (Exception ex) when (ex is IOException or UnauthorizedAccessException) - { - return result; - } - - byte[] plaintext; - try - { - plaintext = OperatingSystem.IsWindows() - ? ProtectedData.Unprotect(raw, optionalEntropy: null, DataProtectionScope.CurrentUser) - : raw; - } - catch (CryptographicException) - { - // Written by a different Windows user, or corrupt: treated as absent so the - // caller prompts instead of crashing. - return result; - } - - try - { - using JsonDocument doc = JsonDocument.Parse(plaintext); - foreach (JsonProperty entry in doc.RootElement.EnumerateObject()) - { - JsonElement v = entry.Value; - string api = Get(v, "apiKey"); - string user = Get(v, "userKey"); - DateTime saved = DateTime.TryParse(Get(v, "savedUtc"), CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime t) ? t : DateTime.MinValue; - if (api.Length > 0 && user.Length > 0) - { - result[entry.Name] = new EtoroKeys(api, user, saved); - } - } - } - catch (JsonException) - { - return []; - } - finally - { - CryptographicOperations.ZeroMemory(plaintext); - } - - return result; - - static string Get(JsonElement e, string name) => - e.TryGetProperty(name, out JsonElement p) && p.ValueKind == JsonValueKind.String ? p.GetString() ?? string.Empty : string.Empty; - } - - private static void Write(Dictionary all) - { - ArrayBufferWriter buffer = new(512); - using (Utf8JsonWriter w = new(buffer)) - { - w.WriteStartObject(); - foreach ((string environment, EtoroKeys k) in all) - { - w.WriteStartObject(environment); - w.WriteString("apiKey", k.ApiKey); - w.WriteString("userKey", k.UserKey); - w.WriteString("savedUtc", k.SavedUtc.ToString("O", CultureInfo.InvariantCulture)); - w.WriteEndObject(); - } - - w.WriteEndObject(); - } - - Directory.CreateDirectory(Path.GetDirectoryName(FilePath)!); - byte[] payload = OperatingSystem.IsWindows() - ? ProtectedData.Protect(buffer.WrittenSpan.ToArray(), optionalEntropy: null, DataProtectionScope.CurrentUser) - : buffer.WrittenSpan.ToArray(); - - try - { - File.WriteAllBytes(FilePath, payload); - if (!OperatingSystem.IsWindows()) - { - try - { - File.SetUnixFileMode(FilePath, UnixFileMode.UserRead | UnixFileMode.UserWrite); - } - catch (Exception ex) when (ex is IOException or UnauthorizedAccessException or PlatformNotSupportedException) - { - // Best effort; the login window already warns that the file is not encrypted here. - } - } - } - finally - { - CryptographicOperations.ZeroMemory(payload); - } - } -} diff --git a/Encelado/src/Encelado.Bot/Encelado.Bot.csproj b/Encelado/src/Encelado.Bot/Encelado.Bot.csproj deleted file mode 100644 index 1c77263..0000000 --- a/Encelado/src/Encelado.Bot/Encelado.Bot.csproj +++ /dev/null @@ -1,54 +0,0 @@ - - - - - net10.0-windows - WinExe - true - - - enable - enable - latest - - - false - false - Encelado.Bot - Encelado - Assets\encelado.ico - true - false - false - false - - true - - - - - - - - - - - - - - - - - - - - diff --git a/Encelado/src/Encelado.Bot/GlobalUsings.cs b/Encelado/src/Encelado.Bot/GlobalUsings.cs deleted file mode 100644 index 1de43a9..0000000 --- a/Encelado/src/Encelado.Bot/GlobalUsings.cs +++ /dev/null @@ -1,10 +0,0 @@ -// Declared as a real source file rather than . The temporary project -// MSBuild generates to compile XAML markup does not inherit that property, so the -// markup pass would otherwise fail on types the rest of the project takes for granted. -global using System; -global using System.Collections.Generic; -global using System.IO; -global using System.Net.Http; -global using System.Linq; -global using System.Threading; -global using System.Threading.Tasks; diff --git a/Encelado/src/Encelado.Bot/MainWindow.xaml b/Encelado/src/Encelado.Bot/MainWindow.xaml deleted file mode 100644 index b1a6456..0000000 --- a/Encelado/src/Encelado.Bot/MainWindow.xaml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ` : ""}`; + }; + const basketCard = (b) => `
+
${esc(b.name)} (${esc(b.cross)})
${esc(b.stateLabel)} +
z${fmtSigned(b.z)}ρ${fmtNum(b.rho)}Pips${b.isOpen ? fmtSigned(b.pips, 1) : "—"}P&L${b.isOpen ? money(b.pnlUsd, true) : "—"}
+ ${b.isOpen ? `
` : ""}
`; + const render = () => { + const s = state.snapshot; if (!s) return; + $("env-chip").textContent = s.mode; $("env-chip").className = "chip env " + s.environmentKind; + stateChip(s); + const running = s.state === "running" || s.state === "starting"; + const power = $("power"); power.textContent = running ? "FERMA" : "AVVIA"; power.classList.toggle("running", running); power.disabled = s.state === "starting" || s.state === "stopping" || state.busy; + $("kill").disabled = s.state !== "running"; + $("preset").value = s.preset === "—" ? "MODERATE" : s.preset; $("preset").disabled = s.state !== "running"; + if ($("currency").value !== state.currency) $("currency").value = state.currency; + banner(s); + $("k-equity").textContent = money(s.equity); $("k-equity").title = moneyTitle(s.equity); $("k-equity-sub").textContent = `saldo ${money(s.balance)}`; + $("k-today").textContent = money(s.todayPnl, true); $("k-today").className = "value num " + cls(s.todayPnl); $("k-today").title = moneyTitle(s.todayPnl); $("k-today-sub").textContent = fmtPct(s.todayPnlPct); + $("k-open").textContent = money(s.accountOpenPnl, true); $("k-open").className = "value num " + cls(s.accountOpenPnl); $("k-open").title = moneyTitle(s.accountOpenPnl); $("k-open-sub").textContent = `di cui basket ${money(s.openPnl, true)}`; + $("k-dd").textContent = fmtPct(s.drawdownPct); $("k-dd").className = "value num " + (s.drawdownPct >= s.equityStopPct * 0.7 ? "down" : ""); $("k-dd-sub").textContent = `picco ${money(s.peakEquity)} · stop a ${fmtPct(s.equityStopPct)}${s.cumulativeCashFlow ? ` · cassa ${money(s.cumulativeCashFlow, true)}` : ""}`; + $("k-baskets").textContent = s.maxBaskets ? `${s.openBaskets} / ${s.maxBaskets}` : String(s.openBaskets); + const sub = $("k-baskets-sub"); sub.textContent = `in attesa ${s.pendingBaskets} · orfane ${s.orphanLegs} · esterne ${s.foreignPositions}`; sub.className = "sub " + (s.orphanLegs > 0 ? "down" : ""); + $("k-margin").textContent = money(s.usedMargin); $("k-margin").title = `${fmtNum(s.usedMargin)} USD impegnati, ${fmtNum(s.availableBalance)} USD disponibili`; + $("k-margin-sub").textContent = `disponibile ${money(s.availableBalance)}${s.usedMargin > 0 ? ` · equity / margine ${fmtNum(s.equity / s.usedMargin, 2)}` : ""}`; + $("baskets-body").innerHTML = s.baskets.map(basketRow).join(""); + $("baskets-cards").innerHTML = s.baskets.map(basketCard).join(""); + const next = (s.context && s.context.nextEvents || []).find((e) => new Date(e.timeUtc) >= new Date()); + $("ctx-event").textContent = next ? `${next.currency} ${next.title} · ${shortTime(next.timeUtc)} (${next.impact})` : "nessun evento ad alto impatto in vista"; + $("ctx-calendar").textContent = s.context ? `${s.context.calendarState} · ${s.context.volForecast}` : "—"; + $("ctx-api").textContent = `${s.apiState}${Number.isFinite(s.apiLatencyMs) ? ` · ${fmtNum(s.apiLatencyMs, 0)} ms` : ""} · scarto orologio ${fmtSigned(s.clockSkewSeconds, 1)} s`; + $("ctx-counters").textContent = s.counters; $("ctx-telegram").textContent = s.notifierStatus || "—"; $("ctx-news").textContent = s.context ? s.context.newsState : "—"; + $("activity").innerHTML = s.events.slice().reverse().map((e) => `
  • ${esc(e.time)}${esc(e.message)}
  • `).join(""); + if (!state.zone) { state.zoneLabel = ""; } + }; + document.addEventListener("click", async (e) => { + const btn = e.target.closest("[data-close]"); if (!btn) return; + const name = btn.dataset.close; + if (await confirm("Chiusura basket", `Chiudere entrambe le gambe di ${name} al prezzo di mercato?`, "", "Chiudi")) await command("close", { argument: name }); + }); + + // ---------------------------------------------------------------- stream + let es = null; let pollTimer = null; + const apply = (s) => { state.snapshot = s; if (!state.currencyTouched) { state.currency = s.displayCurrency || "USD"; } render(); }; + // ?once=1: a single snapshot and no stream — for the screenshots of the documentation + // (a headless browser with an open event stream never considers the page loaded). + const once = new URLSearchParams(location.search).has("once"); + const connect = () => { + if (once) { api("/api/snapshot").then(({ data }) => apply(data)).catch(() => {}); return; } + if (!("EventSource" in window)) { poll(); return; } + es = new EventSource("/api/stream"); + es.addEventListener("snapshot", (ev) => { try { apply(JSON.parse(ev.data)); } catch { /* a partial frame */ } }); + es.onerror = () => { es.close(); es = null; setTimeout(connect, 3000); }; + }; + const poll = async () => { try { const { data } = await api("/api/snapshot"); apply(data); } catch { /* retry */ } pollTimer = setTimeout(poll, 2000); }; + $("currency").addEventListener("change", () => { state.currencyTouched = true; }); + + // ---------------------------------------------------------------- history + const q = (obj) => Object.entries(obj).filter(([, v]) => v).map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join("&"); + const ordersFilter = () => ({ basket: $("f-basket").value.trim(), symbol: $("f-symbol").value.trim(), outcome: $("f-outcome").value, from: $("f-from").value, to: $("f-to").value ? $("f-to").value + "T23:59:59Z" : "" }); + const loadHistory = async () => { + busy(true); + try { + if (state.tab === "ordini") { + const { data } = await api("/api/history/orders?" + q(ordersFilter())); + $("history-problem").hidden = !data.problem; $("history-problem").textContent = data.problem || ""; + $("orders-body").innerHTML = data.rows.map((o) => `${shortTime(o.ts)}${esc(o.basket)}
    ${esc(o.basketId)}
    ${esc(o.symbol)}${esc(o.side)}${esc(o.leg)}${fmtNum(o.requestedUnits, 2)}${o.executedUnits ? fmtNum(o.executedUnits, 2) : "—"}${o.requestedPrice ? fmtNum(o.requestedPrice, 5) : "—"}${o.fillRate ? fmtNum(o.fillRate, 5) : "—"}${o.slippagePips === null ? "—" : fmtSigned(o.slippagePips, 1)}${esc(o.status)}${esc(o.resolution)}${o.orderId || "—"}${o.positionId || "—"}${o.fees ? fmtNum(o.fees) : "—"}`).join("") || `nessun ordine nel periodo`; + } else if (state.tab === "posizioni") { + const { data } = await api("/api/history/positions?" + q({ origin: $("p-origin").value })); + $("history-problem").hidden = !data.problem; $("history-problem").textContent = data.problem || ""; + $("positions-body").innerHTML = data.rows.map((p) => `${esc(p.origin)}${p.isOpen ? ' aperta' : ""}${esc(p.basket)}
    ${esc(p.basketId)}
    ${esc(p.symbol)}${p.origin === "movimento di cassa" ? "—" : esc(p.side)}${p.units ? fmtNum(p.units, 2) : "—"}${shortTime(p.openedUtc)}${p.closedUtc ? shortTime(p.closedUtc) : "—"}${money(p.pnlGrossUsd, true)}${fmtNum(p.feesUsd)}${money(p.pnlNetUsd, true)}${p.pips === null ? "—" : fmtSigned(p.pips, 1)}${p.origin === "movimento di cassa" ? "—" : fmtNum(p.durationMinutes, 0) + " min"}${esc(p.exitReason)}`).join("") || `nessuna posizione`; + } else { + const custom = $("per-from").value && $("per-to").value ? { from: $("per-from").value, to: $("per-to").value + "T23:59:59Z" } : {}; + const { data } = await api("/api/history/periods?" + q(custom)); + $("history-problem").hidden = !data.problem; $("history-problem").textContent = data.problem || ""; + $("equity-chart").innerHTML = data.equitySvg; + $("periods-body").innerHTML = data.rows.map((p) => `${esc(p.periodo)}
    ${shortTime(p.fromUtc).slice(0, 10)} → ${shortTime(p.toUtc).slice(0, 10)}
    ${p.nBasket}${p.nPosizioni}${p.vinti}${p.persi}${p.winRate === null ? "—" : fmtPct(p.winRate)}${money(p.pnlLordo, true)}${money(p.fee)}${money(p.pnlNetto, true)}${p.mediaPerBasket === null ? "—" : money(p.mediaPerBasket, true)}${money(p.maxDd)}${p.movimentiDiCassa ? money(p.movimentiDiCassa, true) : "—"}`).join(""); + } + } catch (e) { snack(String(e.message || e), true); } + finally { busy(false); } + }; + document.querySelectorAll(".tab").forEach((t) => t.addEventListener("click", () => { + document.querySelectorAll(".tab").forEach((x) => x.setAttribute("aria-selected", String(x === t))); + state.tab = t.dataset.tab; + ["ordini", "posizioni", "periodi"].forEach((n) => { $("tab-" + n).hidden = n !== state.tab; }); + loadHistory(); + })); + $("f-apply").addEventListener("click", loadHistory); $("p-apply").addEventListener("click", loadHistory); $("per-apply").addEventListener("click", loadHistory); + $("export-orders").addEventListener("click", () => { location.href = "/api/history/orders?format=csv&" + q(ordersFilter()); }); + $("export-positions").addEventListener("click", () => { location.href = "/api/history/positions?format=csv&" + q({ origin: $("p-origin").value }); }); + $("export-periods").addEventListener("click", () => { location.href = "/api/history/periods?format=csv"; }); + + // ---------------------------------------------------------------- log + const loadLog = async () => { + if (state.page !== "log") return; + try { + const { data } = await api("/api/log?" + q({ level: $("log-level").value, q: $("log-search").value.trim(), limit: 2000, after: state.lastLogSeq })); + if (data.file) $("log-file").textContent = data.file; + if (data.rows.length) { + const body = $("log-body"); + body.insertAdjacentHTML("beforeend", data.rows.map((r) => `${esc(r.time)}${esc(r.message)}`).join("")); + while (body.rows.length > 5000) body.deleteRow(0); + if ($("log-follow").checked) $("log-wrap").scrollTop = $("log-wrap").scrollHeight; + } + state.lastLogSeq = data.lastSeq; + } catch { /* next tick */ } + }; + if (!once) setInterval(loadLog, 1500); + const refilterLog = () => { state.lastLogSeq = 0; $("log-body").innerHTML = ""; loadLog(); }; + $("log-level").addEventListener("change", refilterLog); $("log-search").addEventListener("input", () => { clearTimeout(refilterLog.t); refilterLog.t = setTimeout(refilterLog, 300); }); + + // ---------------------------------------------------------------- settings + const loadSettings = async () => { + try { + const { data } = await api("/api/settings"); state.settings = data; state.dirty = {}; + $("settings-path").textContent = data.configPath; $("keys-status").textContent = data.keys; + $("settings-groups").innerHTML = data.groups.map((g) => `

    ${esc(g.title)}

    ${esc(g.description)}
    ${g.fields.map(fieldHtml).join("")}
    `).join(""); + updateSaveState(); + } catch (e) { snack(String(e.message || e), true); } + }; + const fieldHtml = (f) => { + const id = "f_" + f.path.replace(/[^a-z0-9]/gi, "_"); + const input = f.options.length + ? `` + : ``; + return `
    ${input}${esc(f.suffix)} ${esc(f.error)}
    `; + }; + const updateSaveState = () => { + const n = Object.keys(state.dirty).length; $("settings-save").disabled = n === 0; + $("settings-status").textContent = n === 0 ? "Nessuna modifica da salvare" : `${n} modifica/e non salvate — l'interfaccia le applica subito, il motore al prossimo avvio`; + }; + $("settings-groups").addEventListener("input", (e) => { + const el = e.target.closest("[data-path]"); if (!el) return; + const path = el.dataset.path; const field = state.settings.groups.flatMap((g) => g.fields).find((f) => f.path === path); + const value = el.value; if (value === field.value) delete state.dirty[path]; else state.dirty[path] = value; + el.classList.toggle("dirty", path in state.dirty); updateSaveState(); + }); + $("settings-revert").addEventListener("click", loadSettings); + $("settings-save").addEventListener("click", async () => { + busy(true); + try { + const { ok, data } = await api("/api/settings", { method: "POST", body: JSON.stringify(state.dirty) }); + snack(data.message, !ok); if (ok) { if ("ui.theme" in state.dirty) applyTheme(state.dirty["ui.theme"]); if ("ui.displayCurrency" in state.dirty) { state.currency = state.dirty["ui.displayCurrency"]; state.currencyTouched = true; render(); } loadSettings(); } + } finally { busy(false); } + }); + $("keys-save").addEventListener("click", async () => { + busy(true); + try { const { ok, data } = await api("/api/settings/keys", { method: "POST", body: JSON.stringify({ apiKey: $("key-api").value, userKey: $("key-user").value }) }); snack(data.message, !ok); if (ok) { $("key-api").value = ""; $("key-user").value = ""; loadSettings(); } } + finally { busy(false); } + }); + $("keys-forget").addEventListener("click", async () => { + if (!(await confirm("Rimozione chiavi", "Rimuovere le chiavi eToro salvate nel file cifrato per l'ambiente corrente?", "", "Rimuovi", true))) return; + const { ok, data } = await api("/api/settings/keys", { method: "DELETE" }); snack(data.message, !ok); loadSettings(); + }); + $("restore-defaults").addEventListener("click", async () => { + if (!(await confirm("Ripristino dei valori predefiniti", "Riscrivere l'intera configurazione con i valori di fabbrica? Vengono persi i valori cambiati e i commenti scritti nel file; il file attuale viene salvato con la data accanto. Le chiavi e strategy.json non vengono toccati.", "", "Ripristina", true))) return; + const { ok, data } = await api("/api/settings/restore", { method: "POST" }); snack(data.message, !ok); if (ok) loadSettings(); + }); + const applyTheme = (t) => { document.documentElement.dataset.theme = t === "light" ? "light" : "dark"; try { localStorage.setItem("ui.theme", document.documentElement.dataset.theme); } catch { /* per-viewer */ } }; + const loadInfo = async () => { + try { + const { data } = await api("/api/info"); + const kv = (pairs) => pairs.map(([k, v]) => `
    ${esc(k)}
    ${esc(v)}
    `).join(""); + $("about-kv").innerHTML = kv([["Nome", data.name], ["Autore", data.author], ["Versione", data.version], ["Data di build", data.buildDate], ["Commit", data.commit], ["Licenza", data.license], ["Documentazione", "docs/ nel repository (RUNBOOK, ARCHITECTURE, DOCKER, UI_GUIDELINES)"]]); + $("diag-kv").innerHTML = kv([["Strategia e run", data.strategyVersion], ["Configurazione", data.configPath], ["Strategia", data.strategyPath], ["Dati", data.dataPath], ["Conoscenza", data.knowledgePath], ["Rapporti", data.reportsPath], ["Log", data.logPath], [".NET", data.dotnet], ["Sistema", data.os + (data.container ? " (container)" : "")], ["Uptime del server", Math.round(data.uptimeSeconds / 60) + " min"], ["Quote API", data.counters], ["Fuso orario", data.timeZone + " (" + data.timeZoneLabel + ")"]]); + state.zone = data.timeZone.startsWith("(") ? "" : data.timeZone.split(" (")[0]; state.zoneLabel = data.timeZoneLabel; + if (state.zone === "UTC" || /fuso del computer/.test(data.timeZone)) state.zone = data.timeZone === "UTC" ? "UTC" : ""; + } catch (e) { snack(String(e.message || e), true); } + }; + const loadResearch = async () => { + try { + const { data } = await api("/api/research"); + const kv = (pairs) => pairs.map(([k, v]) => `
    ${esc(k)}
    ${esc(v)}
    `).join(""); + $("research-kv").innerHTML = kv([["Apprendimento a runtime", data.learningEnabled ? "attivo" : "disattivato (ADR-0006): tutto in ombra"], ["Ciclo settimanale nel bot", data.weeklyCycle ? "sì" : "no"], ["Challenger MLP", data.challenger ? "sì" : "no"], ["Modello in ombra", data.mlState], ["Bandit", data.banditProposal], ["Volatilità", data.volForecast], ["Criterio", data.criterion], ["File in knowledge/", data.knowledgeFiles.map((f) => f.name).join(", ") || "nessuno"]]); + } catch { /* not yet */ } + }; + $("learn").addEventListener("click", async () => { await command("learn"); loadResearch(); }); + $("bonifica-list").addEventListener("click", async () => { + const { data } = await command("bonifica", { argument: "list" }); + const rows = data.positions || []; + $("bonifica-list-out").innerHTML = rows.length ? `
      ${rows.map((p) => `
    • ${esc(p.origin)} ${p.positionId} ${esc(p.symbol)} ${p.isBuy ? "long" : "short"} ${fmtNum(p.units, 2)} P&L ${fmtSigned(p.unrealizedPnl)} — ${esc(p.reason)} ${p.origin === "orfana-bot" ? `` : ""}
    • `).join("")}
    ` : `

    niente da bonificare

    `; + }); + $("bonifica-list-out").addEventListener("click", async (e) => { + const b = e.target.closest("[data-bonifica]"); if (!b) return; + if (await confirm("Bonifica", `Chiudere la posizione orfana ${b.dataset.bonifica}?`, "", "Chiudi", true)) { await command("bonifica", { argument: "close:" + b.dataset.bonifica }); $("bonifica-list").click(); } + }); + + // ---------------------------------------------------------------- boot + (() => { + let open = true; + try { const saved = localStorage.getItem("ui.navExpanded"); if (saved !== null) open = saved === "1"; const th = localStorage.getItem("ui.theme"); if (th) document.documentElement.dataset.theme = th; } catch { /* defaults */ } + if (window.innerWidth < 600) open = false; + setNav(open); + api("/api/info").then(({ data }) => { if (data.timeZone) loadInfo(); }).catch(() => {}); + api("/api/settings").then(({ data }) => { const t = data.groups.flatMap((g) => g.fields).find((f) => f.path === "ui.theme"); if (t) applyTheme(t.value); const nav = data.groups.flatMap((g) => g.fields).find((f) => f.path === "ui.navExpanded"); if (nav && localStorage.getItem("ui.navExpanded") === null && window.innerWidth >= 600) setNav(nav.value === "sì"); }).catch(() => {}); + navigate(); + connect(); + })(); +})(); diff --git a/Encelado/src/Encelado.Server/Web/wwwroot/icon.svg b/Encelado/src/Encelado.Server/Web/wwwroot/icon.svg new file mode 100644 index 0000000..6b10bad --- /dev/null +++ b/Encelado/src/Encelado.Server/Web/wwwroot/icon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/Encelado/src/Encelado.Server/Web/wwwroot/index.html b/Encelado/src/Encelado.Server/Web/wwwroot/index.html new file mode 100644 index 0000000..a891acc --- /dev/null +++ b/Encelado/src/Encelado.Server/Web/wwwroot/index.html @@ -0,0 +1,215 @@ + + + + + + + Encelado + + + + + +
    + + + + +
    +
    +

    Dashboard

    +
    + --:--:-- UTC + --:--:-- +
    + + + +
    + + +
    + + +
    + +
    +
    Equity
    saldo —
    +
    P&L oggi
    +
    P&L aperto (conto)
    di cui basket —
    +
    Drawdown
    picco —
    +
    Basket aperti
    in attesa 0 · orfane 0 · esterne 0
    +
    Margine usato
    +
    + +
    +

    Basket

    +
    + + +
    Basket (cross)StatozρHLPipsTPP&LCostoProssimo evento
    +
    +
    + +
    +

    Prossimo evento

    +

    Collegamento eToro

    +

    Telegram

    +
    + +

    Attività

      +
      + + + + + + + + + +
      +
      + + + +
      +

      Conferma

      +

      +
      +
      +
      +
      + + +
      +

      Motivazione

      +

      + +

      +
      +
      +
      + + +

      Ripristino

      +
        +
        +
        + + + + + + diff --git a/Encelado/src/Encelado.Server/Web/wwwroot/login.html b/Encelado/src/Encelado.Server/Web/wwwroot/login.html new file mode 100644 index 0000000..417c9a0 --- /dev/null +++ b/Encelado/src/Encelado.Server/Web/wwwroot/login.html @@ -0,0 +1,21 @@ + + + + + + Encelado — accesso + + + + +
        + +

        Encelado

        +

        Inserisci il token locale (variabile ENCELADO_WEB_TOKEN del container). Resta in un cookie HttpOnly per trenta giorni.

        +
        + + +
        +
        + + diff --git a/Encelado/src/Encelado.Server/Web/wwwroot/manifest.webmanifest b/Encelado/src/Encelado.Server/Web/wwwroot/manifest.webmanifest new file mode 100644 index 0000000..05cdb7b --- /dev/null +++ b/Encelado/src/Encelado.Server/Web/wwwroot/manifest.webmanifest @@ -0,0 +1,10 @@ +{ + "name": "Encelado", + "short_name": "Encelado", + "description": "Correlation Baskets su eToro", + "start_url": "/", + "display": "standalone", + "background_color": "#101418", + "theme_color": "#101418", + "icons": [{ "src": "/icon.svg", "sizes": "any", "type": "image/svg+xml" }] +} diff --git a/Encelado/tests/Encelado.Tests/BasketTests.cs b/Encelado/tests/Encelado.Tests/BasketTests.cs index 984de34..deda0a7 100644 --- a/Encelado/tests/Encelado.Tests/BasketTests.cs +++ b/Encelado/tests/Encelado.Tests/BasketTests.cs @@ -1,5 +1,6 @@ -using Encelado.Bot.Baskets; +using Encelado.Engine.Baskets; using Encelado.Core.Baskets; +using Encelado.Core.Baskets.History; using Encelado.Core.Baskets.Data; using Encelado.Core.Broker; diff --git a/Encelado/tests/Encelado.Tests/ConfigurationTests.cs b/Encelado/tests/Encelado.Tests/ConfigurationTests.cs index 253b490..be17c40 100644 --- a/Encelado/tests/Encelado.Tests/ConfigurationTests.cs +++ b/Encelado/tests/Encelado.Tests/ConfigurationTests.cs @@ -1,7 +1,7 @@ using System.Text.Json; using System.Text.Json.Nodes; -using Encelado.Bot.Configuration; -using Encelado.Bot.Ui; +using Encelado.Engine.Configuration; +using Encelado.Engine.Settings; using Encelado.Core.Baskets; namespace Encelado.Tests; @@ -404,7 +404,7 @@ public class UiClockTests TimeZoneInfo previous = UiClock.Zone; try { - UiClock.Zone = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time"); + UiClock.Zone = TimeZoneInfo.CreateCustomTimeZone("Test+09", TimeSpan.FromHours(9), "Test+09", "Test+09"); DateTime utc = new(2026, 9, 16, 10, 0, 0, DateTimeKind.Utc); Assert.Equal("19:00:00", UiClock.Format(utc, "HH:mm:ss")); diff --git a/Encelado/tests/Encelado.Tests/CredentialStoreTests.cs b/Encelado/tests/Encelado.Tests/CredentialStoreTests.cs deleted file mode 100644 index 1bc06bb..0000000 --- a/Encelado/tests/Encelado.Tests/CredentialStoreTests.cs +++ /dev/null @@ -1,139 +0,0 @@ -using Encelado.Bot.Configuration; - -namespace Encelado.Tests; - -/// -/// Every test redirects the store to a scratch directory via ENCELADO_HOME, so the -/// developer's real saved keys are never read, written or deleted. -/// -public sealed class EtoroKeyStoreTests : IDisposable -{ - private readonly string _home; - private readonly string? _previousHome; - - public EtoroKeyStoreTests() - { - _previousHome = Environment.GetEnvironmentVariable("ENCELADO_HOME"); - _home = Path.Combine(Path.GetTempPath(), $"encelado-store-{Guid.NewGuid():N}"); - Environment.SetEnvironmentVariable("ENCELADO_HOME", _home); - } - - public void Dispose() - { - Environment.SetEnvironmentVariable("ENCELADO_HOME", _previousHome); - if (Directory.Exists(_home)) - { - Directory.Delete(_home, recursive: true); - } - } - - [Fact] - public void HonoursTheHomeOverride() => - Assert.Equal(Path.Combine(_home, "etoro.dat"), EtoroKeyStore.FilePath); - - [Fact] - public void KeysRoundTripPerEnvironment() - { - Assert.False(EtoroKeyStore.Exists); - Assert.Null(EtoroKeyStore.Load(demo: true)); - - EtoroKeyStore.Save(demo: true, new EtoroKeys("api-demo", "user-demo", DateTime.UtcNow)); - EtoroKeyStore.Save(demo: false, new EtoroKeys("api-real", "user-real", DateTime.UtcNow)); - - Assert.True(EtoroKeyStore.Exists); - Assert.Equal("api-demo", EtoroKeyStore.Load(demo: true)!.ApiKey); - Assert.Equal("user-real", EtoroKeyStore.Load(demo: false)!.UserKey); - - Assert.True(EtoroKeyStore.Clear(demo: true)); - Assert.Null(EtoroKeyStore.Load(demo: true)); - Assert.NotNull(EtoroKeyStore.Load(demo: false)); - Assert.True(EtoroKeyStore.Clear(demo: false)); - Assert.False(EtoroKeyStore.Exists); - Assert.False(EtoroKeyStore.Clear(demo: false)); - } - - [Fact] - public void KeysAreNotReadableAsPlainTextOnWindows() - { - EtoroKeyStore.Save(demo: true, new EtoroKeys("api-key-value", "user-key-value", DateTime.UtcNow)); - string onDisk = File.ReadAllText(EtoroKeyStore.FilePath); - - if (EtoroKeyStore.IsEncrypted) - { - Assert.DoesNotContain("user-key-value", onDisk, StringComparison.Ordinal); - } - else - { - Assert.Contains("user-key-value", onDisk, StringComparison.Ordinal); - } - } - - [Fact] - public void ACorruptFileIsTreatedAsAbsentRatherThanThrowing() - { - Directory.CreateDirectory(_home); - File.WriteAllBytes(EtoroKeyStore.FilePath, [0x00, 0x01, 0x02, 0x03, 0x04]); - - Assert.Null(EtoroKeyStore.Load(demo: true)); - - EtoroKeyStore.Save(demo: true, new EtoroKeys("new-api", "new-user", DateTime.UtcNow)); - Assert.Equal("new-api", EtoroKeyStore.Load(demo: true)!.ApiKey); - } - - [Fact] - public void ResolvePrefersTheEnvironmentThenTheStore() - { - BotConfig config = new(); - Assert.False(EtoroKeyStore.Resolve(config, out string origin)); - Assert.Contains("nessuna", origin, StringComparison.OrdinalIgnoreCase); - - EtoroKeyStore.Save(demo: true, new EtoroKeys("api-stored", "user-stored", DateTime.UtcNow)); - Assert.True(EtoroKeyStore.Resolve(config, out origin)); - Assert.Equal("api-stored", config.Etoro.ApiKey); - Assert.Contains("salvate", origin, StringComparison.OrdinalIgnoreCase); - - BotConfig fromEnv = new(); - fromEnv.Etoro.ApiKey = "api-env"; - fromEnv.Etoro.UserKey = "user-env"; - Assert.True(EtoroKeyStore.Resolve(fromEnv, out origin)); - Assert.Equal("api-env", fromEnv.Etoro.ApiKey); - Assert.Contains("ambiente", origin, StringComparison.OrdinalIgnoreCase); - } - - [Theory] - [InlineData("PKABCDEFGH1234", "PKABCD********")] - [InlineData("PKAB", "****")] - [InlineData("ab", "**")] - [InlineData("", "(vuota)")] - [InlineData(null, "(vuota)")] - public void MaskKeepsOnlyThePrefix(string? input, string expected) => - Assert.Equal(expected, EtoroKeyStore.Mask(input)); - - [Theory] - [InlineData(" PKKEY123 ", "PKKEY123")] - [InlineData("PKKEY123", "PKKEY123")] - [InlineData("PK​KEY123", "PKKEY123")] - [InlineData("P\0K\0K\0E\0Y\0", "PKKEY")] - [InlineData("PKKEY123\r\n", "PKKEY123")] - public void CleanStripsInvisibleCharactersFromPastedKeys(string raw, string expected) => - Assert.Equal(expected, EtoroKeyStore.Clean(raw)); - - [Theory] - [InlineData(null)] - [InlineData("")] - [InlineData(" ")] - [InlineData("\r\n")] - public void CleanReturnsNullWhenNothingUsableRemains(string? raw) => - Assert.Null(EtoroKeyStore.Clean(raw)); - - [Fact] - public void MaskNeverEchoesAWholeSecret() - { - const string secret = "abcdefghijklmnopqrstuvwxyz0123456789"; - string masked = EtoroKeyStore.Mask(secret); - - Assert.DoesNotContain(secret, masked, StringComparison.Ordinal); - Assert.DoesNotContain(secret[4..], masked, StringComparison.Ordinal); - Assert.StartsWith("abcd", masked, StringComparison.Ordinal); - } -} diff --git a/Encelado/tests/Encelado.Tests/Encelado.Tests.csproj b/Encelado/tests/Encelado.Tests/Encelado.Tests.csproj index 022993d..fc65b8f 100644 --- a/Encelado/tests/Encelado.Tests/Encelado.Tests.csproj +++ b/Encelado/tests/Encelado.Tests/Encelado.Tests.csproj @@ -2,20 +2,15 @@ false - - net10.0-windows + + net10.0 Encelado.Tests - - true - - + false false @@ -29,15 +24,12 @@ - - + folder and from the Docker build stage, where the repository root is out of reach. --> @@ -45,8 +37,9 @@ - + + diff --git a/Encelado/tests/Encelado.Tests/ExecutionTests.cs b/Encelado/tests/Encelado.Tests/ExecutionTests.cs index 20a446a..09fe3ee 100644 --- a/Encelado/tests/Encelado.Tests/ExecutionTests.cs +++ b/Encelado/tests/Encelado.Tests/ExecutionTests.cs @@ -4,7 +4,7 @@ using System.Net; using System.Net.Http; using System.Text; using System.Text.Json; -using Encelado.Bot.Baskets; +using Encelado.Engine.Baskets; using Encelado.Core.Baskets; using Encelado.Core.Baskets.Data; using Encelado.Core.Baskets.History; diff --git a/Encelado/tests/Encelado.Tests/HistoryTests.cs b/Encelado/tests/Encelado.Tests/HistoryTests.cs new file mode 100644 index 0000000..ac6d1a6 --- /dev/null +++ b/Encelado/tests/Encelado.Tests/HistoryTests.cs @@ -0,0 +1,154 @@ +using Encelado.Core.Baskets; +using Encelado.Core.Baskets.History; +using Encelado.Core.Broker; + +namespace Encelado.Tests; + +/// The Storico page's builder: origins, pips, periods, equity curve, CSV. +public class HistoryBuilderTests +{ + private static readonly DateTime Now = new(2026, 9, 23, 12, 0, 0, DateTimeKind.Utc); + + private static OrderRecord Order(string basketId, string basket, string symbol, long instrumentId, bool isBuy, OrderLeg leg, long positionId, string clientRef, DateTime ts, OrderResolution resolution = OrderResolution.Filled) => + new(ts, "run", "Demo", basket, basketId, symbol, instrumentId, isBuy, leg, 10_000, 10_000, 1.1, 1.1001, 1, "Filled", 3, resolution, 500 + positionId, positionId, clientRef, 0, "risolto", "x"); + + private static BasketOutcomeRow Basket(string id, string name, string exit, DateTime opened) => + new(id, "run", name, "Demo", "MODERATE", opened, opened.AddHours(2), true, -2.1, -0.2, 12, 8, 8, 3, 3.4, 0.5, 0, 8, exit, 10_000, double.NaN, "y"); + + private static string Symbol(long id) => id switch { 1 => "EURUSD", 6 => "USDCHF", 7 => "AUDUSD", _ => "XXXYYY" }; + + [Fact] + public void PositionsAreClassifiedByTheOrderRegisterAndPipsFollowTheDirection() + { + DateTime open = Now.AddHours(-3); + List orders = + [ + Order("B1", "EURUSD/USDCHF", "EURUSD", 1, true, OrderLeg.A, 11, "a", open), + Order("B1", "EURUSD/USDCHF", "USDCHF", 6, true, OrderLeg.B, 12, "b", open.AddSeconds(3)), + Order("B2", "AUDUSD/USDCAD", "AUDUSD", 7, false, OrderLeg.A, 13, "c", open.AddHours(1)), + ]; + List baskets = + [ + Basket("B1", "EURUSD/USDCHF", "tp_pips", open), + Basket("B2", "AUDUSD/USDCAD", "leg_risk_unwind", open.AddHours(1)), + ]; + List closed = + [ + new(11, 1, true, 10_000, 1.1000, 1.1010, open, open.AddHours(2), 10.0, 0.5), + new(12, 6, true, 10_000, 0.8000, 0.7995, open, open.AddHours(2), -6.0, 0.5), + new(13, 7, false, 10_000, 0.6500, 0.6510, open.AddHours(1), open.AddHours(1.5), -10.0, 0.0), + new(99, 1, true, 1_000, 1.1000, 1.1020, open.AddDays(-1), open.AddDays(-1).AddHours(1), 2.0, 0.0), + ]; + List open_ = [new(14, 1, true, 5_000, 1.1000, Now.AddMinutes(-30), 1.09, 0, 10, 550, 3.0, 0.1, 1.1006)]; + List cash = [new(open.AddDays(-2), 30_000, "accredito virtuale")]; + + List rows = HistoryBuilder.Positions(closed, open_, baskets, orders, cash, Symbol, PipMath.Pip, Now); + + Assert.Equal(6, rows.Count); + PositionRecord p11 = rows.Single(r => r.PositionId == 11); + Assert.Equal("basket", p11.Origin); + Assert.Equal("B1", p11.BasketId); + Assert.Equal("tp_pips", p11.ExitReason); + Assert.Equal(10.0, p11.Pips, 6); + Assert.Equal(9.5, p11.PnlNetUsd, 6); + Assert.Equal("orfana-bot", rows.Single(r => r.PositionId == 13).Origin); + Assert.Equal(-10.0, rows.Single(r => r.PositionId == 13).Pips, 6); + Assert.Equal("esterna", rows.Single(r => r.PositionId == 99).Origin); + PositionRecord openRow = rows.Single(r => r.PositionId == 14); + Assert.True(openRow.IsOpen); + Assert.Equal("esterna", openRow.Origin); + Assert.Equal(6.0, openRow.Pips, 6); + PositionRecord cashRow = rows.Single(r => r.Origin == "movimento di cassa"); + Assert.Equal(30_000, cashRow.PnlNetUsd, 6); + Assert.Equal("deposito", cashRow.ExitReason); + + // Open positions first (no closing time), then newest closing first. + Assert.True(rows[0].IsOpen); + Assert.Equal(11, rows[1].PositionId); + } + + [Fact] + public void PeriodsCountBasketsNotLegsAndKeepCashOutOfTheResult() + { + DateTime open = Now.AddHours(-3); + List rows = + [ + new(11, "EURUSD", true, 10_000, 1.1, 1.101, open, open.AddHours(2), 10, 0.5, 9.5, 10, "basket", "B1", "EURUSD/USDCHF", "tp_pips", false, ""), + new(12, "USDCHF", true, 10_000, 0.8, 0.7995, open, open.AddHours(2), -6, 0.5, -6.5, -5, "basket", "B1", "EURUSD/USDCHF", "tp_pips", false, ""), + new(13, "AUDUSD", false, 10_000, 0.65, 0.651, open, open.AddHours(1), -10, 0, -10, -10, "orfana-bot", "B2", "AUDUSD/USDCAD", "leg_risk_unwind", false, ""), + new(99, "EURUSD", true, 1_000, 1.1, 1.102, Now.AddDays(-1), Now.AddDays(-1).AddHours(1), 2, 0, 2, 20, "esterna", "", "", "", false, ""), + new(0, "USD", true, 0, 0, 0, Now.AddDays(-2), Now.AddDays(-2), 30_000, 0, 30_000, double.NaN, "movimento di cassa", "", "", "deposito", false, "accredito"), + ]; + + List periods = HistoryBuilder.Periods(rows, Now); + PeriodStats today = periods.Single(static p => p.Periodo == "oggi"); + Assert.Equal(3, today.NPosizioni); + Assert.Equal(2, today.NBasket); + Assert.Equal(1, today.Vinti); + Assert.Equal(1, today.Persi); + Assert.Equal(0.5, today.WinRate, 6); + Assert.Equal(-7.0, today.PnlNetto, 6); + Assert.Equal(1.0, today.Fee, 6); + Assert.Equal(0, today.MovimentiDiCassa, 6); + + PeriodStats all = periods.Single(static p => p.Periodo == "tutto"); + Assert.Equal(30_000, all.MovimentiDiCassa, 6); + Assert.Equal(-7.0, all.PnlNetto, 6); // the external position and the cash movement do not count + Assert.Contains("movimenti di cassa", all.Motivazione, StringComparison.Ordinal); + + PeriodStats custom = HistoryBuilder.Periods(rows, Now, (Now.AddDays(-10), Now.AddDays(-5))).Single(static p => p.Periodo == "personalizzato"); + Assert.Equal(0, custom.NPosizioni); + Assert.True(double.IsNaN(custom.WinRate)); + } + + [Fact] + public void TheEquityCurveIsCumulativeAndTheDrawdownIsPeakToTrough() + { + DateTime t = Now.AddHours(-5); + List rows = + [ + new(1, "EURUSD", true, 1, 1, 1, t, t.AddHours(1), 10, 0, 10, 0, "basket", "B1", "b", "tp", false, ""), + new(2, "EURUSD", true, 1, 1, 1, t, t.AddHours(2), -30, 0, -30, 0, "basket", "B2", "b", "stop", false, ""), + new(3, "EURUSD", true, 1, 1, 1, t, t.AddHours(3), 5, 0, 5, 0, "basket", "B3", "b", "tp", false, ""), + new(4, "EURUSD", true, 1, 1, 1, t, null, 7, 0, 7, 0, "basket", "B4", "b", "", true, ""), + ]; + + List curve = HistoryBuilder.EquityCurve(rows); + Assert.Equal(3, curve.Count); + Assert.Equal([10.0, -20.0, -15.0], curve.Select(static p => p.CumulativeNetUsd)); + Assert.Equal(30.0, HistoryBuilder.MaxDrawdown(curve), 6); + + string svg = HistoryBuilder.EquitySvg(curve); + Assert.StartsWith(" lines = + [ + Order("B1", "EURUSD/USDCHF", "EURUSD", 1, true, OrderLeg.A, 0, "a", t, OrderResolution.Pending), + Order("B1", "EURUSD/USDCHF", "USDCHF", 6, true, OrderLeg.B, 12, "b", t.AddSeconds(5)), + Order("B1", "EURUSD/USDCHF", "EURUSD", 1, true, OrderLeg.A, 11, "a", t.AddSeconds(9)), + ]; + + List latest = HistoryBuilder.LatestOrders(lines); + Assert.Equal(2, latest.Count); + Assert.Equal("b", latest[0].ClientRef); // sent later, listed first + Assert.Equal(OrderResolution.Filled, latest.Single(static o => o.ClientRef == "a").Resolution); + Assert.Equal(11, latest.Single(static o => o.ClientRef == "a").PositionId); + + string orders = HistoryBuilder.OrdersCsv(latest); + Assert.StartsWith(HistoryBuilder.OrdersHeader + "\n", orders.Replace("\r\n", "\n"), StringComparison.Ordinal); + Assert.Equal(3, orders.Replace("\r\n", "\n").TrimEnd('\n').Split('\n').Length); + + List rows = [new(11, "EURUSD", true, 1, 1.1, 1.101, t, t.AddMinutes(30), 10, 0.5, 9.5, 10, "basket", "B1", "EURUSD/USDCHF", "tp_pips", false, "a; b")]; + string positions = HistoryBuilder.PositionsCsv(rows); + Assert.StartsWith(PositionRecord.Header, positions, StringComparison.Ordinal); + Assert.Contains("a, b", positions, StringComparison.Ordinal); // the motivation never breaks the column count + Assert.StartsWith(PeriodStats.Header, HistoryBuilder.PeriodsCsv(HistoryBuilder.Periods(rows, Now)), StringComparison.Ordinal); + } +} diff --git a/Encelado/tests/Encelado.Tests/KeyStoreTests.cs b/Encelado/tests/Encelado.Tests/KeyStoreTests.cs new file mode 100644 index 0000000..9d251ba --- /dev/null +++ b/Encelado/tests/Encelado.Tests/KeyStoreTests.cs @@ -0,0 +1,150 @@ +using Encelado.Engine.Configuration; + +namespace Encelado.Tests; + +/// The portable key store of the 5.0: an AES-GCM file under a passphrase, the environment first. +public sealed class KeyStoreTests : IDisposable +{ + private readonly string _dir = Path.Combine(Path.GetTempPath(), $"encelado-keys-{Guid.NewGuid():N}"); + + private string FilePath => Path.Combine(_dir, KeyStores.FileName); + + public void Dispose() + { + if (Directory.Exists(_dir)) + { + Directory.Delete(_dir, recursive: true); + } + } + + [Fact] + public void KeysRoundTripPerEnvironmentAndAreNotReadableOnDisk() + { + EncryptedFileKeyStore store = new(FilePath, "una passphrase lunga a sufficienza"); + Assert.False(store.Exists); + Assert.Null(store.Load(demo: true)); + + store.Save(demo: true, new EtoroKeys("api-demo", "user-demo-value", DateTime.UtcNow)); + store.Save(demo: false, new EtoroKeys("api-real", "user-real", DateTime.UtcNow)); + + Assert.True(store.Exists); + Assert.Equal("api-demo", store.Load(demo: true)!.ApiKey); + Assert.Equal("user-real", store.Load(demo: false)!.UserKey); + byte[] onDisk = File.ReadAllBytes(FilePath); + Assert.DoesNotContain("user-demo-value"u8.ToArray(), Windows(onDisk, 15)); + Assert.Equal("ENC1"u8.ToArray(), onDisk[..4]); + + Assert.True(store.Clear(demo: true)); + Assert.Null(store.Load(demo: true)); + Assert.NotNull(store.Load(demo: false)); + Assert.True(store.Clear(demo: false)); + Assert.False(store.Exists); + Assert.False(store.Clear(demo: false)); + + static IEnumerable Windows(byte[] data, int size) + { + for (int i = 0; i + size <= data.Length; i++) + { + yield return data[i..(i + size)]; + } + } + } + + [Fact] + public void AWrongPassphraseOrACorruptFileReadsAsNoKeys() + { + EncryptedFileKeyStore store = new(FilePath, "giusta-giusta-giusta"); + store.Save(demo: true, new EtoroKeys("api", "user", DateTime.UtcNow)); + + Assert.Null(new EncryptedFileKeyStore(FilePath, "sbagliata-sbagliata").Load(demo: true)); + Assert.Null(new EncryptedFileKeyStore(FilePath, string.Empty).Load(demo: true)); + + File.WriteAllBytes(FilePath, [0x00, 0x01, 0x02, 0x03, 0x04]); + Assert.Null(store.Load(demo: true)); + + store.Save(demo: true, new EtoroKeys("new-api", "new-user", DateTime.UtcNow)); + Assert.Equal("new-api", store.Load(demo: true)!.ApiKey); + } + + [Fact] + public void WithoutAPassphraseTheFileStoreCannotSave() + { + EncryptedFileKeyStore store = new(FilePath, string.Empty); + Assert.False(store.CanSave); + Assert.Throws(() => store.Save(true, new EtoroKeys("a", "b", DateTime.UtcNow))); + } + + [Fact] + public void ResolvePrefersTheEnvironmentThenTheEncryptedFile() + { + string? previous = Environment.GetEnvironmentVariable(KeyStores.PassphraseVariable); + try + { + Environment.SetEnvironmentVariable(KeyStores.PassphraseVariable, "passphrase-di-prova"); + BotConfig config = new(); + config.Run.BaseDirectory = _dir; + Assert.False(KeyStores.Resolve(config, out string origin)); + Assert.Contains("nessuna", origin, StringComparison.OrdinalIgnoreCase); + + KeyStores.File(config).Save(demo: true, new EtoroKeys("api-stored", "user-stored", DateTime.UtcNow)); + Assert.True(KeyStores.Resolve(config, out origin)); + Assert.Equal("api-stored", config.Etoro.ApiKey); + Assert.Contains("cifrato", origin, StringComparison.OrdinalIgnoreCase); + + BotConfig fromEnv = new(); + fromEnv.Run.BaseDirectory = _dir; + fromEnv.Etoro.ApiKey = "api-env"; + fromEnv.Etoro.UserKey = "user-env"; + Assert.True(KeyStores.Resolve(fromEnv, out origin)); + Assert.Equal("api-env", fromEnv.Etoro.ApiKey); + Assert.Contains("ambiente", origin, StringComparison.OrdinalIgnoreCase); + + Environment.SetEnvironmentVariable(KeyStores.PassphraseVariable, null); + BotConfig noPass = new(); + noPass.Run.BaseDirectory = _dir; + Assert.False(KeyStores.Resolve(noPass, out origin)); + Assert.Contains(KeyStores.PassphraseVariable, origin, StringComparison.Ordinal); + } + finally + { + Environment.SetEnvironmentVariable(KeyStores.PassphraseVariable, previous); + } + } + + [Theory] + [InlineData("PKABCDEFGH1234", "PKABCD********")] + [InlineData("PKAB", "****")] + [InlineData("ab", "**")] + [InlineData("", "(vuota)")] + [InlineData(null, "(vuota)")] + public void MaskKeepsOnlyThePrefix(string? input, string expected) => + Assert.Equal(expected, KeyStores.Mask(input)); + + [Theory] + [InlineData(" PKKEY123 ", "PKKEY123")] + [InlineData("PKKEY123", "PKKEY123")] + [InlineData("PK​KEY123", "PKKEY123")] + [InlineData("P\0K\0K\0E\0Y\0", "PKKEY")] + [InlineData("PKKEY123\r\n", "PKKEY123")] + public void CleanStripsInvisibleCharactersFromPastedKeys(string raw, string expected) => + Assert.Equal(expected, KeyStores.Clean(raw)); + + [Theory] + [InlineData(null)] + [InlineData("")] + [InlineData(" ")] + [InlineData("\r\n")] + public void CleanReturnsNullWhenNothingUsableRemains(string? raw) => + Assert.Null(KeyStores.Clean(raw)); + + [Fact] + public void MaskNeverEchoesAWholeSecret() + { + const string secret = "abcdefghijklmnopqrstuvwxyz0123456789"; + string masked = KeyStores.Mask(secret); + + Assert.DoesNotContain(secret, masked, StringComparison.Ordinal); + Assert.DoesNotContain(secret[4..], masked, StringComparison.Ordinal); + Assert.StartsWith("abcd", masked, StringComparison.Ordinal); + } +} diff --git a/Encelado/tests/Encelado.Tests/LoggingTests.cs b/Encelado/tests/Encelado.Tests/LoggingTests.cs index c9377b0..65c07e2 100644 --- a/Encelado/tests/Encelado.Tests/LoggingTests.cs +++ b/Encelado/tests/Encelado.Tests/LoggingTests.cs @@ -1,5 +1,5 @@ using System.Text; -using Encelado.Bot.Logging; +using Encelado.Engine.Logging; namespace Encelado.Tests; diff --git a/Encelado/tests/Encelado.Tests/NewsTests.cs b/Encelado/tests/Encelado.Tests/NewsTests.cs index db527c5..7d395c1 100644 --- a/Encelado/tests/Encelado.Tests/NewsTests.cs +++ b/Encelado/tests/Encelado.Tests/NewsTests.cs @@ -1,4 +1,4 @@ -using Encelado.Bot.Baskets; +using Encelado.Engine.Baskets; using Encelado.Core.News; namespace Encelado.Tests; diff --git a/Encelado/tests/Encelado.Tests/PowerButtonTests.cs b/Encelado/tests/Encelado.Tests/PowerButtonTests.cs deleted file mode 100644 index e967b90..0000000 --- a/Encelado/tests/Encelado.Tests/PowerButtonTests.cs +++ /dev/null @@ -1,145 +0,0 @@ -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using Encelado.Bot.Engine; -using Encelado.Bot.Ui; - -namespace Encelado.Tests; - -/// -/// The start/stop button's enabled state. -/// -/// A bug worth a dedicated file: the window used to disable the button by assigning -/// PowerBtn.IsEnabled = false around an in-flight start. In WPF that replaces the -/// binding with a local value and detaches it permanently, so the button went dead on -/// the first click and the running bot could no longer be stopped from the window. -/// -/// -public class PowerButtonStateTests -{ - private static MainViewModel Vm() => new() { Log = new LogViewModel(100) }; - - private static BotSnapshot Snapshot(BotState state) => TestSnapshots.Minimal(state); - - [Theory] - [InlineData(BotState.Stopped, true)] - [InlineData(BotState.Running, true)] - [InlineData(BotState.Faulted, true)] - [InlineData(BotState.Starting, false)] - [InlineData(BotState.Stopping, false)] - public void TheButtonFollowsTheEngineState(BotState state, bool expected) - { - MainViewModel vm = Vm(); - vm.Apply(Snapshot(state)); - - Assert.Equal(expected, vm.CanToggle); - } - - [Fact] - public void ARunningBotCanAlwaysBeStopped() - { - // The reported symptom, stated as a requirement. - MainViewModel vm = Vm(); - - vm.Apply(Snapshot(BotState.Starting)); - vm.Apply(Snapshot(BotState.Running)); - - Assert.True(vm.IsRunning); - Assert.True(vm.CanToggle, "un bot in esecuzione deve sempre poter essere fermato"); - Assert.Equal("FERMA", vm.PowerText); - } - - [Fact] - public void BusyBlocksTheButtonAndReleasingItRestoresIt() - { - MainViewModel vm = Vm(); - vm.Apply(Snapshot(BotState.Running)); - Assert.True(vm.CanToggle); - - vm.IsBusy = true; - Assert.False(vm.CanToggle); - - vm.IsBusy = false; - Assert.True(vm.CanToggle, "rilasciare il flag deve riabilitare il bottone"); - } - - [Fact] - public void AFullStartStopCycleLeavesTheButtonUsable() - { - MainViewModel vm = Vm(); - - // Start. - vm.IsBusy = true; - vm.Apply(Snapshot(BotState.Starting)); - Assert.False(vm.CanToggle); - - vm.Apply(Snapshot(BotState.Running)); - vm.IsBusy = false; - Assert.True(vm.CanToggle); - - // Stop. - vm.IsBusy = true; - vm.Apply(Snapshot(BotState.Stopping)); - Assert.False(vm.CanToggle); - - vm.Apply(Snapshot(BotState.Stopped)); - vm.IsBusy = false; - Assert.True(vm.CanToggle); - Assert.Equal("AVVIA", vm.PowerText); - } - - [Fact] - public void ChangingBusyRaisesTheNotificationTheBindingNeeds() - { - MainViewModel vm = Vm(); - List raised = []; - vm.PropertyChanged += (_, e) => raised.Add(e.PropertyName); - - vm.IsBusy = true; - - // Without this the bound button would never repaint. - Assert.Contains(nameof(MainViewModel.CanToggle), raised); - } - - [Fact] - public void ApplyRaisesCanToggleSoTheButtonTracksTheEngine() - { - MainViewModel vm = Vm(); - vm.Apply(Snapshot(BotState.Stopped)); - - List raised = []; - vm.PropertyChanged += (_, e) => raised.Add(e.PropertyName); - - vm.Apply(Snapshot(BotState.Starting)); - - Assert.Contains(nameof(MainViewModel.CanToggle), raised); - Assert.False(vm.CanToggle); - } -} - -/// Proves the WPF behaviour that caused the bug, so the reason stays on record. -[Collection("wpf")] -public class DependencyPropertyBindingTests -{ - [Fact] - public void AssigningABoundPropertyDetachesTheBindingForEver() - { - WpfRunner.Run(() => - { - MainViewModel vm = new() { Log = new LogViewModel(100) }; - Button button = new() { DataContext = vm }; - button.SetBinding(UIElement.IsEnabledProperty, new Binding(nameof(MainViewModel.CanToggle))); - - Assert.NotNull(BindingOperations.GetBindingExpression(button, UIElement.IsEnabledProperty)); - - // Exactly what the window used to do. - button.IsEnabled = false; - - // The binding is gone, and no later view-model change can bring it back. - Assert.Null(BindingOperations.GetBindingExpression(button, UIElement.IsEnabledProperty)); - - vm.IsBusy = false; - Assert.False(button.IsEnabled); - }); - } -} diff --git a/Encelado/tests/Encelado.Tests/TelegramTests.cs b/Encelado/tests/Encelado.Tests/TelegramTests.cs index f329e06..d010423 100644 --- a/Encelado/tests/Encelado.Tests/TelegramTests.cs +++ b/Encelado/tests/Encelado.Tests/TelegramTests.cs @@ -2,8 +2,9 @@ using System.Diagnostics; using System.Net; using System.Net.Http; using System.Text; -using Encelado.Bot.Baskets; -using Encelado.Bot.Engine; +using Encelado.Engine.Baskets; +using Encelado.Engine; +using Encelado.Core.Baskets.History; using Encelado.Core.Notifications; namespace Encelado.Tests; @@ -14,7 +15,7 @@ public class TelegramReportTests [Fact] public void TheHourlyStatusCarriesTheNumbersOfTheDashboard() { - BotSnapshot s = TestSnapshots.Populated(); + BotSnapshot s = SampleSnapshot.Populated(); string text = TelegramReports.Hourly(s, "Telegram: ultimo invio 09:00:00 UTC, coda 0"); Assert.Contains("attivo", text, StringComparison.Ordinal); diff --git a/Encelado/tests/Encelado.Tests/UiBindingTests.cs b/Encelado/tests/Encelado.Tests/UiBindingTests.cs deleted file mode 100644 index 02df58e..0000000 --- a/Encelado/tests/Encelado.Tests/UiBindingTests.cs +++ /dev/null @@ -1,207 +0,0 @@ -using System.Diagnostics; -using System.Text; -using System.Windows; -using System.Windows.Controls; -using Encelado.Bot.Engine; -using Encelado.Bot.Ui; -using Encelado.Bot.Ui.Pages; - -namespace Encelado.Tests; - -/// -/// Renders every page against a fully populated view model and fails if WPF reports a -/// single binding error. -/// -/// This exists because a wrong binding path in XAML is silent: the control simply shows -/// nothing, the build passes, the tests pass, and the defect is found by looking at the -/// running application — if the panel happens to be one you looked at. WPF does report -/// each failure to a trace source, so listening to it turns an invisible mistake into a -/// failing test. -/// -/// -[Collection("wpf")] -public class UiBindingTests -{ - internal static MainViewModel BuildViewModel() - { - MainViewModel vm = new() { StatusLines = 200, Log = new LogViewModel(5_000) }; - vm.Apply(TestSnapshots.Populated()); - - foreach (EventRow row in TestSnapshots.Populated().Events) - { - vm.Log.Enqueue(row); - } - - vm.Log.Flush(); - vm.Clock = "12:00:00"; - return vm; - } - - private static void AssertNoBindingErrors(Func build) - { - WpfRunner.Run(() => - { - using BindingErrorSpy spy = new(); - - UserControl page = build(); - page.DataContext = BuildViewModel(); - - // Measure and arrange forces the whole tree to realise and every binding to - // resolve. Creating the control alone would leave most of them untouched. - page.Measure(new Size(1400, 900)); - page.Arrange(new Rect(0, 0, 1400, 900)); - page.UpdateLayout(); - - Assert.True(spy.Errors.Count == 0, - $"binding non risolti in {page.GetType().Name}:\n{string.Join("\n", spy.Errors)}"); - }); - } - - [Fact] - public void DashboardPageBindsCleanly() => AssertNoBindingErrors(() => new DashboardPage()); - - [Fact] - public void LogPageBindsCleanly() => AssertNoBindingErrors(() => new LogPage()); - - [Fact] - public void SettingsPageBindsCleanly() => AssertNoBindingErrors(() => new SettingsPage()); - - [Fact] - public void TheDashboardShowsTheOpenBasketWithItsCloseButton() - { - WpfRunner.Run(() => - { - DashboardPage page = new() { DataContext = BuildViewModel() }; - page.Measure(new Size(1400, 900)); - page.Arrange(new Rect(0, 0, 1400, 900)); - page.UpdateLayout(); - - List