52 lines
1.9 KiB
Python
52 lines
1.9 KiB
Python
from django.db import models
|
|
from userapp.models import ParadiseUser
|
|
|
|
|
|
class Bot(models.Model):
|
|
name = models.CharField(max_length=255, verbose_name='机器人姓名')
|
|
description = models.TextField(blank=False, null=False, verbose_name='机器人提示词')
|
|
|
|
class Meta:
|
|
verbose_name = '机器人'
|
|
verbose_name_plural = '机器人'
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class ChatMessage(models.Model):
|
|
SENDER_USER = 'user'
|
|
SENDER_BOT = 'assistant'
|
|
SENDER_SYSTEM = 'system'
|
|
|
|
SENDER_CHOICES = [
|
|
(SENDER_USER, 'user'),
|
|
(SENDER_BOT, 'assistant'),
|
|
(SENDER_SYSTEM, 'system'),
|
|
]
|
|
|
|
MESSAGE_TYPE_TEXT = 'text'
|
|
MESSAGE_TYPE_AUDIO = 'audio'
|
|
MESSAGE_TYPE_VIDEO = 'video'
|
|
|
|
MESSAGE_TYPE_CHOICES = [
|
|
(MESSAGE_TYPE_TEXT, 'text'),
|
|
(MESSAGE_TYPE_AUDIO, 'audio'),
|
|
(MESSAGE_TYPE_VIDEO, 'video'),
|
|
]
|
|
|
|
user = models.ForeignKey(ParadiseUser, on_delete=models.CASCADE, verbose_name='用户')
|
|
bot = models.ForeignKey(Bot, on_delete=models.CASCADE, verbose_name='机器人')
|
|
message = models.TextField(max_length=2048, null=False, blank=False, verbose_name='消息内容')
|
|
message_audio_url = models.TextField(max_length=2048, blank=True, verbose_name='消息内容语音链接')
|
|
message_video_url = models.TextField(max_length=2048, blank=True, verbose_name='消息内容视频链接')
|
|
timestamp = models.DateTimeField(auto_now_add=True, verbose_name='时间戳')
|
|
sender = models.CharField(max_length=10, choices=SENDER_CHOICES, verbose_name='发送者')
|
|
message_type = models.CharField(max_length=10, choices=MESSAGE_TYPE_CHOICES, default=MESSAGE_TYPE_TEXT, verbose_name='消息类型')
|
|
|
|
class Meta:
|
|
ordering = ['timestamp'] # 按时间顺序排序
|
|
verbose_name = '聊天消息'
|
|
verbose_name_plural = '聊天消息'
|
|
|
|
def __str__(self):
|
|
return f"{self.sender}: {self.message[:50]} ({self.timestamp})" |