Enhance BacktestComputeWorker to include duration in completion messages for successful and failed backtests. This change improves user feedback by providing detailed timing information alongside the results of the backtests.

This commit is contained in:
2025-12-28 22:20:20 +07:00
parent e0fb76872e
commit 493a2be368

View File

@@ -590,10 +590,19 @@ public class BacktestComputeWorker : BackgroundService
bundleRequest.Status == BundleBacktestRequestStatus.Completed && bundleRequest.Status == BundleBacktestRequestStatus.Completed &&
!string.IsNullOrEmpty(user.TelegramChannel)) !string.IsNullOrEmpty(user.TelegramChannel))
{ {
var completedAt = bundleRequest.CompletedAt ?? DateTime.UtcNow;
var duration = completedAt - bundleRequest.CreatedAt;
var durationText = duration.TotalHours >= 1
? $"{duration.Hours}h {duration.Minutes}m {duration.Seconds}s"
: duration.TotalMinutes >= 1
? $"{duration.Minutes}m {duration.Seconds}s"
: $"{duration.Seconds}s";
var message = $"✅ Bundle backtest '{bundleRequest.Name}' (ID: {bundleRequest.RequestId}) completed successfully. " + var message = $"✅ Bundle backtest '{bundleRequest.Name}' (ID: {bundleRequest.RequestId}) completed successfully. " +
$"Completed: {completedJobs}/{totalJobs} backtests" + $"Completed: {completedJobs}/{totalJobs} backtests" +
(failedJobs > 0 ? $", Failed: {failedJobs}" : "") + (failedJobs > 0 ? $", Failed: {failedJobs}" : "") +
$". Results: {completedJobResults.Count} backtest(s) generated."; $". Results: {completedJobResults.Count} backtest(s) generated. " +
$"Duration: {durationText}";
await webhookService.SendMessage(message, user.TelegramChannel); await webhookService.SendMessage(message, user.TelegramChannel);
} }
@@ -601,8 +610,17 @@ public class BacktestComputeWorker : BackgroundService
bundleRequest.Status == BundleBacktestRequestStatus.Failed && bundleRequest.Status == BundleBacktestRequestStatus.Failed &&
!string.IsNullOrEmpty(user.TelegramChannel)) !string.IsNullOrEmpty(user.TelegramChannel))
{ {
var completedAt = bundleRequest.CompletedAt ?? DateTime.UtcNow;
var duration = completedAt - bundleRequest.CreatedAt;
var durationText = duration.TotalHours >= 1
? $"{duration.Hours}h {duration.Minutes}m {duration.Seconds}s"
: duration.TotalMinutes >= 1
? $"{duration.Minutes}m {duration.Seconds}s"
: $"{duration.Seconds}s";
var message = $"❌ Bundle backtest '{bundleRequest.Name}' (ID: {bundleRequest.RequestId}) failed. " + var message = $"❌ Bundle backtest '{bundleRequest.Name}' (ID: {bundleRequest.RequestId}) failed. " +
$"All {totalJobs} backtests failed. Error: {bundleRequest.ErrorMessage}"; $"All {totalJobs} backtests failed. Error: {bundleRequest.ErrorMessage}. " +
$"Duration: {durationText}";
await webhookService.SendMessage(message, user.TelegramChannel); await webhookService.SendMessage(message, user.TelegramChannel);
} }