Fix: Implement FixPlan part A9, A10, B

This commit is contained in:
Richard
2026-07-10 12:04:27 +02:00
parent 44f48284a2
commit 1787422243
28 changed files with 1025 additions and 79 deletions
@@ -64,10 +64,16 @@ public class PollingWorker : BackgroundService
await rateLimiter.WaitAsync(trader.Platform, stoppingToken);
var trades = await provider.GetTraderTradesAsync(trader.PlatformUserId, 100, stoppingToken);
// ── Filter: skip trades with empty PlatformTradeId ──
var validTrades = trades
.Where(t => !string.IsNullOrWhiteSpace(t.PlatformTradeId))
.ToList();
var updatedName = validTrades.FirstOrDefault(t => !string.IsNullOrEmpty(t.TransientDisplayName))?.TransientDisplayName;
if (!string.IsNullOrEmpty(updatedName) && !string.Equals(trader.DisplayName, updatedName, StringComparison.OrdinalIgnoreCase))
{
trader.DisplayName = updatedName;
await traderRepo.UpdateAsync(trader, stoppingToken);
}
if (validTrades.Count < trades.Count)
{
@@ -147,6 +153,11 @@ public class PollingWorker : BackgroundService
trader.LastPolledAt = DateTime.UtcNow;
await traderRepo.UpdateAsync(trader, stoppingToken);
}
catch (OperationCanceledException) when (stoppingToken.IsCancellationRequested)
{
_logger.LogInformation("Cancellation requested during polling, stopping batch.");
break;
}
catch (Exception ex)
{
_logger.LogError(ex, "Error polling trader {Trader} on {Platform}",