3.2 KiB
Phase 21H - Book-Level Story Intelligence Import Sessions
Purpose
Phase 21H changes the Story Intelligence Experience from following one chapter run to following one book-level import session.
The implementation reuses the existing StoryIntelligenceBookPipelines table as the import-session abstraction. A session represents one project/book and owns the visualisation state across many chapter runs.
Architecture
The browser now opens the visualisation with:
/Development/StoryIntelligenceExperience?importSessionId={StoryIntelligenceBookPipelineID}
The snapshot endpoint is:
/api/story-intelligence/import-sessions/{importSessionId}/visualisation-snapshot
The older run route remains available temporarily:
/Development/StoryIntelligenceExperience?runId={runId}
and:
/api/story-intelligence/runs/{runId}/visualisation-snapshot
This preserves compatibility while moving the development selector and live visualisation to sessions.
Relationship To Chapter Runs
A session is backed by StoryIntelligenceBookPipelines.
Chapter analysis still creates normal StoryIntelligenceRuns. The session snapshot gathers all runs for the session book, orders them by chapter order, and builds one continuous visualisation. The browser does not need to know which chapter run is currently active.
Newly queued chapter runs update the book pipeline to InProgress, and historical runs are backfilled into session rows by the Phase 21H SQL migration.
Snapshot Changes
The new session snapshot:
- loads the import session by
StoryIntelligenceBookPipelineID - loads all chapter runs for the session book
- parses scene results from every run
- skips malformed scene results without blocking later valid results
- selects the active run as the first non-terminal chapter run, falling back to the latest parsed run
- produces one scene list across the whole book
- keeps
RunIdonly as a diagnostic/current-active-run field
Progress Calculation
Progress is now based on the aggregate book view:
- scenes analysed: parsed scene results across all session runs
- scenes detected: sum of detected/persisted scene counts across all session runs
- chapters analysed: terminal chapter runs
- chapter total: known chapter runs in the session
- percentage: aggregate scenes analysed divided by aggregate scenes detected
Progress reaches 100% only when the import session is complete.
Completion Rules
Polling stops only when the import session snapshot is terminal. A completed chapter run no longer stops the visualisation. The session is terminal when all known chapter runs are terminal and the book pipeline status is Complete.
Migration Strategy
The migration backfills StoryIntelligenceBookPipelines for books that already have Story Intelligence runs. Existing chapter runs are not modified or orphaned. Current and future queue paths record the book pipeline as InProgress when a chapter run is queued.
Future Production Integration
The current implementation is still development-facing. A production version should introduce explicit user-facing import-session screens, richer chapter totals from the actual book outline, and SignalR events keyed by import session rather than chapter run.