This commit is contained in:
Your Name
2026-02-14 17:58:29 +08:00
parent 2e143fb0c0
commit 87f915819f
11 changed files with 4736 additions and 2 deletions

View File

@@ -76,6 +76,98 @@ class AuthToken(models.Model):
return self.username
class FilterConfig(models.Model):
"""筛选条件配置表。"""
name = models.CharField(max_length=128, verbose_name="配置名称")
age_min = models.IntegerField(default=18, verbose_name="最小年龄")
age_max = models.IntegerField(default=60, verbose_name="最大年龄")
gender = models.CharField(max_length=32, default="不限", verbose_name="性别")
education = models.CharField(max_length=32, default="不限", verbose_name="学历要求")
activity = models.CharField(max_length=32, default="不限", verbose_name="活跃度")
positions = models.JSONField(default=list, blank=True, verbose_name="期望岗位列表")
greeting_min = models.IntegerField(default=5, verbose_name="打招呼最少条数/天")
greeting_max = models.IntegerField(default=20, verbose_name="打招呼最多条数/天")
rest_minutes = models.IntegerField(default=30, verbose_name="每轮休息分钟")
collection_min = models.IntegerField(default=10, verbose_name="收藏最少个数/天")
collection_max = models.IntegerField(default=50, verbose_name="收藏最多个数/天")
message_interval = models.IntegerField(default=30, 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 = "filter_config"
verbose_name = "筛选配置"
verbose_name_plural = verbose_name
def __str__(self):
return self.name
class ChatScript(models.Model):
"""复聊话术表。"""
SCRIPT_TYPE_CHOICES = [
("first", "首次回复"),
("followup", "跟进回复"),
("wechat", "微信交换"),
("closing", "结束语"),
]
position = models.CharField(max_length=64, verbose_name="岗位类型")
script_type = models.CharField(max_length=32, choices=SCRIPT_TYPE_CHOICES, verbose_name="话术类型")
content = models.TextField(verbose_name="话术内容")
keywords = models.CharField(max_length=256, default="", blank=True, 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 = "chat_script"
verbose_name = "复聊话术"
verbose_name_plural = verbose_name
def __str__(self):
return f"{self.position} - {self.get_script_type_display()}"
class ContactRecord(models.Model):
"""联系人记录表(招聘过程中联系过的候选人)。"""
name = models.CharField(max_length=64, verbose_name="姓名")
position = models.CharField(max_length=64, default="", verbose_name="岗位")
contact = models.CharField(max_length=64, default="", verbose_name="联系方式")
reply_status = models.CharField(max_length=32, default="未回复", verbose_name="回复状态")
wechat_exchanged = models.BooleanField(default=False, verbose_name="是否交换微信")
account_id = models.IntegerField(null=True, blank=True, verbose_name="关联账号 ID")
worker_id = models.CharField(max_length=64, default="", verbose_name="Worker 标识")
notes = models.TextField(default="", blank=True, verbose_name="备注")
contacted_at = models.DateTimeField(null=True, blank=True, verbose_name="联系时间")
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
class Meta:
db_table = "contact_record"
verbose_name = "联系记录"
verbose_name_plural = verbose_name
ordering = ["-created_at"]
def __str__(self):
return f"{self.name} ({self.position})"
class SystemConfig(models.Model):
"""系统配置键值表。"""
key = models.CharField(max_length=64, unique=True, verbose_name="配置项")
value = models.TextField(default="", verbose_name="配置值")
description = models.CharField(max_length=256, default="", blank=True, verbose_name="描述")
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
class Meta:
db_table = "system_config"
verbose_name = "系统配置"
verbose_name_plural = verbose_name
def __str__(self):
return self.key
# ══════════════════════════════════════════════════════════════
# Pydantic 内存模型(非数据库,用于 Worker 运行时状态与任务调度)
# ══════════════════════════════════════════════════════════════