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

Phase 3

Review Story Intelligence

Stage 5 of 5

Review Relationships

Approve the character relationships PlotDirector should create or link from your imported scenes. Nothing is created unless you approve it.

@if (TempData["OnboardingStoryIntelligenceError"] is string error) {
@error
} @if (TempData["OnboardingStoryIntelligenceMessage"] is string message) {
@message
}
@if (Model.RelationshipReview.Candidates.Count == 0) {
No relationship decisions are waiting.

Relationships are already up to date, or there were no relationship suggestions ready to import from the stored scene analysis.

@FutureStage("Review Knowledge") @FutureStage("Review Continuity") @FutureStage("Timeline Events")
Back to assets
} else {
@for (var i = 0; i < Model.RelationshipReview.Candidates.Count; i++) { var candidate = Model.RelationshipReview.Candidates[i];
@candidate.CharacterAName @candidate.RelationshipType / @candidate.CharacterBName - @candidate.AppearsInScenes.ToString("N0") scene@(candidate.AppearsInScenes == 1 ? string.Empty : "s") @candidate.Confidence
Character A
@candidate.CharacterAName
Character B
@candidate.CharacterBName
First seen
@Display(candidate.FirstAppearance)
Last seen
@Display(candidate.LastAppearance)
Existing match
@(candidate.ExistingRelationshipLabel ?? "None")
@if (!string.IsNullOrWhiteSpace(candidate.ExampleScene)) {
Example scene

@candidate.ExampleScene

} @if (!string.IsNullOrWhiteSpace(candidate.ExampleContext)) {
Supporting context

@candidate.ExampleContext

} @if (candidate.IsExistingMatch) {
Possible existing relationship

@candidate.CharacterAName and @candidate.CharacterBName may already have a relationship in PlotDirector. Choose whether to link them or create a separate relationship.

}
Decision
Story Intelligence observation

@candidate.RelationshipType

@if (!string.IsNullOrWhiteSpace(candidate.ExampleContext)) { Evidence

@candidate.ExampleContext

}
}
Back to assets
}
@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
"); }