Aggiunta calcolo valore prodotto e miglioramenti UI
Implementato il calcolo del valore reale dei prodotti in asta, includendo il prezzo "Compra Subito", spese di spedizione e risparmio stimato. Aggiunta una nuova sezione "Info Prodotto" nella UI per visualizzare i dettagli estratti e i calcoli. - **AuctionMonitorControl.xaml**: Aggiunta sezione fissa per mostrare informazioni prodotto e calcolo valore. - **AuctionMonitorControl.xaml.cs**: Gestiti eventi per il caricamento e aggiornamento delle informazioni prodotto. - **MainWindow**: Integrati handler per il calcolo e refresh delle informazioni prodotto. - **AuctionInfo.cs**: Aggiunte proprietà per gestire prezzo "Compra Subito", spese di spedizione e limiti di vincita. - **ProductValueCalculator.cs**: Nuova utility per calcolare il valore del prodotto e parsare informazioni dall'HTML. - **AuctionViewModel.cs**: Binding per visualizzare risparmio, costo totale e convenienza nella UI. - **Documentazione**: Aggiornata con dettagli sull'algoritmo di calcolo e layout UI. Fix: - Risolto problema di encoding UTF-8 per emoji nella UI. - Migliorato parsing HTML per prezzi e limiti di vincita. TODO: - Testare parsing su più aste e gestire edge cases. - Implementare caricamento automatico delle informazioni.
This commit is contained in:
@@ -75,6 +75,40 @@ namespace AutoBidder.Models
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public bool IsAttackInProgress { get; set; } = false;
|
||||
|
||||
// === INFORMAZIONI PRODOTTO PER CALCOLO VALORE ===
|
||||
|
||||
/// <summary>
|
||||
/// Prezzo "Compra Subito" del prodotto (valore nominale)
|
||||
/// </summary>
|
||||
public double? BuyNowPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Spese di spedizione per questo prodotto
|
||||
/// </summary>
|
||||
public double? ShippingCost { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Indica se c'è un limite di vincita per questo prodotto (1 volta ogni X giorni)
|
||||
/// </summary>
|
||||
public bool HasWinLimit { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Descrizione del limite di vincita (es: "1 volta ogni 30 giorni")
|
||||
/// </summary>
|
||||
public string? WinLimitDescription { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Costo medio per puntata da utilizzare nei calcoli (default: 0.20€)
|
||||
/// </summary>
|
||||
public double BidCost { get; set; } = 0.20;
|
||||
|
||||
/// <summary>
|
||||
/// Ultimo valore calcolato del prodotto (costo reale considerando puntate)
|
||||
/// Null se non ancora calcolato
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public ProductValue? CalculatedValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Aggiunge una voce al log dell'asta con limite automatico di righe
|
||||
/// </summary>
|
||||
@@ -96,4 +130,70 @@ namespace AutoBidder.Models
|
||||
|
||||
public int PollingLatencyMs { get; set; } = 0; // Ultima latenza polling ms
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rappresenta il valore calcolato di un prodotto all'asta
|
||||
/// </summary>
|
||||
public class ProductValue
|
||||
{
|
||||
/// <summary>
|
||||
/// Prezzo attuale dell'asta in euro
|
||||
/// </summary>
|
||||
public double CurrentPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Numero totale di puntate effettuate sull'asta
|
||||
/// </summary>
|
||||
public int TotalBids { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Numero di puntate effettuate dall'utente
|
||||
/// </summary>
|
||||
public int MyBids { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Costo delle puntate dell'utente (MyBids × BidCost)
|
||||
/// </summary>
|
||||
public double MyBidsCost { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Costo totale per l'utente se vince (CurrentPrice + MyBidsCost + ShippingCost)
|
||||
/// </summary>
|
||||
public double TotalCostIfWin { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Prezzo "Compra Subito" del prodotto
|
||||
/// </summary>
|
||||
public double? BuyNowPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Spese di spedizione
|
||||
/// </summary>
|
||||
public double? ShippingCost { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Risparmio rispetto al prezzo "Compra Subito" (può essere negativo)
|
||||
/// </summary>
|
||||
public double? Savings { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Percentuale di risparmio rispetto al prezzo "Compra Subito"
|
||||
/// </summary>
|
||||
public double? SavingsPercentage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Indica se conviene continuare (risparmio positivo)
|
||||
/// </summary>
|
||||
public bool IsWorthIt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Timestamp del calcolo
|
||||
/// </summary>
|
||||
public DateTime CalculatedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Messaggio riassuntivo del valore
|
||||
/// </summary>
|
||||
public string Summary { get; set; } = "";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user