From 78f401b417a41f6c8ef571faed0dd26793e0ea78 Mon Sep 17 00:00:00 2001 From: Nick Beckley Date: Sat, 29 Aug 2026 10:27:47 +0000 Subject: [PATCH] Clean up Story Intelligence review module chrome --- PlotLine.Tests/Program.cs | 71 ++++++++++++++++++- PlotLine/Controllers/OnboardingController.cs | 30 ++++---- .../StoryIntelligenceAssetComplete.cshtml | 57 --------------- .../Onboarding/StoryIntelligenceAssets.cshtml | 15 +--- .../StoryIntelligenceCharacterComplete.cshtml | 57 --------------- .../StoryIntelligenceCharacters.cshtml | 13 +--- .../StoryIntelligenceKnowledge.cshtml | 13 +--- .../StoryIntelligenceKnowledgeComplete.cshtml | 47 ------------ .../StoryIntelligenceLocationComplete.cshtml | 53 -------------- .../StoryIntelligenceLocations.cshtml | 15 +--- .../StoryIntelligenceNarrative.cshtml | 6 +- .../StoryIntelligenceNarrativeComplete.cshtml | 30 -------- ...oryIntelligenceRelationshipComplete.cshtml | 51 ------------- .../StoryIntelligenceRelationships.cshtml | 14 +--- 14 files changed, 87 insertions(+), 385 deletions(-) delete mode 100644 PlotLine/Views/Onboarding/StoryIntelligenceAssetComplete.cshtml delete mode 100644 PlotLine/Views/Onboarding/StoryIntelligenceCharacterComplete.cshtml delete mode 100644 PlotLine/Views/Onboarding/StoryIntelligenceKnowledgeComplete.cshtml delete mode 100644 PlotLine/Views/Onboarding/StoryIntelligenceLocationComplete.cshtml delete mode 100644 PlotLine/Views/Onboarding/StoryIntelligenceNarrativeComplete.cshtml delete mode 100644 PlotLine/Views/Onboarding/StoryIntelligenceRelationshipComplete.cshtml diff --git a/PlotLine.Tests/Program.cs b/PlotLine.Tests/Program.cs index fc2adce..bc5f835 100644 --- a/PlotLine.Tests/Program.cs +++ b/PlotLine.Tests/Program.cs @@ -236,8 +236,10 @@ var tests = new (string Name, Action Test)[] ("Story Intelligence Review Centre uses independent tile grid", StoryIntelligenceReviewCentreUsesIndependentTileGrid), ("Story Intelligence Review Centre opens with character gate", StoryIntelligenceReviewCentreOpensWithCharacterGate), ("Story Intelligence review modules are independent after character gate", StoryIntelligenceReviewModulesAreIndependentAfterCharacterGate), + ("Story Intelligence review module pages omit wizard chrome", StoryIntelligenceReviewModulePagesOmitWizardChrome), ("Story Intelligence downstream review uses completed scene analysis", StoryIntelligenceDownstreamReviewUsesCompletedSceneAnalysis), ("Story Intelligence review posts do not use success interstitials", StoryIntelligenceReviewPostsDoNotUseSuccessInterstitials), + ("Story Intelligence legacy review completion routes redirect to centre", StoryIntelligenceLegacyReviewCompletionRoutesRedirectToCentre), ("Story Intelligence review forms share busy submit guard", StoryIntelligenceReviewFormsShareBusySubmitGuard), ("Story Intelligence heavy review modules offer bounded rendering", StoryIntelligenceHeavyReviewModulesOfferBoundedRendering), ("Story Intelligence Review Centre adds no AI calls", StoryIntelligenceReviewCentreAddsNoAiCalls), @@ -742,6 +744,49 @@ static void StoryIntelligenceReviewModulesAreIndependentAfterCharacterGate() Assert(locationsAction.Contains("RedirectToReviewCentreWithCharacterGate", StringComparison.Ordinal), "Direct dependent module URLs should return to Review Centre when the character gate is closed."); } +static void StoryIntelligenceReviewModulePagesOmitWizardChrome() +{ + var root = PlotLineRoot(); + var reviewViews = new[] + { + ("StoryIntelligenceCharacters.cshtml", "Review Characters"), + ("StoryIntelligenceLocations.cshtml", "Review Locations"), + ("StoryIntelligenceAssets.cshtml", "Review Assets"), + ("StoryIntelligenceRelationships.cshtml", "Review Relationships"), + ("StoryIntelligenceKnowledge.cshtml", "Review Knowledge"), + ("StoryIntelligenceNarrative.cshtml", "Review Plot Lines & Threads") + }; + var forbidden = new[] + { + "_StoryIntelligencePipelineHeader", + "_StoryIntelligencePipelineSummary", + "story-pipeline", + "story-future-stage", + "story-review-heading__phase", + "Phase 3", + "Review Story Intelligence", + "Next Stage", + "Previous Stage", + "Continue to Locations", + "Continue to Assets", + "Continue to Relationships", + "Continue to Knowledge" + }; + + foreach (var (viewName, title) in reviewViews) + { + var view = File.ReadAllText(Path.Combine(root, "Views/Onboarding", viewName)); + Assert(view.Contains("

Story Intelligence

", StringComparison.Ordinal), $"{viewName} should use a simple module header eyebrow."); + Assert(view.Contains("StoryIntelligenceReviewCentre", StringComparison.Ordinal), $"{viewName} should return to Review Centre."); + Assert(view.Contains($">{title}", StringComparison.Ordinal), $"{viewName} should keep its focused module title."); + Assert(!view.Contains("StoryIntelligenceComplete", StringComparison.Ordinal), $"{viewName} should not route to the old final wizard step."); + foreach (var marker in forbidden) + { + Assert(!view.Contains(marker, StringComparison.OrdinalIgnoreCase), $"{viewName} should not render obsolete wizard chrome: {marker}."); + } + } +} + static void StoryIntelligenceDownstreamReviewUsesCompletedSceneAnalysis() { var root = PlotLineRoot(); @@ -784,6 +829,29 @@ static void StoryIntelligenceReviewPostsDoNotUseSuccessInterstitials() Assert(!postBlock.Contains("StoryIntelligenceNarrativeComplete", StringComparison.Ordinal), "Narrative post should not target success interstitial."); } +static void StoryIntelligenceLegacyReviewCompletionRoutesRedirectToCentre() +{ + var root = PlotLineRoot(); + var controller = File.ReadAllText(Path.Combine(root, "Controllers/OnboardingController.cs")); + var completionActions = new[] + { + ("StoryIntelligenceCharacterComplete", "characters"), + ("StoryIntelligenceLocationComplete", "locations"), + ("StoryIntelligenceAssetComplete", "assets"), + ("StoryIntelligenceRelationshipComplete", "relationships"), + ("StoryIntelligenceKnowledgeComplete", "knowledge"), + ("StoryIntelligenceNarrativeComplete", "narrative") + }; + + foreach (var (action, route) in completionActions) + { + var block = ExtractBetween(controller, $"public IActionResult {action}", "}"); + Assert(controller.Contains($"[HttpGet(\"story-intelligence/{route}/complete\")]", StringComparison.Ordinal), $"{action} legacy route should still exist."); + Assert(block.Contains("RedirectToAction(nameof(StoryIntelligenceReviewCentre)", StringComparison.Ordinal), $"{action} should redirect to Review Centre."); + Assert(!block.Contains("View(", StringComparison.Ordinal), $"{action} should not render a success interstitial."); + } +} + static void StoryIntelligenceReviewFormsShareBusySubmitGuard() { var root = PlotLineRoot(); @@ -5105,7 +5173,6 @@ static void StoryIntelligenceNarrativeStageFollowsKnowledge() var pipeline = File.ReadAllText(Path.Combine(root, "Services/StoryIntelligencePipelineStateService.cs")); var onboarding = File.ReadAllText(Path.Combine(root, "Services/OnboardingStoryIntelligenceService.cs")); var controller = File.ReadAllText(Path.Combine(root, "Controllers/OnboardingController.cs")); - var knowledgeComplete = File.ReadAllText(Path.Combine(root, "Views/Onboarding/StoryIntelligenceKnowledgeComplete.cshtml")); var pipelineConstraint = File.ReadAllText(Path.Combine(root, "Sql/156_Phase25A_NarrativeReviewPipelineConstraint.sql")); var knowledgeImport = File.ReadAllText(Path.Combine(root, "Services/StoryIntelligenceKnowledgeImportService.cs")); @@ -5117,7 +5184,7 @@ static void StoryIntelligenceNarrativeStageFollowsKnowledge() Assert(knowledgeImport.Contains("hasUndecidedCandidates", StringComparison.Ordinal), "Knowledge review should be able to advance when prior decisions already imported every candidate."); Assert(onboarding.Contains("SceneAnalysisComplete(state)\n ? StoryIntelligenceResumeRoutes.ReviewCentre", StringComparison.Ordinal), "Resume logic should route completed analysis to Review Centre."); Assert(controller.Contains("StoryIntelligenceNarrative", StringComparison.Ordinal), "Onboarding controller should expose the narrative review stage."); - Assert(knowledgeComplete.Contains("Review Plot Lines & Threads", StringComparison.Ordinal), "Knowledge completion should lead to narrative review."); + Assert(controller.Contains("ImportStoryIntelligenceKnowledge", StringComparison.Ordinal) && controller.Contains("RedirectToAction(nameof(StoryIntelligenceReviewCentre)", StringComparison.Ordinal), "Knowledge completion should return to Review Centre instead of auto-advancing."); } static void WordCompanionReplaysLiveCurrentSceneToWritingPanes() diff --git a/PlotLine/Controllers/OnboardingController.cs b/PlotLine/Controllers/OnboardingController.cs index c0de400..694cbcd 100644 --- a/PlotLine/Controllers/OnboardingController.cs +++ b/PlotLine/Controllers/OnboardingController.cs @@ -408,10 +408,9 @@ public sealed class OnboardingController(IOnboardingService onboarding, IOnboard } [HttpGet("story-intelligence/characters/complete")] - public async Task StoryIntelligenceCharacterComplete(Guid batchId) + public IActionResult StoryIntelligenceCharacterComplete(Guid batchId) { - var model = await storyIntelligence.GetCharacterImportResultAsync(batchId); - return model is null ? NotFound() : View(model); + return RedirectToAction(nameof(StoryIntelligenceReviewCentre), new { batchId }); } [HttpPost("story-intelligence/locations")] @@ -431,10 +430,9 @@ public sealed class OnboardingController(IOnboardingService onboarding, IOnboard } [HttpGet("story-intelligence/locations/complete")] - public async Task StoryIntelligenceLocationComplete(Guid batchId) + public IActionResult StoryIntelligenceLocationComplete(Guid batchId) { - var model = await storyIntelligence.GetLocationImportResultAsync(batchId); - return model is null ? NotFound() : View(model); + return RedirectToAction(nameof(StoryIntelligenceReviewCentre), new { batchId }); } [HttpPost("story-intelligence/assets")] @@ -454,10 +452,9 @@ public sealed class OnboardingController(IOnboardingService onboarding, IOnboard } [HttpGet("story-intelligence/assets/complete")] - public async Task StoryIntelligenceAssetComplete(Guid batchId) + public IActionResult StoryIntelligenceAssetComplete(Guid batchId) { - var model = await storyIntelligence.GetAssetImportResultAsync(batchId); - return model is null ? NotFound() : View(model); + return RedirectToAction(nameof(StoryIntelligenceReviewCentre), new { batchId }); } [HttpPost("story-intelligence/relationships")] @@ -477,10 +474,9 @@ public sealed class OnboardingController(IOnboardingService onboarding, IOnboard } [HttpGet("story-intelligence/relationships/complete")] - public async Task StoryIntelligenceRelationshipComplete(Guid batchId) + public IActionResult StoryIntelligenceRelationshipComplete(Guid batchId) { - var model = await storyIntelligence.GetRelationshipImportResultAsync(batchId); - return model is null ? NotFound() : View(model); + return RedirectToAction(nameof(StoryIntelligenceReviewCentre), new { batchId }); } [HttpGet("story-intelligence/knowledge")] @@ -527,10 +523,9 @@ public sealed class OnboardingController(IOnboardingService onboarding, IOnboard } [HttpGet("story-intelligence/knowledge/complete")] - public async Task StoryIntelligenceKnowledgeComplete(Guid batchId) + public IActionResult StoryIntelligenceKnowledgeComplete(Guid batchId) { - var model = await storyIntelligence.GetKnowledgeImportResultAsync(batchId); - return model is null ? NotFound() : View(model); + return RedirectToAction(nameof(StoryIntelligenceReviewCentre), new { batchId }); } [HttpGet("story-intelligence/narrative")] @@ -577,10 +572,9 @@ public sealed class OnboardingController(IOnboardingService onboarding, IOnboard } [HttpGet("story-intelligence/narrative/complete")] - public async Task StoryIntelligenceNarrativeComplete(Guid batchId) + public IActionResult StoryIntelligenceNarrativeComplete(Guid batchId) { - var model = await storyIntelligence.GetNarrativeImportResultAsync(batchId); - return model is null ? NotFound() : View(model); + return RedirectToAction(nameof(StoryIntelligenceReviewCentre), new { batchId }); } [HttpGet("story-intelligence/complete")] diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceAssetComplete.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceAssetComplete.cshtml deleted file mode 100644 index 4d8ff3f..0000000 --- a/PlotLine/Views/Onboarding/StoryIntelligenceAssetComplete.cshtml +++ /dev/null @@ -1,57 +0,0 @@ -@model StoryIntelligenceAssetImportResultViewModel -@{ - ViewData["Title"] = "Assets created"; -} - -
-
- -
-

Build Story Database

-
- -

Assets created

-
-

PlotDirector updated your story database from the approved asset decisions. Next, review the relationships detected between imported characters.

-
- -
-
- Assets created - @Model.AssetsCreated.ToString("N0") -
-
- Assets linked - @Model.AssetsLinked.ToString("N0") -
-
- Aliases added - @Model.AssetAliasesAdded.ToString("N0") -
-
- Assets ignored - @Model.AssetsIgnored.ToString("N0") -
-
- Scene World panels updated - @Model.SceneAssetEventsCreated.ToString("N0") -
-
- Ownership links - @Model.OwnershipLinksCreated.ToString("N0") -
-
- -
-
Review RelationshipsNext
-
Review KnowledgeComing Soon
-
Review ContinuityComing Soon
-
Timeline EventsComing Soon
-
- - -
-
diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceAssets.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceAssets.cshtml index cf79c63..856a797 100644 --- a/PlotLine/Views/Onboarding/StoryIntelligenceAssets.cshtml +++ b/PlotLine/Views/Onboarding/StoryIntelligenceAssets.cshtml @@ -11,10 +11,8 @@
-
-

Phase 3

-

Review Story Intelligence

+

Story Intelligence

Review Assets

Review important object suggestions that need a create, link, alias, or ignore decision.

@@ -28,8 +26,6 @@
@message
} - -
@if (Model.AssetReview.Candidates.Count == 0) { @@ -37,12 +33,6 @@ No asset decisions are waiting.

Assets are already up to date, or there were no story-significant asset suggestions ready to import.

-
- @FutureStage("Relationships") - @FutureStage("Knowledge") - @FutureStage("Plot Lines & Threads") - @FutureStage("Scene Metrics") -
Back to Review Centre
@@ -240,7 +230,4 @@ @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)}Available from Review Centre
"); } diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceCharacterComplete.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceCharacterComplete.cshtml deleted file mode 100644 index 86c6e7c..0000000 --- a/PlotLine/Views/Onboarding/StoryIntelligenceCharacterComplete.cshtml +++ /dev/null @@ -1,57 +0,0 @@ -@model StoryIntelligenceCharacterImportResultViewModel -@{ - ViewData["Title"] = "Characters created"; -} - -
-
- -
-

