From f24938114de28910f2e1ea02e4962a2c0fd0001e Mon Sep 17 00:00:00 2001 From: cryptooda Date: Sat, 18 Oct 2025 14:02:08 +0700 Subject: [PATCH] Fix position count --- .../Grains/PlatformSummaryGrain.cs | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/Managing.Application/Grains/PlatformSummaryGrain.cs b/src/Managing.Application/Grains/PlatformSummaryGrain.cs index 00f9072e..2ea1849f 100644 --- a/src/Managing.Application/Grains/PlatformSummaryGrain.cs +++ b/src/Managing.Application/Grains/PlatformSummaryGrain.cs @@ -132,7 +132,8 @@ public class PlatformSummaryGrain : Grain, IPlatformSummaryGrain, IRemindable ? _state.State.DailySnapshots.OrderByDescending(s => s.Date).First().TotalVolume : 0m; - _logger.LogInformation("Calculating cumulative volume from last snapshot date: {LastSnapshotDate}, Base volume: {CumulativeVolume}", + _logger.LogInformation( + "Calculating cumulative volume from last snapshot date: {LastSnapshotDate}, Base volume: {CumulativeVolume}", lastSnapshotDate, cumulativeVolume); // Calculate all metrics from positions in a single loop @@ -159,7 +160,8 @@ public class PlatformSummaryGrain : Grain, IPlatformSummaryGrain, IRemindable if (position.Date.Date > lastSnapshotDate) { newVolume += positionVolume; - _logger.LogDebug("Position {PositionId} created after last snapshot ({PositionDate} > {LastSnapshotDate}), adding volume: {Volume}", + _logger.LogDebug( + "Position {PositionId} created after last snapshot ({PositionDate} > {LastSnapshotDate}), adding volume: {Volume}", position.Identifier, position.Date.Date, lastSnapshotDate, positionVolume); } @@ -172,6 +174,7 @@ public class PlatformSummaryGrain : Grain, IPlatformSummaryGrain, IRemindable { _state.State.VolumeByAsset[ticker] = 0; } + _state.State.VolumeByAsset[ticker] += positionVolume; // Position count breakdown by asset - update state directly @@ -179,6 +182,7 @@ public class PlatformSummaryGrain : Grain, IPlatformSummaryGrain, IRemindable { _state.State.PositionCountByAsset[ticker] = 0; } + _state.State.PositionCountByAsset[ticker]++; // Calculate fees and PnL for all positions @@ -205,14 +209,15 @@ public class PlatformSummaryGrain : Grain, IPlatformSummaryGrain, IRemindable // CUMULATIVE volume: baseline + new volume since last snapshot var updatedCumulativeVolume = cumulativeVolume + newVolume; - + _logger.LogInformation("Volume calculation: Base={BaseVolume}, New={NewVolume}, Total={TotalVolume}", cumulativeVolume, newVolume, updatedCumulativeVolume); // Ensure volume never decreases if (updatedCumulativeVolume < _state.State.TotalPlatformVolume) { - _logger.LogWarning("Calculated cumulative volume ({Calculated}) is less than current volume ({Current}). Keeping current value.", + _logger.LogWarning( + "Calculated cumulative volume ({Calculated}) is less than current volume ({Current}). Keeping current value.", updatedCumulativeVolume, _state.State.TotalPlatformVolume); updatedCumulativeVolume = _state.State.TotalPlatformVolume; } @@ -235,7 +240,8 @@ public class PlatformSummaryGrain : Grain, IPlatformSummaryGrain, IRemindable await RefreshAgentCountAsync(); await _state.WriteStateAsync(); - _logger.LogInformation("Platform summary data refreshed successfully - Cumulative volume: {Volume}", updatedCumulativeVolume); + _logger.LogInformation("Platform summary data refreshed successfully - Cumulative volume: {Volume}", + updatedCumulativeVolume); } catch (Exception ex) { @@ -449,7 +455,9 @@ public class PlatformSummaryGrain : Grain, IPlatformSummaryGrain, IRemindable // Calculate and add missing snapshots foreach (var missingDate in missingDates) { - var snapshot = await CalculateDailySnapshotFromPositionsAsync(positions.ToList(), missingDate); + var snapshot = + await CalculateDailySnapshotFromPositionsAsync(positions.Where(p => p.IsValidForMetrics()).ToList(), + missingDate); _state.State.DailySnapshots.Add(snapshot); _logger.LogInformation(