diff --git a/src/dotnet/QuantEngine.Web/Pages/Admin/Operations/Index.cshtml.cs b/src/dotnet/QuantEngine.Web/Pages/Admin/Operations/Index.cshtml.cs index eb0a5bbf..29317ed6 100644 --- a/src/dotnet/QuantEngine.Web/Pages/Admin/Operations/Index.cshtml.cs +++ b/src/dotnet/QuantEngine.Web/Pages/Admin/Operations/Index.cshtml.cs @@ -87,18 +87,26 @@ public class IndexModel : PageModel InactiveJobsCount = TotalJobsCount - ActiveJobsCount; var succeeded = monitoringApi.SucceededJobs(0, 10) - .Select(kv => new JobExecutionInfo( - kv.Value.Job?.Method.Name ?? kv.Key, - kv.Value.SucceededAt ?? DateTime.UtcNow, - kv.Value.SucceededAt, - true)); + .Select(kv => { + var succeededAt = kv.Value.SucceededAt ?? DateTime.UtcNow; + var durationMs = kv.Value.TotalDuration ?? 0; + var startedAt = succeededAt.AddMilliseconds(-durationMs); + return new JobExecutionInfo( + kv.Value.Job?.Method.Name ?? kv.Key, + startedAt, + succeededAt, + true); + }); var failed = monitoringApi.FailedJobs(0, 10) - .Select(kv => new JobExecutionInfo( - kv.Value.Job?.Method.Name ?? kv.Key, - kv.Value.FailedAt ?? DateTime.UtcNow, - kv.Value.FailedAt, - false)); + .Select(kv => { + var failedAt = kv.Value.FailedAt ?? DateTime.UtcNow; + return new JobExecutionInfo( + kv.Value.Job?.Method.Name ?? kv.Key, + failedAt, + failedAt, + false); + }); RecentExecutions = succeeded.Concat(failed) .OrderByDescending(e => e.StartedAt)