Update status to match UI

This commit is contained in:
2025-08-14 18:08:31 +07:00
parent e4049045c3
commit 6a2e4e81b1
18 changed files with 111 additions and 62 deletions

View File

@@ -131,7 +131,7 @@ public class AgentGrain : Grain, IAgentGrain, IRemindable
Losses = totalLosses,
TotalROI = totalROI,
Runtime = runtime,
ActiveStrategiesCount = bots.Count(b => b.Status == BotStatus.Up),
ActiveStrategiesCount = bots.Count(b => b.Status == BotStatus.Running),
TotalVolume = totalVolume,
};

View File

@@ -82,7 +82,7 @@ public class LiveBotRegistryGrain : Grain, ILiveBotRegistryGrain
// O(1) FIX: Decrement the counters based on the removed entry's status
_state.State.TotalBotsCount--;
if (entryToRemove.Status == BotStatus.Up)
if (entryToRemove.Status == BotStatus.Running)
{
_state.State.ActiveBotsCount--;
}
@@ -140,11 +140,11 @@ public class LiveBotRegistryGrain : Grain, ILiveBotRegistryGrain
}
// O(1) FIX: Conditionally adjust the counter
if (newStatus == BotStatus.Up && previousStatus != BotStatus.Up)
if (newStatus == BotStatus.Running && previousStatus != BotStatus.Running)
{
_state.State.ActiveBotsCount++;
}
else if (newStatus != BotStatus.Up && previousStatus == BotStatus.Up)
else if (newStatus != BotStatus.Running && previousStatus == BotStatus.Running)
{
_state.State.ActiveBotsCount--;
}
@@ -171,7 +171,7 @@ public class LiveBotRegistryGrain : Grain, ILiveBotRegistryGrain
if (!_state.State.Bots.TryGetValue(identifier, out var entry))
{
_logger.LogWarning("Bot {Identifier} is not registered in the registry, returning None", identifier);
return Task.FromResult(BotStatus.None);
return Task.FromResult(BotStatus.Saved);
}
return Task.FromResult(entry.Status);

View File