Build Story Database

-
- -

Characters created

-
-

PlotDirector updated your story database from the approved character decisions. The next Story Intelligence stages are ready to slot in as they are implemented.

-
- -
-
- Characters created - @Model.CharactersCreated.ToString("N0") -
-
- Characters linked - @Model.CharactersLinked.ToString("N0") -
-
- Aliases added - @Model.CharactersAliased.ToString("N0") -
-
- Characters ignored - @Model.CharactersIgnored.ToString("N0") -
-
- POV links resolved - @Model.PovLinksResolved.ToString("N0") -
-
- Scene People panels updated - @Model.ScenePeoplePanelsUpdated.ToString("N0") -
-
- -
-
Review LocationsNext
-
Review AssetsComing Soon
-
Review RelationshipsComing Soon
-
Review KnowledgeComing Soon
-
- - -
-
diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceCharacters.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceCharacters.cshtml index 7a1687c..f47ec98 100644 --- a/PlotLine/Views/Onboarding/StoryIntelligenceCharacters.cshtml +++ b/PlotLine/Views/Onboarding/StoryIntelligenceCharacters.cshtml @@ -5,10 +5,8 @@
-
-

Phase 3

-

Review Story Intelligence

+

Story Intelligence

Review Characters

Resolve character identity questions before reviewing the rest of the story intelligence.

