Story Intelligence
Review Centre
@(Model.CharacterGateSatisfied
? "Your manuscript analysis is complete. Choose any category to inspect or review."
: "Resolve Characters first. Once character identities are confirmed, the remaining Story Intelligence categories can be reviewed in any order.")
@if (TempData["OnboardingStoryIntelligenceError"] is string error)
{
@error
}
@if (TempData["OnboardingStoryIntelligenceMessage"] is string message)
{
@message
}
@* "Characters" "Review Characters" "StoryIntelligenceCharacters" "View Characters" new { projectId = Model.ProjectID } *@
@await ReviewCharacters()
@await ReviewModule(
"Assets",
Model.AssetNeedsAttentionCount,
Model.PipelineDashboard.AssetStageComplete,
!Model.CharacterGateSatisfied,
"Important objects and possessions found in the manuscript.",
"Review Assets",
"StoryIntelligenceAssets",
"View Assets",
"StoryAssets",
new { projectId = Model.ProjectID })
@await ReviewModule(
"Knowledge",
Model.KnowledgeNeedsAttentionCount,
Model.PipelineDashboard.KnowledgeStageComplete,
!Model.CharacterGateSatisfied,
"Facts, discoveries, beliefs, and suspicions found in the manuscript.",
"Review Knowledge",
"StoryIntelligenceKnowledge",
"View Knowledge",
"StoryBible",
new { projectId = Model.ProjectID })
Locations
@Model.LocationReview.TotalCandidateCount locations identified
@Model.LocationReview.SignificantCount significant ยท @Model.LocationReview.UncertainCount need review
Explore story settings. Review uncertain identities when your judgement is needed.
@if (Model.CharacterGateSatisfied) {
Explore Locations
@if (Model.PipelineDashboard.LocationStageComplete) { View Locations }
} else { Locked }
@await ReviewPlotSynthesis()
@await ReviewModule(
"Relationships",
Model.RelationshipNeedsAttentionCount,
Model.PipelineDashboard.RelationshipStageComplete,
!Model.CharacterGateSatisfied,
"Character relationships found in scene evidence.",
"Review Relationships",
"StoryIntelligenceRelationships",
"View Relationships",
"RelationshipMap",
new { projectId = Model.ProjectID, bookId = Model.BookID })
@await ReviewMetrics(!Model.CharacterGateSatisfied)
@if (Model.AnalysisIssueCount > 0)
{
@await ReviewModule(
"Analysis Issues",
Model.AnalysisIssueCount,
false,
false,
"Some chapters or scenes reported analysis issues.",
"Return to Book",
"StoryIntelligenceReviewCentre",
"Return to Book",
"Books",
new { id = Model.BookID })
}
@foreach (var chapter in Model.Chapters.OrderBy(chapter => chapter.ChapterNumber))
{
@chapter.Status
@((chapter.CompletedScenes ?? 0).ToString("N0"))
@((chapter.TotalDetectedScenes ?? 0).ToString("N0"))
@((chapter.FailedScenes ?? 0).ToString("N0"))
@(chapter.CurrentMessage ?? string.Empty)
@(chapter.ErrorMessage ?? string.Empty)
@(chapter.CurrentSceneDisplayTitle ?? string.Empty)
@(chapter.LatestSceneSummary ?? string.Empty)
}