Files
GreenHomeBack/src/GreenHome.Domain/AIQuery.cs
2026-09-26 20:26:39 +03:30

94 lines
2.1 KiB
C#

namespace GreenHome.Domain;
/// <summary>
/// AI Query record - stores questions, answers and token usage
/// </summary>
public class AIQuery
{
/// <summary>
/// Unique identifier
/// </summary>
public int Id { get; set; }
/// <summary>
/// Device ID associated with the query (optional)
/// </summary>
public int? DeviceId { get; set; }
/// <summary>
/// Navigation property to Device
/// </summary>
public Device? Device { get; set; }
/// <summary>
/// User's question
/// </summary>
public required string Question { get; set; }
/// <summary>
/// AI's answer
/// </summary>
public required string Answer { get; set; }
/// <summary>
/// Number of prompt tokens used
/// </summary>
public int PromptTokens { get; set; }
/// <summary>
/// Number of completion tokens used
/// </summary>
public int CompletionTokens { get; set; }
/// <summary>
/// Total tokens used (prompt + completion)
/// </summary>
public int TotalTokens { get; set; }
/// <summary>
/// Model used for the query
/// </summary>
public string? Model { get; set; }
/// <summary>
/// AI profile used for this query
/// </summary>
public int? ProfileId { get; set; }
/// <summary>
/// Navigation property to AIProfile
/// </summary>
public AIProfile? Profile { get; set; }
/// <summary>
/// Estimated cost of the query in USD (0 = not calculable)
/// </summary>
public decimal CostUsd { get; set; }
/// <summary>
/// Temperature parameter used
/// </summary>
public double? Temperature { get; set; }
/// <summary>
/// When the query was created
/// </summary>
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
/// <summary>
/// Response time in milliseconds
/// </summary>
public long? ResponseTimeMs { get; set; }
/// <summary>
/// User ID (if authenticated)
/// </summary>
public int? UserId { get; set; }
/// <summary>
/// Navigation property to User
/// </summary>
public User? User { get; set; }
}