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}"