@@ -79,7 +79,7 @@ public class LiveTradingBotGrain : Grain, ILiveTradingBotGrain, IRemindable
var agentGrain = GrainFactory.GetGrain<IAgentGrain>(user.Id);
await agentGrain.RegisterBotAsync(_state.State.Identifier);
await SaveBotAsync(BotStatus.None);
await SaveBotAsync(BotStatus.Saved);
_logger.LogInformation("LiveTradingBotGrain {GrainId} created successfully", this.GetPrimaryKey());
}
@@ -94,7 +94,7 @@ public class LiveTradingBotGrain : Grain, ILiveTradingBotGrain, IRemindable
_logger.LogInformation("LiveTradingBotGrain {GrainId} activated. Registry status: {Status}",
botId, botStatus);
if (botStatus == BotStatus.Up && _tradingBot == null)
if (botStatus == BotStatus.Running && _tradingBot == null)
{
// Now, we can proceed with resuming the bot.
await ResumeBotInternalAsync();
@@ -124,8 +124,8 @@ public class LiveTradingBotGrain : Grain, ILiveTradingBotGrain, IRemindable
await RegisterReminder();
// Update both database and registry status
await SaveBotAsync(BotStatus.Up);
await UpdateBotRegistryStatus(BotStatus.Up);
await SaveBotAsync(BotStatus.Running);
await UpdateBotRegistryStatus(BotStatus.Running);
_logger.LogInformation("LiveTradingBotGrain {GrainId} resumed successfully", this.GetPrimaryKey());
}
@@ -133,7 +133,7 @@ public class LiveTradingBotGrain : Grain, ILiveTradingBotGrain, IRemindable
{
_logger.LogError(ex, "Failed to resume bot {GrainId}", this.GetPrimaryKey());
_tradingBot = null; // Clean up on failure
await UpdateBotRegistryStatus(BotStatus.Down);
await UpdateBotRegistryStatus(BotStatus.Stopped);
throw;
}
}
@@ -145,7 +145,7 @@ public class LiveTradingBotGrain : Grain, ILiveTradingBotGrain, IRemindable
var status = await botRegistry.GetBotStatus(botId);
// Check if already running
if (status == BotStatus.Up && _tradingBot != null)
if (status == BotStatus.Running && _tradingBot != null)
{
await RegisterReminder();
_logger.LogInformation("LiveTradingBotGrain {GrainId} is already running", this.GetPrimaryKey());
@@ -162,7 +162,7 @@ public class LiveTradingBotGrain : Grain, ILiveTradingBotGrain, IRemindable
{
_logger.LogError(ex, "Failed to start LiveTradingBotGrain {GrainId}", this.GetPrimaryKey());
// Ensure registry status is correct on failure
await UpdateBotRegistryStatus(BotStatus.Down);
await UpdateBotRegistryStatus(BotStatus.Stopped);
throw;
}
}
@@ -197,7 +197,7 @@ public class LiveTradingBotGrain : Grain, ILiveTradingBotGrain, IRemindable
// The check is now against the registry status
var botRegistry = GrainFactory.GetGrain<ILiveBotRegistryGrain>(0);
var botStatus = await botRegistry.GetBotStatus(this.GetPrimaryKey());
if (botStatus == BotStatus.Down)
if (botStatus == BotStatus.Stopped)
{
_logger.LogInformation("Bot {GrainId} is already stopped", this.GetPrimaryKey());
return;
@@ -211,10 +211,10 @@ public class LiveTradingBotGrain : Grain, ILiveTradingBotGrain, IRemindable
// Sync state from the volatile TradingBotBase before destroying it
SyncStateFromBase();
await _state.WriteStateAsync();
await SaveBotAsync(BotStatus.Down);
await SaveBotAsync(BotStatus.Stopped);
_tradingBot = null;
await UpdateBotRegistryStatus(BotStatus.Down);
await UpdateBotRegistryStatus(BotStatus.Stopped);
_logger.LogInformation("LiveTradingBotGrain {GrainId} stopped successfully", this.GetPrimaryKey());
}
catch (Exception ex)
@@ -297,7 +297,7 @@ public class LiveTradingBotGrain : Grain, ILiveTradingBotGrain, IRemindable
await _state.WriteStateAsync();
// Save bot statistics to database
await SaveBotAsync(BotStatus.Up);
await SaveBotAsync(BotStatus.Running);
}
catch (ObjectDisposedException)
{

View File

@@ -52,12 +52,12 @@ namespace Managing.Application.ManageBot
{
var grain = _grainFactory.GetGrain<ILiveTradingBotGrain>(identifier);
await grain.StopAsync();
return BotStatus.Down;
return BotStatus.Stopped;
}
catch (Exception e)
{
_tradingBotLogger.LogError(e, "Error stopping bot {Identifier}", identifier);
return BotStatus.Down;
return BotStatus.Stopped;
}
}
@@ -97,13 +97,13 @@ namespace Managing.Application.ManageBot
var previousStatus = await registryGrain.GetBotStatus(identifier);
// If bot is already up, return the status directly
if (previousStatus == BotStatus.Up)
if (previousStatus == BotStatus.Running)
{
return BotStatus.Up;
return BotStatus.Running;
}
var botGrain = _grainFactory.GetGrain<ILiveTradingBotGrain>(identifier);
if (previousStatus == BotStatus.None)
if (previousStatus == BotStatus.Saved)
{
// First time startup
await botGrain.StartAsync();
@@ -134,12 +134,12 @@ namespace Managing.Application.ManageBot
await _messengerService.SendTradeMessage(restartMessage, false, account.User);
}
return BotStatus.Up;
return BotStatus.Running;
}
catch (Exception e)
{
_tradingBotLogger.LogError(e, "Error restarting bot {Identifier}", identifier);
return BotStatus.Down;
return BotStatus.Stopped;
}
}
@@ -190,7 +190,7 @@ namespace Managing.Application.ManageBot
public async Task<IEnumerable<string>> GetActiveBotsNamesAsync()
{
var bots = await _botRepository.GetBotsByStatusAsync(BotStatus.Up);
var bots = await _botRepository.GetBotsByStatusAsync(BotStatus.Running);
return bots.Select(b => b.Name);
}

View File

@@ -24,7 +24,7 @@ namespace Managing.Application.ManageBot
CancellationToken cancellationToken)
{
var result = new List<AgentStatusResponse>();
var allActiveBots = await _botService.GetBotsByStatusAsync(BotStatus.Up);
var allActiveBots = await _botService.GetBotsByStatusAsync(BotStatus.Running);
// Group bots by user and determine status
var agentGroups = allActiveBots
@@ -38,7 +38,7 @@ namespace Managing.Application.ManageBot
var bots = agentGroup.ToList();
// Determine agent status: Online if at least one strategy is running, Offline otherwise
var agentStatus = bots.Any(bot => bot.Status == BotStatus.Up)
var agentStatus = bots.Any(bot => bot.Status == BotStatus.Running)
? AgentStatus.Online
: AgentStatus.Offline;

View File

@@ -71,7 +71,7 @@ namespace Managing.Application.ManageBot
throw new Exception($"Failed to start bot: {ex.Message}, {ex.StackTrace}");
}
return request.CreateOnly ? BotStatus.None : BotStatus.Up;
return request.CreateOnly ? BotStatus.Saved : BotStatus.Running;
}
}
}

View File

@@ -25,7 +25,7 @@ namespace Managing.Application.ManageBot
var userBots = await _botService.GetBotsByUser(request.User.Id);
// Filter only active bots (status Up)
var activeBots = userBots.Where(bot => bot.Status == BotStatus.Up).ToList();
var activeBots = userBots.Where(bot => bot.Status == BotStatus.Running).ToList();
if (!activeBots.Any())
{

View File

@@ -46,7 +46,7 @@ public class BalanceTrackingWorker : BaseWorker<BalanceTrackingWorker>
_logger.LogInformation("Starting balance tracking...");
// Get all active bots
var bots = await _mediator.Send(new GetBotsByStatusCommand(BotStatus.Up));
var bots = await _mediator.Send(new GetBotsByStatusCommand(BotStatus.Running));
var botCount = bots.Count();
if (botCount == 0)