from django.db import models from django.conf import settings from django.utils.translation import gettext_lazy as _ # Constants สำหรับสถานะ class TicketStatus(models.TextChoices): OPEN = 'OPEN', _('Open') IN_PROGRESS = 'IN_PROGRESS', _('In Progress') RESOLVED = 'RESOLVED', _('Resolved') CLOSED = 'CLOSED', _('Closed') class Ticket(models.Model): """โมเดลหลักสำหรับ Ticket/Case""" # ฐานข้อมูลจะอ้างอิง User model หลักของ Django (CustomUser) creator = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, related_name='created_tickets' ) assigned_to = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, blank=True, related_name='assigned_tickets' ) title = models.CharField(max_length=255) status = models.CharField( max_length=20, choices=TicketStatus.choices, default=TicketStatus.OPEN ) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) # ฟิลด์สำคัญสำหรับการรวมเป็น Unified Inbox last_message_at = models.DateTimeField( null=True, blank=True ) last_message_content = models.CharField( max_length=255, null=True, blank=True ) is_read = models.BooleanField( default=False # สถานะอ่านล่าสุดโดย Agent ) class Meta: ordering = ['-updated_at'] # จัดเรียงตามการอัปเดตล่าสุด def __str__(self): return f"TKT-{self.id}: {self.title}"