@@ -37,12 +35,6 @@ No character decisions are waiting.

Characters are already up to date, or there were no character suggestions ready to import.

-
- @FutureStage("Locations") - @FutureStage("Assets") - @FutureStage("Relationships") - @FutureStage("Knowledge") -
@@ -244,7 +236,4 @@ private static bool IsDefault(StoryIntelligenceCharacterReviewCandidateViewModel candidate, string action) => string.Equals(candidate.DefaultAction, action, StringComparison.OrdinalIgnoreCase); - - private static Microsoft.AspNetCore.Html.IHtmlContent FutureStage(string label) - => new Microsoft.AspNetCore.Html.HtmlString($"
{System.Net.WebUtility.HtmlEncode(label)}Available from Review Centre
"); } diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceKnowledge.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceKnowledge.cshtml index bd2790b..c77aeb5 100644 --- a/PlotLine/Views/Onboarding/StoryIntelligenceKnowledge.cshtml +++ b/PlotLine/Views/Onboarding/StoryIntelligenceKnowledge.cshtml @@ -11,10 +11,8 @@
-
-

Phase 3

-

Review Story Intelligence

+

Story Intelligence

Review Knowledge

Review facts, discoveries, beliefs, and suspicions that need an author decision.

@@ -28,8 +26,6 @@
@message
} - -
@if (Model.KnowledgeReview.Candidates.Count == 0) { @@ -37,10 +33,6 @@ No knowledge decisions are waiting.

Knowledge is already up to date, or there were no knowledge changes ready to import from the stored scene analysis.

-
- @FutureStage("Plot Lines & Threads") - @FutureStage("Scene Metrics") -
Back to Review Centre @@ -244,7 +236,4 @@ @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)}Available from Review Centre
"); } diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceKnowledgeComplete.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceKnowledgeComplete.cshtml deleted file mode 100644 index aab06e1..0000000 --- a/PlotLine/Views/Onboarding/StoryIntelligenceKnowledgeComplete.cshtml +++ /dev/null @@ -1,47 +0,0 @@ -@model StoryIntelligenceKnowledgeImportResultViewModel -@{ - ViewData["Title"] = "Knowledge created"; -} - -
-
- -
-

