139 lines
5.0 KiB
C#
139 lines
5.0 KiB
C#
using System.Text.Json.Serialization;
|
|
|
|
namespace PlotLine.Models;
|
|
|
|
public sealed class CharacterIntelligenceProfile
|
|
{
|
|
public int CharacterIntelligenceProfileID { get; init; }
|
|
public int ImportSessionID { get; init; }
|
|
public int ProjectID { get; init; }
|
|
public int BookID { get; init; }
|
|
public string CanonicalIdentityKey { get; init; } = string.Empty;
|
|
public string CanonicalName { get; init; } = string.Empty;
|
|
public string ProfileJson { get; init; } = string.Empty;
|
|
public decimal Confidence { get; init; }
|
|
public string? NarrativeImportance { get; init; }
|
|
public bool IsRecurring { get; init; }
|
|
public string EvidenceVersion { get; init; } = CharacterIntelligenceVersions.Current;
|
|
public int? LastUpdatedSceneResultID { get; init; }
|
|
public DateTime CreatedUtc { get; init; }
|
|
public DateTime UpdatedUtc { get; init; }
|
|
}
|
|
|
|
public static class CharacterIntelligenceVersions
|
|
{
|
|
public const string Current = "22";
|
|
}
|
|
|
|
public sealed class CharacterIntelligenceProfileDocument
|
|
{
|
|
public string CanonicalName { get; set; } = string.Empty;
|
|
public List<string> Aliases { get; set; } = [];
|
|
public string? RoleInStory { get; set; }
|
|
public string? NarrativeImportance { get; set; }
|
|
public string? Presentation { get; set; }
|
|
public string? EstimatedAge { get; set; }
|
|
public string? EstimatedAgeBand { get; set; }
|
|
public string? HairColour { get; set; }
|
|
public string? HairLength { get; set; }
|
|
public string? HairStyle { get; set; }
|
|
public string? EyeColour { get; set; }
|
|
public string? SkinTone { get; set; }
|
|
public string? Height { get; set; }
|
|
public string? Build { get; set; }
|
|
public List<string> DistinctiveFeatures { get; set; } = [];
|
|
public string? TypicalClothing { get; set; }
|
|
public string? Occupation { get; set; }
|
|
public List<string> Relationships { get; set; } = [];
|
|
public string? CurrentStatus { get; set; }
|
|
public decimal Confidence { get; set; }
|
|
public List<CharacterIntelligenceEvidenceItem> EvidenceTimeline { get; set; } = [];
|
|
public List<CharacterIntelligenceContradiction> Contradictions { get; set; } = [];
|
|
public DateTime LastUpdatedUtc { get; set; }
|
|
}
|
|
|
|
public sealed class CharacterIntelligenceEvidenceItem
|
|
{
|
|
public int? SceneResultID { get; set; }
|
|
public decimal? ChapterNumber { get; set; }
|
|
public int? SceneNumber { get; set; }
|
|
public string FieldName { get; set; } = string.Empty;
|
|
public string? Value { get; set; }
|
|
public string Evidence { get; set; } = string.Empty;
|
|
public decimal Confidence { get; set; }
|
|
public DateTime RecordedUtc { get; set; } = DateTime.UtcNow;
|
|
}
|
|
|
|
public sealed class CharacterIntelligenceContradiction
|
|
{
|
|
public string FieldName { get; set; } = string.Empty;
|
|
public string? ExistingValue { get; set; }
|
|
public string? NewValue { get; set; }
|
|
public string Evidence { get; set; } = string.Empty;
|
|
public decimal Confidence { get; set; }
|
|
public int? SceneResultID { get; set; }
|
|
}
|
|
|
|
public sealed record CharacterIntelligenceProfileSave(
|
|
int ImportSessionID,
|
|
int ProjectID,
|
|
int BookID,
|
|
string CanonicalIdentityKey,
|
|
string CanonicalName,
|
|
string ProfileJson,
|
|
decimal Confidence,
|
|
string? NarrativeImportance,
|
|
bool IsRecurring,
|
|
string EvidenceVersion,
|
|
int SceneResultID);
|
|
|
|
public sealed record CharacterIntelligenceEvidenceSave(
|
|
int CharacterIntelligenceProfileID,
|
|
int SceneResultID,
|
|
string FieldName,
|
|
string? PreviousValue,
|
|
string? NewValue,
|
|
string Evidence,
|
|
decimal Confidence,
|
|
bool IsContradiction,
|
|
string Source);
|
|
|
|
public sealed class CharacterIntelligenceProfileUpdateResponse
|
|
{
|
|
public string SchemaVersion { get; init; } = CharacterIntelligenceVersions.Current;
|
|
public List<CharacterIntelligenceProfileUpdate> Updates { get; init; } = [];
|
|
}
|
|
|
|
public sealed class CharacterIntelligenceProfileUpdate
|
|
{
|
|
public string CanonicalName { get; init; } = string.Empty;
|
|
public List<string> Aliases { get; init; } = [];
|
|
public string? RecurrenceSignal { get; init; }
|
|
public decimal Confidence { get; init; }
|
|
public List<CharacterIntelligenceFieldUpdate> FieldUpdates { get; init; } = [];
|
|
public List<CharacterIntelligenceAiContradiction> Contradictions { get; init; } = [];
|
|
|
|
[JsonExtensionData]
|
|
public Dictionary<string, System.Text.Json.JsonElement>? ExtensionData { get; init; }
|
|
}
|
|
|
|
public sealed class CharacterIntelligenceFieldUpdate
|
|
{
|
|
public string FieldName { get; init; } = string.Empty;
|
|
public string? Value { get; init; }
|
|
public string Evidence { get; init; } = string.Empty;
|
|
public decimal Confidence { get; init; }
|
|
public bool IsNewInformation { get; init; }
|
|
public bool IncreasesCertainty { get; init; }
|
|
}
|
|
|
|
public sealed class CharacterIntelligenceAiContradiction
|
|
{
|
|
public string FieldName { get; init; } = string.Empty;
|
|
public string? ExistingValue { get; init; }
|
|
public string? NewValue { get; init; }
|
|
public string Evidence { get; init; } = string.Empty;
|
|
public decimal Confidence { get; init; }
|
|
}
|
|
|