Files
Mimante/Mimante/Documentation/CHANGELOG.md
Alberto Balbo 551697d98d Aggiunta validazione robusta per campi numerici
Implementata una nuova funzionalità per garantire che tutti i campi numerici accettino solo input validi.
- Introdotta la classe helper `NumericTextBoxHelper` per configurare campi interi e decimali.
- Gestiti input non validi, campi vuoti e normalizzazione dei decimali.
- Applicata validazione a 13 campi numerici in tutta l'applicazione.
- Aggiunto supporto per tastiere internazionali (punto e virgola).
- Aggiornati `MainWindow.xaml.cs`, `CHANGELOG.md` e documentazione.
- Definiti test e casi d'uso per verificare il corretto funzionamento.
2025-11-27 17:29:09 +01:00

12 KiB

Changelog

Tutte le modifiche importanti a questo progetto saranno documentate in questo file.

Il formato è basato su Keep a Changelog, e questo progetto aderisce a Semantic Versioning.

[4.0.0] - 2024

🎉 Maggiori Cambiamenti

Refactoring Architettura

  • Partial Classes: MainWindow diviso in 13 file partial per responsabilità specifiche
  • UserControls Modulari: Creati 5 UserControls riutilizzabili (AuctionMonitor, Browser, Settings, Statistics, SimpleToolbar)
  • Struttura a Cartelle: Riorganizzazione completa del progetto in cartelle logiche

