Peter Foster 426089fb3e Apply second code review fixes: robustness and correctness
- AiAssistantService: 90s HTTP timeout; RefineWithCorrections uses 29.99 example
  price and explicit "Never return 0" instruction; treat returned 0 as missing and
  keep original price instead
- EbayAuthService: shared static HttpClient for all auth/token calls; SemaphoreSlim
  double-checked locking on GetAppTokenAsync to prevent concurrent token fetches
- EbayPriceResearchService: 15s timeout; require ≥5 samples before suggesting;
  trim top/bottom 10% outliers; BEST_MATCH sort avoids spam/broken listing bias
- PhotoAnalysisView: spinner-show inside try (Issue 1); decimal→double casts use
  Math.Round to avoid 19.99→19.989... drift (Issue 6); Dispatcher.CheckAccess guard
  for off-thread callers (Issue 7); save toast always restarts instead of silently
  dropping rapid saves, eliminating any stuck-flag path (Issue 8)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 18:14:00 +01:00
Description
WPF desktop app for creating eBay UK listings with AI photo analysis
614 KiB
Languages
C# 100%