PlotDirector/PlotLine/Models/StoryIntelligencePersistenceModels.cs

208 lines
9.0 KiB
C#

namespace PlotLine.Models;
public static class StoryIntelligenceRunStatuses
{
public const string Pending = "Pending";
public const string Running = "Running";
public const string Completed = "Completed";
public const string CompletedWithWarnings = "CompletedWithWarnings";
public const string Failed = "Failed";
public const string Cancelled = "Cancelled";
}
public static class StoryIntelligenceFailureStages
{
public const string DocumentRead = "DocumentRead";
public const string ChapterStructure = "ChapterStructure";
public const string SceneSplit = "SceneSplit";
public const string SceneIntelligence = "SceneIntelligence";
public const string Validation = "Validation";
public const string Persistence = "Persistence";
public const string DomainImport = "DomainImport";
}
public sealed class StoryIntelligenceRunSaveRequest
{
public int UserID { get; init; }
public int? ProjectID { get; init; }
public int? BookID { get; init; }
public string Status { get; init; } = StoryIntelligenceRunStatuses.Completed;
public string SourceType { get; init; } = "AdminDryRun";
public string? SourceFileName { get; init; }
public long? SourceFileSizeBytes { get; init; }
public int? SourceWordCount { get; init; }
public int? SourceCharacterCount { get; init; }
public int? SourceChapterCount { get; init; }
public int? SourceDetectedImagesCount { get; init; }
public int? SourceDetectedTablesCount { get; init; }
public int? SourceDetectedFootnotesCount { get; init; }
public int? SourceDetectedCommentsCount { get; init; }
public string PromptVersion { get; init; } = string.Empty;
public string Model { get; init; } = string.Empty;
public DateTime StartedUtc { get; init; }
public DateTime? CompletedUtc { get; init; }
public string? FailureStage { get; init; }
public int? TotalInputTokens { get; init; }
public int? TotalOutputTokens { get; init; }
public int? TotalTokens { get; init; }
public long? TotalDurationMs { get; init; }
public decimal? EstimatedCostGBP { get; init; }
public decimal? EstimatedCostUSD { get; init; }
public string? PromptVersionsSummary { get; init; }
public string? ErrorMessage { get; init; }
public string? ErrorDetail { get; init; }
public StoryIntelligenceChapterResultSaveRequest? ChapterResult { get; init; }
public IReadOnlyList<StoryIntelligenceSceneResultSaveRequest> SceneResults { get; init; } = [];
}
public sealed class StoryIntelligenceChapterResultSaveRequest
{
public int? ProjectID { get; init; }
public int? BookID { get; init; }
public int? ChapterID { get; init; }
public decimal? ChapterNumber { get; init; }
public string SourceLabel { get; init; } = string.Empty;
public string PromptVersion { get; init; } = string.Empty;
public string Model { get; init; } = string.Empty;
public string RawResponseJson { get; init; } = string.Empty;
public string OutputTextJson { get; init; } = string.Empty;
public string ParsedJson { get; init; } = string.Empty;
public int ValidationErrorsCount { get; init; }
public int ValidationWarningsCount { get; init; }
public int? InputTokens { get; init; }
public int? OutputTokens { get; init; }
public int? TotalTokens { get; init; }
public long? DurationMs { get; init; }
}
public sealed class StoryIntelligenceSceneResultSaveRequest
{
public int? ProjectID { get; init; }
public int? BookID { get; init; }
public int? ChapterID { get; init; }
public int? SceneID { get; init; }
public int TemporarySceneNumber { get; init; }
public int? StartParagraph { get; init; }
public int? EndParagraph { get; init; }
public string SourceLabel { get; init; } = string.Empty;
public string PromptVersion { get; init; } = string.Empty;
public string Model { get; init; } = string.Empty;
public string RawResponseJson { get; init; } = string.Empty;
public string OutputTextJson { get; init; } = string.Empty;
public string ParsedJson { get; init; } = string.Empty;
public int ValidationErrorsCount { get; init; }
public int ValidationWarningsCount { get; init; }
public int? InputTokens { get; init; }
public int? OutputTokens { get; init; }
public int? TotalTokens { get; init; }
public long? DurationMs { get; init; }
}
public sealed class StoryIntelligenceSavedRunListItem
{
public int StoryIntelligenceRunID { get; init; }
public DateTime CreatedUtc { get; init; }
public int UserID { get; init; }
public int? ProjectID { get; init; }
public string? ProjectTitle { get; init; }
public int? BookID { get; init; }
public string? BookTitle { get; init; }
public string Status { get; init; } = string.Empty;
public string SourceType { get; init; } = string.Empty;
public string? FailureStage { get; init; }
public int SceneCount { get; init; }
public int? TotalTokens { get; init; }
public long? TotalDurationMs { get; init; }
public decimal? EstimatedCostGBP { get; init; }
public decimal? EstimatedCostUSD { get; init; }
public int ValidationErrorsCount { get; init; }
public int ValidationWarningsCount { get; init; }
}
public sealed class StoryIntelligenceSavedRun
{
public int StoryIntelligenceRunID { get; init; }
public int UserID { get; init; }
public int? ProjectID { get; init; }
public string? ProjectTitle { get; init; }
public int? BookID { get; init; }
public string? BookTitle { get; init; }
public string Status { get; init; } = string.Empty;
public string SourceType { get; init; } = string.Empty;
public string? SourceFileName { get; init; }
public long? SourceFileSizeBytes { get; init; }
public int? SourceWordCount { get; init; }
public int? SourceCharacterCount { get; init; }
public int? SourceChapterCount { get; init; }
public int? SourceDetectedImagesCount { get; init; }
public int? SourceDetectedTablesCount { get; init; }
public int? SourceDetectedFootnotesCount { get; init; }
public int? SourceDetectedCommentsCount { get; init; }
public string PromptVersion { get; init; } = string.Empty;
public string? PromptVersionsSummary { get; init; }
public string Model { get; init; } = string.Empty;
public DateTime StartedUtc { get; init; }
public DateTime? CompletedUtc { get; init; }
public string? FailureStage { get; init; }
public int? TotalInputTokens { get; init; }
public int? TotalOutputTokens { get; init; }
public int? TotalTokens { get; init; }
public long? TotalDurationMs { get; init; }
public decimal? EstimatedCostGBP { get; init; }
public decimal? EstimatedCostUSD { get; init; }
public string? ErrorMessage { get; init; }
public string? ErrorDetail { get; init; }
public DateTime CreatedUtc { get; init; }
public DateTime UpdatedUtc { get; init; }
}
public sealed class StoryIntelligenceSavedChapterResult
{
public int ChapterResultID { get; init; }
public int StoryIntelligenceRunID { get; init; }
public int? ProjectID { get; init; }
public int? BookID { get; init; }
public int? ChapterID { get; init; }
public decimal? ChapterNumber { get; init; }
public string SourceLabel { get; init; } = string.Empty;
public string PromptVersion { get; init; } = string.Empty;
public string Model { get; init; } = string.Empty;
public string RawResponseJson { get; init; } = string.Empty;
public string OutputTextJson { get; init; } = string.Empty;
public string ParsedJson { get; init; } = string.Empty;
public int ValidationErrorsCount { get; init; }
public int ValidationWarningsCount { get; init; }
public int? InputTokens { get; init; }
public int? OutputTokens { get; init; }
public int? TotalTokens { get; init; }
public long? DurationMs { get; init; }
public DateTime CreatedUtc { get; init; }
}
public sealed class StoryIntelligenceSavedSceneResult
{
public int SceneResultID { get; init; }
public int StoryIntelligenceRunID { get; init; }
public int? ChapterResultID { get; init; }
public int? ProjectID { get; init; }
public int? BookID { get; init; }
public int? ChapterID { get; init; }
public int? SceneID { get; init; }
public int TemporarySceneNumber { get; init; }
public int? StartParagraph { get; init; }
public int? EndParagraph { get; init; }
public string SourceLabel { get; init; } = string.Empty;
public string PromptVersion { get; init; } = string.Empty;
public string Model { get; init; } = string.Empty;
public string RawResponseJson { get; init; } = string.Empty;
public string OutputTextJson { get; init; } = string.Empty;
public string ParsedJson { get; init; } = string.Empty;
public int ValidationErrorsCount { get; init; }
public int ValidationWarningsCount { get; init; }
public int? InputTokens { get; init; }
public int? OutputTokens { get; init; }
public int? TotalTokens { get; init; }
public long? DurationMs { get; init; }
public DateTime CreatedUtc { get; init; }
}