Build Story Database

-
- -

Knowledge created

-
-

PlotDirector updated the existing Knowledge Explorer from the approved Story Intelligence decisions.

-
- -
-
- Knowledge created - @Model.KnowledgeCreated.ToString("N0") -
-
- Knowledge linked - @Model.KnowledgeLinked.ToString("N0") -
-
- Knowledge merged - @Model.KnowledgeMerged.ToString("N0") -
-
- Knowledge ignored - @Model.KnowledgeIgnored.ToString("N0") -
-
- -
-
Review ContinuityComing Soon
-
Timeline EventsComing Soon
-
- - -
-
diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceLocationComplete.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceLocationComplete.cshtml deleted file mode 100644 index 657b6c4..0000000 --- a/PlotLine/Views/Onboarding/StoryIntelligenceLocationComplete.cshtml +++ /dev/null @@ -1,53 +0,0 @@ -@model StoryIntelligenceLocationImportResultViewModel -@{ - ViewData["Title"] = "Locations created"; -} - -
-
- -
-

Build Story Database

-
- -

Locations created

-
-

PlotDirector updated your story database from the approved location decisions. Future Story Intelligence stages will continue from here.

-
- -
-
- Locations created - @Model.LocationsCreated.ToString("N0") -
-
- Locations linked - @Model.LocationsLinked.ToString("N0") -
-
- Aliases added - @Model.LocationAliasesAdded.ToString("N0") -
-
- Locations ignored - @Model.LocationsIgnored.ToString("N0") -
-
- Scene World panels updated - @Model.SceneLocationsUpdated.ToString("N0") -
-
- -
-
Review AssetsNext
-
Review RelationshipsComing Soon
-
Review KnowledgeComing Soon
-
Review ContinuityComing Soon
-
- - -
-
diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceLocations.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceLocations.cshtml index bed2ad1..27dd679 100644 --- a/PlotLine/Views/Onboarding/StoryIntelligenceLocations.cshtml +++ b/PlotLine/Views/Onboarding/StoryIntelligenceLocations.cshtml @@ -11,10 +11,8 @@
-
-

