Fix bot management for delete and stop

This commit is contained in:
2025-05-10 13:52:09 +07:00
parent ba2fbc976a
commit b7d5a0b6a7
10 changed files with 41 additions and 28 deletions

View File

@@ -10,13 +10,29 @@ jobs:
steps: steps:
- name: Check out repository - name: Check out repository
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Build and test your app (customize as needed)
run: | - name: Set up Docker Buildx
# Add your build and test commands here uses: docker/setup-buildx-action@v3
# For example:
# npm install - name: Login to Container Registry
# npm run build uses: docker/login-action@v3
# npm run test with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Preset Image Name
run: echo "IMAGE_URL=$(echo ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:$(echo ${{ github.sha }} | cut -c1-7) | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
- name: Build and push Docker Image
uses: docker/build-push-action@v5
with:
context: ./src/Managing.WebApp
file: ./src/Managing.WebApp/Dockerfile-web-ui-dev
push: true
tags: ${{ env.IMAGE_URL }}
# - name: Create deploy.tar # - name: Create deploy.tar
# uses: a7ul/tar-action@v1.1.0 # uses: a7ul/tar-action@v1.1.0
# with: # with:

View File

@@ -47,7 +47,7 @@
<Content Update="appsettings.Sandbox.json"> <Content Update="appsettings.Sandbox.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
<Content Update="appsettings.ProdLocal.json"> <Content Update="appsettings.SandboxLocal.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
<Content Update="appsettings.Production.json"> <Content Update="appsettings.Production.json">

View File

@@ -25,6 +25,5 @@ public interface IBotService
Task<string> StopBot(string botName); Task<string> StopBot(string botName);
Task<bool> DeleteBot(string botName); Task<bool> DeleteBot(string botName);
Task<string> RestartBot(string botName); Task<string> RestartBot(string botName);
void DeleteBotBackup(string backupBotName);
void ToggleIsForWatchingOnly(string botName); void ToggleIsForWatchingOnly(string botName);
} }

View File

@@ -126,8 +126,6 @@ public class TradingBot : Bot, ITradingBot
else else
{ {
Account = account; Account = account;
// Set the User property from the account
User = account.User;
} }
} }

View File

@@ -232,11 +232,6 @@ namespace Managing.Application.ManageBot
return Task.FromResult(BotStatus.Down.ToString()); return Task.FromResult(BotStatus.Down.ToString());
} }
public void DeleteBotBackup(string identifier)
{
_botRepository.DeleteBotBackup(identifier);
}
public void ToggleIsForWatchingOnly(string identifier) public void ToggleIsForWatchingOnly(string identifier)
{ {
if (_botTasks.TryGetValue(identifier, out var botTaskWrapper) && if (_botTasks.TryGetValue(identifier, out var botTaskWrapper) &&

View File

@@ -57,12 +57,14 @@ public class LoadBackupBotCommandHandler : IRequestHandler<LoadBackupBotCommand,
while (attempts < maxAttempts) while (attempts < maxAttempts)
{ {
activeBot = _botService.GetActiveBots().FirstOrDefault(b => b.Identifier == backupBot.Identifier); activeBot = _botService.GetActiveBots()
.FirstOrDefault(b => b.Identifier == backupBot.Identifier);
if (activeBot != null) if (activeBot != null)
{ {
result[activeBot.Identifier] = BotStatus.Up; result[activeBot.Identifier] = BotStatus.Up;
anyBackupStarted = true; anyBackupStarted = true;
_logger.LogInformation("Backup bot {Identifier} started successfully.", backupBot.Identifier); _logger.LogInformation("Backup bot {Identifier} started successfully.",
backupBot.Identifier);
break; break;
} }
@@ -93,7 +95,6 @@ public class LoadBackupBotCommandHandler : IRequestHandler<LoadBackupBotCommand,
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, "Error loading bot {Identifier}. Deleting its backup.", backupBot.Identifier); _logger.LogError(ex, "Error loading bot {Identifier}. Deleting its backup.", backupBot.Identifier);
_botService.DeleteBotBackup(backupBot.Identifier);
result[backupBot.Identifier] = BotStatus.Down; result[backupBot.Identifier] = BotStatus.Down;
} }
} }

View File

@@ -78,12 +78,14 @@ namespace Managing.Domain.Bots
public void Stop() public void Stop()
{ {
Status = BotStatus.Down; Status = BotStatus.Down;
SaveBackup();
CancellationToken.Cancel(); CancellationToken.Cancel();
} }
public void Restart() public void Restart()
{ {
Status = BotStatus.Up; Status = BotStatus.Up;
SaveBackup();
StartupTime = DateTime.UtcNow; // Update the startup time when the bot is restarted StartupTime = DateTime.UtcNow; // Update the startup time when the bot is restarted
} }

View File

@@ -34,9 +34,9 @@ public class BotRepository : IBotRepository
_botRepository.Update(dto); _botRepository.Update(dto);
} }
public async Task DeleteBotBackup(string botName) public async Task DeleteBotBackup(string identifier)
{ {
var backup = await _botRepository.FindOneAsync(b => b.Name == botName); var backup = await _botRepository.FindOneAsync(b => b.Identifier == identifier);
await _botRepository.DeleteOneAsync(b => b.Id == backup.Id); await _botRepository.DeleteOneAsync(b => b.Id == backup.Id);
} }
} }

View File

@@ -24,6 +24,8 @@ const TradesModal: React.FC<TradesModalProps> = ({
const [closingPosition, setClosingPosition] = useState<string | null>(null) const [closingPosition, setClosingPosition] = useState<string | null>(null)
useEffect(() => { useEffect(() => {
console.log('strategyName', strategyName)
console.log('agentName', agentName)
if (showModal && strategyName && agentName) { if (showModal && strategyName && agentName) {
fetchStrategyData() fetchStrategyData()
} }