namespace ChatRAG.Models
{
///
/// Modelo para saída de dados (READ)
///
public class DocumentOutput
{
public string Id { get; set; } = string.Empty;
public string Title { get; set; } = string.Empty;
public string Content { get; set; } = string.Empty;
public string ProjectId { get; set; } = string.Empty;
public Dictionary? Metadata { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
public double[]? Embedding { get; set; }
public TextoComEmbedding ToTextoComEmbedding()
{
return new TextoComEmbedding
{
Id = Id,
Titulo = Title,
Conteudo = Content,
ProjetoId = ProjectId,
Embedding = Embedding
};
}
public static DocumentOutput FromTextoComEmbedding(TextoComEmbedding texto)
{
return new DocumentOutput
{
Id = texto.Id,
Title = texto.Titulo,
Content = texto.Conteudo,
ProjectId = texto.ProjetoId,
Embedding = texto.Embedding,
CreatedAt = DateTime.UtcNow,
UpdatedAt = DateTime.UtcNow
};
}
public string GetContentPreview(int maxLength = 200)
{
if (string.IsNullOrEmpty(Content))
return string.Empty;
if (Content.Length <= maxLength)
return Content;
return Content.Substring(0, maxLength) + "...";
}
public bool HasEmbedding() => Embedding != null && Embedding.Length > 0;
public DocumentInput ToInput()
{
return new DocumentInput
{
Id = Id,
Title = Title,
Content = Content,
ProjectId = ProjectId,
Metadata = Metadata,
CreatedAt = CreatedAt,
UpdatedAt = UpdatedAt
};
}
}
}