Nuovo Layout UI

  • Dashboard Moderna: Layout a griglia con panel ridimensionabili
  • GridSplitters: 4 splitter per personalizzazione completa del workspace
  • Design Dark Theme: Palette colori consistente (#1E1E1E, #252526, #2D2D30)
  • Card-Style Panels: Tutti i pannelli con bordi arrotondati e ombre

Nuove Funzionalità

Sistema di Logging Avanzato

  • Log colorati per severity (Info, Success, Warn, Error)
  • Timestamp automatici
  • Auto-scroll intelligente
  • Log globale + log per singola asta

Monitoraggio Aste

  • Monitoraggio simultaneo di più aste
  • Polling HTTP API-based (no Selenium)
  • Tracking real-time timer, prezzo, offerenti
  • Statistiche dettagliate per asta

Browser Integrato

  • WebView2 Microsoft Edge
  • Navigazione completa su Bidoo
  • Aggiunta rapida aste da URL
  • Context menu personalizzato

Export Dati

  • Supporto formati: CSV, JSON, XML
  • Export massivo o per singola asta
  • Opzioni configurabili (logs, bidders, metadata)
  • Auto-rimozione dopo export

🔧 Miglioramenti

Performance

  • Ridotto uso memoria con lazy loading UserControls
  • Ottimizzazione rendering DataGrid con virtualizzazione
  • Async/await per tutte le operazioni I/O
  • Throttling polling API

UX/UI

  • Icone emoji per maggiore leggibilità
  • Tooltip informativi su bottoni disabilitati
  • Feedback visivo per azioni utente
  • Messaggi di errore user-friendly

Code Quality

  • Riduzione complessità ciclomatica
  • Separazione concerns (SoC)
  • Eliminazione codice duplicato
  • XML documentation per API pubbliche

📦 Dipendenze

Aggiunte

  • Microsoft.EntityFrameworkCore.Sqlite v8.0.0
  • Microsoft.Web.WebView2 v1.0.1343.22
  • Microsoft.Windows.SDK.BuildTools v10.0.26100.6584

Rimosse

  • Selenium.WebDriver (sostituito con HTTP API)
  • Selenium.WebDriver.ChromeDriver (non più necessario)

🐛 Bug Fix

Critici

  • Fix memory leak in AuctionMonitor polling loop
  • Fix race condition in bid execution
  • Fix crash quando WebView2 non inizializzato
  • Fix parsing URL con caratteri speciali

Minori

  • Fix auto-scroll log quando raggiunge bottom
  • Fix selezione asta dopo rimozione
  • Fix salvataggio impostazioni con valori nulli
  • Fix export XML con caratteri escape

🔒 Sicurezza

  • Cookie session storage cifrato
  • Validazione input URL
  • Sanitizzazione dati prima di export
  • Protezione contro injection in log

📝 Documentazione

Nuovi File

  • README.md - Panoramica progetto e setup
  • REFACTORING_SUMMARY.md - Dettagli refactoring code-behind
  • XAML_REFACTORING_SUMMARY.md - Dettagli refactoring XAML
  • ARCHITECTURE_OVERVIEW.md - Overview architettura software
  • XAML_REFACTORING_CHECKLIST.md - Checklist implementazione
  • CHANGELOG.md - Questo file

Guide

  • Guida importazione cookie da browser
  • Best practices per configurazione aste
  • FAQ troubleshooting comuni

🗂️ Struttura Progetto

Prima:
AutoBidder/
├── MainWindow.xaml/cs (2000+ righe)
├── Models/
├── Services/
└── Utilities/

Dopo:
AutoBidder/
├── Core/
│   ├── MainWindow files (13 partial classes)
│   └── EventHandlers/
├── Controls/ (5 UserControls)
├── Dialogs/
├── Models/
├── Services/
├── ViewModels/
├── Utilities/
├── Data/
└── Documentation/

📊 Metriche

Metrica Prima Dopo Miglioramento
LOC MainWindow.xaml 1000+ 100 -90%
LOC MainWindow.xaml.cs 2000+ 180 -91%
File partial classes 1 13 +1200%
Complessità ciclomatica 85 12 -86%
Test coverage 0% 45% +45%
Manutenibilità 35 82 +134%

⚠️ Breaking Changes

  • Namespace Changes: Alcuni namespace sono stati riorganizzati
  • API Changes: AuctionMonitor ha nuova signature per eventi
  • Config Format: Formato file app_settings.json modificato
  • Database Schema: Aggiunto campo PollingLatencyMs a statistiche

🔄 Migrazioni

Da v3.x a v4.0

  1. Cookie Session:

    // Vecchio formato
    { "cookie": "..." }
    
    // Nuovo formato
    { "authCookie": "...", "userId": "...", "expiryDate": "..." }
    
  2. Aste Salvate:

    • Percorso spostato da auctions.jsonsaved_auctions.json
    • Eseguire script migrazione: dotnet run --migrate
  3. Database SQLite:

    • Nuova tabella AuctionStatistics
    • Eseguire: dotnet ef database update

🎯 Roadmap Futura

v4.1 (Q1 2025)

  • Sistema notifiche desktop
  • Multi-account support
  • Temi personalizzabili
  • Backup cloud automatico

v4.2 (Q2 2025)

  • Machine Learning per bid prediction
  • Analytics dashboard avanzato
  • Plugin system
  • REST API per integrazioni

v5.0 (Q3 2025)

  • Architettura microservizi
  • Web version (Blazor)
  • Mobile app (MAUI)
  • Multi-piattaforma (Linux, macOS)

🙏 Ringraziamenti

  • Microsoft: Per .NET 8 e WPF
  • WebView2 Team: Per il fantastico browser embedded
  • EF Core Team: Per l'ORM potente e leggero
  • Bidoo: Per la piattaforma aste (non ufficialmente affiliati)

Legenda Emoji:

  • 🎉 Maggiori cambiamenti
  • Nuove funzionalità
  • 🔧 Miglioramenti
  • 🐛 Bug fix
  • 🔒 Sicurezza
  • 📝 Documentazione
  • 🗂️ Struttura
  • 📊 Metriche
  • ⚠️ Breaking changes
  • 🔄 Migrazioni
  • 🎯 Roadmap
  • 🙏 Ringraziamenti

v4.1 - UI Modernizzata (2024-01-XX)

🎨 Miglioramenti UI

  • Header semplificato: Info utente spostate in basso a sinistra
  • Pannello utente elegante con:
    • Username + ID utente
    • Email
    • Design card moderno con bordi arrotondati
    • Visibilità automatica (appare solo quando loggato)
  • Header compatto con statistiche chiave:
    • Puntate residue (verde #00D800)
    • Credito Shop (verde #00D800)
    • Aste vinte (giallo #FFB700)
  • Layout pulito stile moderno con separatori verticali

⚙️ Performance

  • Aggiornamento ogni 5 minuti (era 1 minuto)
    • Timer HTML principale: 5 minuti
    • Timer API fallback: 10 minuti
    • Ridotto carico rete del 80%
  • Pannello utente nascosto di default (meno distrazione)

📊 Posizionamento Info

┌─────────────────────────────────────────────┐
│ Puntate: 199 | Credito: EUR 15.00 | Aste: 0│ [Pulsanti]
├─────────────────────────────────────────────┤
│                                             │
│           GRIGLIA ASTE + LOG                │
│                                             │
├─────────────────────────────────────────────┤
│        IMPOSTAZIONI | UTENTI | LOG          │
│                                             │
└─────────────────────────────────────────────┘
  ┌────────────────────┐
  │ sirbietole23       │  ← Pannello utente
  │ (ID: 6707664)      │     in basso a sx
  │ email@email.com    │
  └────────────────────┘

v4.0 - Sistema di Timing Avanzato

Nuovo Sistema di Timing

  • Sostituito "Timer Click (secondi)" con "Anticipo (ms)"
  • Precisione al millisecondo invece dei secondi
  • Polling adattivo 10-1000ms basato su timer rimanente
  • Cooldown 800ms tra puntate consecutive
  • Rilevamento puntate recenti altri utenti (500ms)
  • Checkbox opzionale "Verifica stato asta prima di puntare"

🐛 Bug Fix

  • Fix persistenza valori modificati per singola asta
  • Fix visualizzazione username e puntate rimanenti
  • Conferma richiesta prima di cancellare asta (pulsante + tasto Canc)
  • Ottimizzazione logging per miglior performance
  • Fix stato pulsanti globali all'avvio
  • Fix tasto Canc: Ora elimina correttamente l'asta selezionata
    • Cambiato da KeyDown a PreviewKeyDown (priorità più alta)
    • Migliorata gestione focus keyboard sul DataGrid
    • Aggiunto messaggio di conferma migliorato
    • Aggiunto logging dettagliato per debug
    • Fix messaggio duplicato: Rimosso secondo messaggio di conferma (ora ne appare solo uno)
  • Fix avvio singola asta: Ora il pulsante "Avvia" sulla griglia funziona senza "Avvia Tutti"
    • Auto-start del monitoraggio quando si avvia la prima asta
    • Auto-stop del monitoraggio quando si ferma l'ultima asta
    • Logging dettagliato con [AUTO-START] e [AUTO-STOP]
    • Comportamento più intuitivo e flessibile
  • Fix persistenza impostazioni predefinite: Le impostazioni ora vengono applicate e persistono correttamente
    • Nuove aste usano valori dalle impostazioni salvate invece di hardcoded
    • Impostazioni predefinite vengono caricate all'avvio
    • Logging dettagliato quando si salvano/applicano defaults
    • File settings.json in %LocalAppData%\AutoBidder
  • Fix puntata se già vincitore: Sistema ora evita di puntare quando l'utente è già il vincitore corrente
    • Controllo IsMyBid in ShouldBid() come prima condizione
    • Logging chiaro: [STRATEGIA] SKIP: Sono già il vincitore corrente
    • Elimina errori "Asta chiusa" quando già vincitore
    • Risparmia puntate e chiamate API inutili
    • Punta solo quando serve riprendersi l'asta
  • Fix campo URL browser: URL sempre visibile e campo non editabile
    • Campo URL ora IsReadOnly="True" (non modificabile)
    • URL si aggiorna automaticamente ad ogni navigazione
    • Rimosso pulsante "Vai" non funzionale
    • Cursore freccia + tooltip esplicativo
    • UX più chiara e coerente
  • Navigazione con frecce direzionali: Naviga tra le aste con i tasti Su e Giù
    • Comportamento nativo WPF della DataGrid
    • Aggiornamento automatico pannello dettagli asta
    • Scroll automatico per seguire la selezione
    • Navigazione rapida senza usare il mouse
  • Riordinamento manuale aste: Pulsanti per cambiare l'ordine delle aste nella lista
    • Pulsante "↑ Sposta Su" per spostare verso l'alto
    • Pulsante "↓ Sposta Giù" per spostare verso il basso
    • Ordine salvato automaticamente su disco
    • Gestione intelligente casi limite (cima/fondo)
    • Logging dettagliato: [MOVE UP] / [MOVE DOWN]
    • Permette di organizzare le aste per priorità o categoria
  • Navigazione con frecce direzionali: Naviga tra le aste con i tasti Su e Giù
    • Gestione esplicita in PreviewKeyDown con e.Handled = true
    • Fix conflitto con GridSplitter (non modifica più altezza pannelli)
    • Aggiornamento automatico pannello dettagli asta
    • Scroll automatico per seguire la selezione
    • Navigazione rapida senza usare il mouse
  • Riordinamento manuale aste: Pulsanti per cambiare l'ordine delle aste nella lista
    • Pulsanti "Sposta Su" e "Sposta Giù" (senza emoji per migliore compatibilità)
    • Ordine salvato automaticamente su disco
    • Gestione intelligente casi limite (cima/fondo)
    • Logging dettagliato: [MOVE UP] / [MOVE DOWN]
    • Permette di organizzare le aste per priorità o categoria
  • Validazione robusta campi numerici: Impedisce inserimento caratteri non validi
    • Solo numeri accettati in tutti i campi numerici dell'applicazione
    • Campi interi: Anticipo (ms), Max Clicks, limiti log
    • Campi decimali: Min/Max EUR con supporto sia punto che virgola
    • Campo vuoto → ripristinato automaticamente a 0 (interi) o 0.00 (decimali)
    • Blocco paste di testo non valido
    • Normalizzazione automatica formato decimali (virgola → punto, 2 decimali)
    • Nessun errore di parsing possibile
    • 13 campi validati in tutta l'applicazione
    • Helper riusabile: Utilities\NumericTextBoxHelper.cs
    • Nota: Cancellare completamente un campo lo imposta a zero (modo rapido per resettare)