135 lines
5.0 KiB
Transact-SQL
135 lines
5.0 KiB
Transact-SQL
SET ANSI_NULLS ON;
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.StoryIntelligenceReviewCentre_GetSummary
|
|
@BookID int,
|
|
@UserID int
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
;WITH RunSummary AS
|
|
(
|
|
SELECT
|
|
r.BookID,
|
|
COUNT_BIG(*) AS RunCount,
|
|
SUM(CASE WHEN r.Status IN (N'Completed', N'CompletedWithWarnings') THEN 1 ELSE 0 END) AS CompletedRunCount,
|
|
SUM(CASE WHEN r.Status IN (N'Pending', N'Running') THEN 1 ELSE 0 END) AS ActiveRunCount,
|
|
SUM(CASE WHEN r.Status IN (N'Failed', N'Cancelled') THEN 1 ELSE 0 END) AS FailedRunCount,
|
|
SUM(COALESCE(r.TotalDetectedScenes, 0)) AS TotalDetectedScenes,
|
|
SUM(COALESCE(r.CompletedScenes, 0)) AS CompletedScenes,
|
|
SUM(COALESCE(r.FailedScenes, 0)) AS FailedScenes
|
|
FROM dbo.StoryIntelligenceRuns r
|
|
WHERE r.BookID = @BookID
|
|
GROUP BY r.BookID
|
|
),
|
|
NarrativeSummary AS
|
|
(
|
|
SELECT
|
|
nc.BookID,
|
|
COUNT_BIG(*) AS NarrativeCandidateCount,
|
|
SUM(CASE WHEN nc.Status = N'Pending' THEN 1 ELSE 0 END) AS NarrativePendingCount,
|
|
SUM(CASE WHEN nc.CandidateType = N'Thread' THEN 1 ELSE 0 END) AS NarrativeThreadCount
|
|
FROM dbo.StoryIntelligenceNarrativeCandidates nc
|
|
WHERE nc.BookID = @BookID
|
|
AND nc.WholeBookPlotSynthesisRunID IS NOT NULL
|
|
GROUP BY nc.BookID
|
|
),
|
|
NarrativeEventSummary AS
|
|
(
|
|
SELECT
|
|
nc.BookID,
|
|
COUNT_BIG(*) AS NarrativeEventCount
|
|
FROM dbo.StoryIntelligenceNarrativeCandidateEvents ev
|
|
INNER JOIN dbo.StoryIntelligenceNarrativeCandidates nc
|
|
ON nc.NarrativeCandidateID = ev.NarrativeCandidateID
|
|
WHERE nc.BookID = @BookID
|
|
AND nc.WholeBookPlotSynthesisRunID IS NOT NULL
|
|
GROUP BY nc.BookID
|
|
),
|
|
MetricValueSummary AS
|
|
(
|
|
SELECT
|
|
chapter.BookID,
|
|
COUNT_BIG(*) AS MetricValueCount
|
|
FROM dbo.SceneMetricValues metric
|
|
INNER JOIN dbo.Scenes scene
|
|
ON scene.SceneID = metric.SceneID
|
|
INNER JOIN dbo.Chapters chapter
|
|
ON chapter.ChapterID = scene.ChapterID
|
|
WHERE chapter.BookID = @BookID
|
|
GROUP BY chapter.BookID
|
|
),
|
|
CurrentPlotRun AS
|
|
(
|
|
SELECT TOP (1)
|
|
run.BookID,
|
|
run.WholeBookPlotSynthesisRunID,
|
|
run.Status AS WholeBookPlotSynthesisStatus,
|
|
run.ErrorMessage AS WholeBookPlotSynthesisErrorMessage
|
|
FROM dbo.WholeBookPlotSynthesisRuns run
|
|
WHERE run.BookID = @BookID
|
|
AND run.IsCurrent = 1
|
|
ORDER BY run.WholeBookPlotSynthesisRunID DESC
|
|
)
|
|
SELECT
|
|
p.StoryIntelligenceBookPipelineID,
|
|
p.ProjectID,
|
|
project.ProjectName,
|
|
p.BookID,
|
|
book.BookTitle,
|
|
book.Subtitle AS BookSubtitle,
|
|
p.CurrentStage,
|
|
p.LastCompletedStage,
|
|
p.CurrentReviewStage,
|
|
p.Status,
|
|
p.CompletedUtc,
|
|
p.CharacterReviewCompletedUtc,
|
|
p.LocationReviewCompletedUtc,
|
|
p.AssetReviewCompletedUtc,
|
|
p.RelationshipReviewCompletedUtc,
|
|
p.KnowledgeReviewCompletedUtc,
|
|
p.NarrativeReviewCompletedUtc,
|
|
p.LastRunID,
|
|
CAST(COALESCE(rs.RunCount, 0) AS int) AS RunCount,
|
|
CAST(COALESCE(rs.CompletedRunCount, 0) AS int) AS CompletedRunCount,
|
|
CAST(COALESCE(rs.ActiveRunCount, 0) AS int) AS ActiveRunCount,
|
|
CAST(COALESCE(rs.FailedRunCount, 0) AS int) AS FailedRunCount,
|
|
CAST(COALESCE(rs.TotalDetectedScenes, 0) AS int) AS TotalDetectedScenes,
|
|
CAST(COALESCE(rs.CompletedScenes, 0) AS int) AS CompletedScenes,
|
|
CAST(COALESCE(rs.FailedScenes, 0) AS int) AS FailedScenes,
|
|
plot.WholeBookPlotSynthesisRunID,
|
|
plot.WholeBookPlotSynthesisStatus,
|
|
plot.WholeBookPlotSynthesisErrorMessage,
|
|
CAST(COALESCE(ns.NarrativeCandidateCount, 0) AS int) AS NarrativeCandidateCount,
|
|
CAST(COALESCE(ns.NarrativePendingCount, 0) AS int) AS NarrativePendingCount,
|
|
CAST(COALESCE(ns.NarrativeThreadCount, 0) AS int) AS NarrativeThreadCount,
|
|
CAST(COALESCE(nes.NarrativeEventCount, 0) AS int) AS NarrativeEventCount,
|
|
CAST(COALESCE(metrics.MetricValueCount, 0) AS int) AS MetricValueCount
|
|
FROM dbo.StoryIntelligenceBookPipelines p
|
|
INNER JOIN dbo.Projects project
|
|
ON project.ProjectID = p.ProjectID
|
|
INNER JOIN dbo.Books book
|
|
ON book.BookID = p.BookID
|
|
INNER JOIN dbo.ProjectUserAccess access
|
|
ON access.ProjectID = p.ProjectID
|
|
AND access.UserID = @UserID
|
|
AND access.IsActive = 1
|
|
LEFT JOIN RunSummary rs
|
|
ON rs.BookID = p.BookID
|
|
LEFT JOIN NarrativeSummary ns
|
|
ON ns.BookID = p.BookID
|
|
LEFT JOIN NarrativeEventSummary nes
|
|
ON nes.BookID = p.BookID
|
|
LEFT JOIN MetricValueSummary metrics
|
|
ON metrics.BookID = p.BookID
|
|
LEFT JOIN CurrentPlotRun plot
|
|
ON plot.BookID = p.BookID
|
|
WHERE p.BookID = @BookID
|
|
AND book.IsArchived = 0
|
|
AND project.IsArchived = 0;
|
|
END;
|
|
GO
|