@model StoryIntelligenceSavedRunsViewModel @{ ViewData["Title"] = "Saved Story Intelligence Runs"; }

Admin utility

Saved Story Intelligence Runs

Audit records saved from the admin chapter-to-scene dry-run pipeline.

@if (TempData["AdminMessage"] is string message) {
@message
}
Run pipeline test Diagnostics
@if (Model.Runs.Count == 0) {

No Story Intelligence runs have been saved yet.

} else {
@foreach (var run in Model.Runs) { }
Run ID Created Project / Book Status Scenes Tokens Duration Validation
@run.StoryIntelligenceRunID.ToString("N0") @run.CreatedUtc.ToString("yyyy-MM-dd HH:mm") UTC
@DisplayName(run.ProjectTitle, run.ProjectID, "Project")
@DisplayName(run.BookTitle, run.BookID, "Book")
@run.Status @run.SceneCount.ToString("N0") @Display(run.TotalTokens) @DisplayDuration(run.TotalDurationMs) @run.ValidationErrorsCount.ToString("N0") error(s), @run.ValidationWarningsCount.ToString("N0") warning(s) Open
}
@functions { private static string Display(object? value) => value switch { null => "None", string text when string.IsNullOrWhiteSpace(text) => "None", int number => number.ToString("N0"), _ => value.ToString() ?? "None" }; private static string DisplayDuration(long? milliseconds) => milliseconds.HasValue ? TimeSpan.FromMilliseconds(milliseconds.Value).TotalSeconds < 1 ? $"{milliseconds.Value:N0} ms" : $"{TimeSpan.FromMilliseconds(milliseconds.Value).TotalSeconds:0.00} sec" : "None"; private static string DisplayName(string? title, int? id, string label) => !string.IsNullOrWhiteSpace(title) ? title : id.HasValue ? $"{label} {id.Value:N0}" : "None"; }