from django.db import models


class ChatAuditLog(models.Model):
    STATUS_STARTED = "started"
    STATUS_COMPLETED = "completed"
    STATUS_FAILED = "failed"
    STATUS_CHOICES = [
        (STATUS_STARTED, "شروع شده"),
        (STATUS_COMPLETED, "تکمیل شده"),
        (STATUS_FAILED, "ناموفق"),
    ]

    farm_uuid = models.UUIDField(
        null=True,
        blank=True,
        help_text="شناسه مزرعه مرتبط با درخواست چت",
    )
    service_id = models.CharField(
        max_length=64,
        default="chat",
        help_text="شناسه سرویس RAG استفاده شده برای این درخواست",
    )
    model = models.CharField(
        max_length=128,
        blank=True,
        help_text="مدل LLM استفاده شده برای پاسخ",
    )
    user_query = models.TextField(help_text="متن پرسش کاربر")
    system_prompt = models.TextField(
        blank=True,
        help_text="system prompt نهایی ارسال شده به مدل",
    )
    messages = models.JSONField(
        default=list,
        blank=True,
        help_text="لیست کامل پیام‌های ارسال شده به مدل",
    )
    response_text = models.TextField(
        blank=True,
        help_text="متن کامل پاسخ دریافتی از مدل",
    )
    error_message = models.TextField(
        blank=True,
        help_text="خطای رخ داده هنگام فراخوانی مدل یا استریم",
    )
    status = models.CharField(
        max_length=16,
        choices=STATUS_CHOICES,
        default=STATUS_STARTED,
    )
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = "rag_chatauditlog"
        ordering = ["-created_at"]
        verbose_name = "لاگ چت RAG"
        verbose_name_plural = "لاگ‌های چت RAG"

    def __str__(self):
        return f"{self.service_id} - {self.farm_uuid or 'no-farm'} - {self.status}"
