PlotDirector/PlotLine/Sql/116_Phase20J_StoryIntelligenceRunAuditFields.sql

188 lines
7.1 KiB
Transact-SQL

SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'SourceFileName') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD SourceFileName nvarchar(260) NULL;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'SourceFileSizeBytes') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD SourceFileSizeBytes bigint NULL;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'SourceWordCount') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD SourceWordCount int NULL;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'SourceCharacterCount') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD SourceCharacterCount int NULL;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'SourceChapterCount') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD SourceChapterCount int NULL;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'SourceDetectedImagesCount') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD SourceDetectedImagesCount int NULL;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'SourceDetectedTablesCount') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD SourceDetectedTablesCount int NULL;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'SourceDetectedFootnotesCount') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD SourceDetectedFootnotesCount int NULL;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'SourceDetectedCommentsCount') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD SourceDetectedCommentsCount int NULL;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'FailureStage') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD FailureStage nvarchar(80) NULL;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'ErrorDetail') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD ErrorDetail nvarchar(max) NULL;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'EstimatedCostGBP') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD EstimatedCostGBP decimal(19,6) NULL;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'EstimatedCostUSD') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD EstimatedCostUSD decimal(19,6) NULL;
GO
IF COL_LENGTH(N'dbo.StoryIntelligenceRuns', N'PromptVersionsSummary') IS NULL
ALTER TABLE dbo.StoryIntelligenceRuns ADD PromptVersionsSummary nvarchar(500) NULL;
GO
CREATE OR ALTER PROCEDURE dbo.StoryIntelligenceRun_Save
@UserID int,
@ProjectID int = NULL,
@BookID int = NULL,
@Status nvarchar(50),
@SourceType nvarchar(50),
@SourceFileName nvarchar(260) = NULL,
@SourceFileSizeBytes bigint = NULL,
@SourceWordCount int = NULL,
@SourceCharacterCount int = NULL,
@SourceChapterCount int = NULL,
@SourceDetectedImagesCount int = NULL,
@SourceDetectedTablesCount int = NULL,
@SourceDetectedFootnotesCount int = NULL,
@SourceDetectedCommentsCount int = NULL,
@PromptVersion nvarchar(200),
@Model nvarchar(100),
@StartedUtc datetime2,
@CompletedUtc datetime2 = NULL,
@FailureStage nvarchar(80) = NULL,
@TotalInputTokens int = NULL,
@TotalOutputTokens int = NULL,
@TotalTokens int = NULL,
@TotalDurationMs bigint = NULL,
@EstimatedCostGBP decimal(19,6) = NULL,
@EstimatedCostUSD decimal(19,6) = NULL,
@PromptVersionsSummary nvarchar(500) = NULL,
@ErrorMessage nvarchar(max) = NULL,
@ErrorDetail nvarchar(max) = NULL
AS
BEGIN
SET NOCOUNT ON;
INSERT dbo.StoryIntelligenceRuns
(
UserID, ProjectID, BookID, Status, SourceType, SourceFileName, SourceFileSizeBytes,
SourceWordCount, SourceCharacterCount, SourceChapterCount, SourceDetectedImagesCount,
SourceDetectedTablesCount, SourceDetectedFootnotesCount, SourceDetectedCommentsCount,
PromptVersion, Model, StartedUtc, CompletedUtc, FailureStage, TotalInputTokens,
TotalOutputTokens, TotalTokens, TotalDurationMs, EstimatedCostGBP, EstimatedCostUSD,
PromptVersionsSummary, ErrorMessage, ErrorDetail
)
VALUES
(
@UserID, @ProjectID, @BookID, @Status, @SourceType, @SourceFileName, @SourceFileSizeBytes,
@SourceWordCount, @SourceCharacterCount, @SourceChapterCount, @SourceDetectedImagesCount,
@SourceDetectedTablesCount, @SourceDetectedFootnotesCount, @SourceDetectedCommentsCount,
@PromptVersion, @Model, @StartedUtc, @CompletedUtc, @FailureStage, @TotalInputTokens,
@TotalOutputTokens, @TotalTokens, @TotalDurationMs, @EstimatedCostGBP, @EstimatedCostUSD,
@PromptVersionsSummary, @ErrorMessage, @ErrorDetail
);
SELECT CAST(SCOPE_IDENTITY() AS int) AS StoryIntelligenceRunID;
END;
GO
CREATE OR ALTER PROCEDURE dbo.StoryIntelligenceRun_ListAdmin
AS
BEGIN
SET NOCOUNT ON;
SELECT
r.StoryIntelligenceRunID,
r.CreatedUtc,
r.UserID,
r.ProjectID,
p.ProjectName AS ProjectTitle,
r.BookID,
b.BookTitle,
r.Status,
r.SourceType,
r.FailureStage,
COUNT(sr.SceneResultID) AS SceneCount,
r.TotalTokens,
r.TotalDurationMs,
r.EstimatedCostGBP,
r.EstimatedCostUSD,
COALESCE(cr.ValidationErrorsCount, 0) + COALESCE(SUM(sr.ValidationErrorsCount), 0) AS ValidationErrorsCount,
COALESCE(cr.ValidationWarningsCount, 0) + COALESCE(SUM(sr.ValidationWarningsCount), 0) AS ValidationWarningsCount
FROM dbo.StoryIntelligenceRuns r
LEFT JOIN dbo.Projects p ON p.ProjectID = r.ProjectID
LEFT JOIN dbo.Books b ON b.BookID = r.BookID
LEFT JOIN dbo.StoryIntelligenceChapterResults cr ON cr.StoryIntelligenceRunID = r.StoryIntelligenceRunID
LEFT JOIN dbo.StoryIntelligenceSceneResults sr ON sr.StoryIntelligenceRunID = r.StoryIntelligenceRunID
GROUP BY
r.StoryIntelligenceRunID, r.CreatedUtc, r.UserID, r.ProjectID, p.ProjectName,
r.BookID, b.BookTitle, r.Status, r.SourceType, r.FailureStage, r.TotalTokens,
r.TotalDurationMs, r.EstimatedCostGBP, r.EstimatedCostUSD,
cr.ValidationErrorsCount, cr.ValidationWarningsCount
ORDER BY r.CreatedUtc DESC;
END;
GO
CREATE OR ALTER PROCEDURE dbo.StoryIntelligenceRun_GetAdmin
@StoryIntelligenceRunID int
AS
BEGIN
SET NOCOUNT ON;
SELECT
r.StoryIntelligenceRunID,
r.UserID,
r.ProjectID,
p.ProjectName AS ProjectTitle,
r.BookID,
b.BookTitle,
r.Status,
r.SourceType,
r.SourceFileName,
r.SourceFileSizeBytes,
r.SourceWordCount,
r.SourceCharacterCount,
r.SourceChapterCount,
r.SourceDetectedImagesCount,
r.SourceDetectedTablesCount,
r.SourceDetectedFootnotesCount,
r.SourceDetectedCommentsCount,
r.PromptVersion,
r.PromptVersionsSummary,
r.Model,
r.StartedUtc,
r.CompletedUtc,
r.FailureStage,
r.TotalInputTokens,
r.TotalOutputTokens,
r.TotalTokens,
r.TotalDurationMs,
r.EstimatedCostGBP,
r.EstimatedCostUSD,
r.ErrorMessage,
r.ErrorDetail,
r.CreatedUtc,
r.UpdatedUtc
FROM dbo.StoryIntelligenceRuns r
LEFT JOIN dbo.Projects p ON p.ProjectID = r.ProjectID
LEFT JOIN dbo.Books b ON b.BookID = r.BookID
WHERE r.StoryIntelligenceRunID = @StoryIntelligenceRunID;
END;
GO