using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Pgvector;

namespace NexusReader.Domain.Entities;

public class SemanticKnowledgeCache
{
    [Key]
    [MaxLength(128)]
    public string ContentHash { get; set; } = string.Empty;

    [Required]
    public string JsonData { get; set; } = string.Empty;

    [Required]
    public string OriginalText { get; set; } = string.Empty;

    [Required]
    [MaxLength(50)]
    public string ModelId { get; set; } = "gemini-1.5-flash";

    [Required]
    [MaxLength(10)]
    public string PromptVersion { get; set; } = "1.0";

    [Required]
    [MaxLength(128)]
    public string TenantId { get; set; } = string.Empty;

    // Vector embedding for semantic search (768 dimensions)
    public Vector? Embedding { get; set; }

    public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
