This commit is contained in:
27942
2026-03-05 10:27:28 +08:00
parent 45e21cb7a1
commit 2971bfad8a
18 changed files with 3023 additions and 5 deletions

View File

@@ -197,6 +197,65 @@ class SystemConfig(models.Model):
return self.key
class FollowUpConfig(models.Model):
"""复聊配置表。"""
name = models.CharField(max_length=128, verbose_name="配置名称")
position = models.CharField(max_length=64, verbose_name="岗位类型")
is_active = models.BooleanField(default=True, verbose_name="是否启用")
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
class Meta:
db_table = "follow_up_config"
verbose_name = "复聊配置"
verbose_name_plural = verbose_name
def __str__(self):
return f"{self.name} ({self.position})"
class FollowUpScript(models.Model):
"""复聊话术表(支持多轮回复)。"""
config_id = models.IntegerField(verbose_name="关联的复聊配置ID")
day_number = models.IntegerField(verbose_name="第几天1=第一天2=第二天0=往后一直)")
content = models.TextField(verbose_name="话术内容")
interval_hours = models.IntegerField(default=24, verbose_name="间隔小时数")
order = models.IntegerField(default=0, verbose_name="排序")
is_active = models.BooleanField(default=True, verbose_name="是否启用")
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
class Meta:
db_table = "follow_up_script"
verbose_name = "复聊话术"
verbose_name_plural = verbose_name
ordering = ['config_id', 'day_number', 'order']
def __str__(self):
return f"{self.day_number}天 - {self.content[:20]}"
class FollowUpRecord(models.Model):
"""复聊记录表(记录每次发送的话术和回复)。"""
contact_id = models.IntegerField(verbose_name="关联的联系人ID")
config_id = models.IntegerField(verbose_name="使用的复聊配置ID")
script_id = models.IntegerField(verbose_name="使用的话术ID")
day_number = models.IntegerField(verbose_name="第几天")
content = models.TextField(verbose_name="发送的内容")
sent_at = models.DateTimeField(auto_now_add=True, verbose_name="发送时间")
got_reply = models.BooleanField(default=False, verbose_name="是否得到回复")
reply_content = models.TextField(default="", blank=True, verbose_name="回复内容")
replied_at = models.DateTimeField(null=True, blank=True, verbose_name="回复时间")
class Meta:
db_table = "follow_up_record"
verbose_name = "复聊记录"
verbose_name_plural = verbose_name
ordering = ['-sent_at']
def __str__(self):
return f"联系人{self.contact_id} - 第{self.day_number}"
# ══════════════════════════════════════════════════════════════
# Pydantic 内存模型(非数据库,用于 Worker 运行时状态与任务调度)
# ══════════════════════════════════════════════════════════════