@model StoryIntelligenceProgressViewModel @{ ViewData["Title"] = "Review characters"; } Review Story Intelligence Review Characters Approve the characters PlotDirector should create or link from your imported scenes. You stay in control of every character record. @if (TempData["OnboardingStoryIntelligenceError"] is string error) { @error } @if (TempData["OnboardingStoryIntelligenceMessage"] is string message) { @message } @if (Model.CharacterReview.Candidates.Count == 0) { No character decisions are waiting. Characters are already up to date, or there were no character suggestions ready to import. @FutureStage("Review Locations") @FutureStage("Review Assets") @FutureStage("Review Relationships") @FutureStage("Review Knowledge") Back to scenes Continue } else { Create all Link existing matches Ignore all Expand all Collapse all @for (var i = 0; i < Model.CharacterReview.Candidates.Count; i++) { var candidate = Model.CharacterReview.Candidates[i]; @candidate.CharacterName @candidate.AppearsInScenes.ToString("N0") scene@(candidate.AppearsInScenes == 1 ? string.Empty : "s") @candidate.Confidence First appearance@Display(candidate.ExampleFirstAppearance) Possible aliases@(candidate.PossibleAliases.Count == 0 ? "None detected" : string.Join(", ", candidate.PossibleAliases)) Existing match@(candidate.ExistingCharacterName ?? "None") @if (candidate.IsExistingMatch) { Possible existing character @candidate.CharacterName may already be @candidate.ExistingCharacterName. Choose whether to link them or create a separate character. } Decision Create new character Link existing character Alias of another character Ignore Import name Alias target Choose character... @foreach (var target in Model.CharacterReview.Candidates.Where(target => !string.Equals(target.Key, candidate.Key, StringComparison.OrdinalIgnoreCase))) { @target.CharacterName@(target.IsExistingMatch ? $" -> {target.ExistingCharacterName}" : string.Empty) } } Back to scenes Create characters } @section Scripts { } @functions { private static string Display(string? value) => string.IsNullOrWhiteSpace(value) ? "Not detected" : value; private static Microsoft.AspNetCore.Html.IHtmlContent FutureStage(string label) => new Microsoft.AspNetCore.Html.HtmlString($"{System.Net.WebUtility.HtmlEncode(label)}Coming Soon"); }
Review Story Intelligence
Approve the characters PlotDirector should create or link from your imported scenes. You stay in control of every character record.
Characters are already up to date, or there were no character suggestions ready to import.
@candidate.CharacterName may already be @candidate.ExistingCharacterName. Choose whether to link them or create a separate character.