Phase 3

-

Review Story Intelligence

+

Story Intelligence

Review Locations

Review place suggestions that need a create, link, alias, or ignore decision.

@@ -28,8 +26,6 @@
@message
} - -
@if (Model.LocationReview.Candidates.Count == 0) { @@ -37,12 +33,6 @@ No location decisions are waiting.

Locations are already up to date, or there were no location suggestions ready to import.

-
- @FutureStage("Assets") - @FutureStage("Relationships") - @FutureStage("Knowledge") - @FutureStage("Plot Lines & Threads") -
@@ -228,7 +218,4 @@ @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)}Available from Review Centre
"); } diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceNarrative.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceNarrative.cshtml index 3acc228..e26dd86 100644 --- a/PlotLine/Views/Onboarding/StoryIntelligenceNarrative.cshtml +++ b/PlotLine/Views/Onboarding/StoryIntelligenceNarrative.cshtml @@ -11,10 +11,8 @@
-
-

Phase 3

-

Review Story Intelligence

+

Story Intelligence

Review Plot Lines & Threads

Review recurring narrative arcs and thread candidates from the discovered hierarchy.

@@ -28,8 +26,6 @@
@message
} - - @if (Model.NarrativeReview.Candidates.Count == 0) {
diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceNarrativeComplete.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceNarrativeComplete.cshtml deleted file mode 100644 index 2352608..0000000 --- a/PlotLine/Views/Onboarding/StoryIntelligenceNarrativeComplete.cshtml +++ /dev/null @@ -1,30 +0,0 @@ -@model StoryIntelligenceNarrativeImportResultViewModel -@{ - ViewData["Title"] = "Narrative review complete"; -} - -
-
- -
-

Build Story Database

-
- -

Plot Lines & Threads reviewed

-
-

PlotDirector applied the approved narrative candidates and left rejected candidates out of the canonical story database.

-
- -
-
Plot Lines created@Model.PlotLinesCreated.ToString("N0")
-
Plot Lines merged@Model.PlotLinesMerged.ToString("N0")
-
Threads created@Model.ThreadsCreated.ToString("N0")
-
Rejected@Model.CandidatesRejected.ToString("N0")
-
- - -
-
diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceRelationshipComplete.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceRelationshipComplete.cshtml deleted file mode 100644 index 66d47b6..0000000 --- a/PlotLine/Views/Onboarding/StoryIntelligenceRelationshipComplete.cshtml +++ /dev/null @@ -1,51 +0,0 @@ -@model StoryIntelligenceRelationshipImportResultViewModel -@{ - ViewData["Title"] = "Relationships created"; -} - -
-
- -
-

Build Story Database

-
- -

Relationships created

-
-

PlotDirector updated your story database from the approved relationship decisions. Next, review the knowledge changes detected in the imported scenes.

-
- -
-
- Relationships created - @Model.RelationshipsCreated.ToString("N0") -
-
- Relationships linked - @Model.RelationshipsLinked.ToString("N0") -
-
- Relationships merged - @Model.RelationshipsMerged.ToString("N0") -
-
- Relationships ignored - @Model.RelationshipsIgnored.ToString("N0") -
-
- Relationship events added - @Model.RelationshipEventsCreated.ToString("N0") -
-
- -
-
Review ContinuityComing Soon
-
Timeline EventsComing Soon
-
- - -
-
diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceRelationships.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceRelationships.cshtml index eb7f9e5..d470b47 100644 --- a/PlotLine/Views/Onboarding/StoryIntelligenceRelationships.cshtml +++ b/PlotLine/Views/Onboarding/StoryIntelligenceRelationships.cshtml @@ -11,10 +11,8 @@
-
-

Phase 3

-

Review Story Intelligence

+

Story Intelligence

Review Relationships

Review relationship suggestions by character pair and decide what should become canonical.

@@ -28,8 +26,6 @@
@message
} - -
@if (Model.RelationshipReview.Candidates.Count == 0) { @@ -37,11 +33,6 @@ 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("Knowledge") - @FutureStage("Plot Lines & Threads") - @FutureStage("Scene Metrics") -
Back to Review Centre @@ -255,7 +246,4 @@ @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)}Available from Review Centre
"); }