@model StoryIntelligenceProgressViewModel @{ ViewData["Title"] = "Review characters"; }

Phase 3

Review Story Intelligence

Stage 2 of 4

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")
} else {
@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
}
Back to scenes
}
@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
"); }