100 lines
5.0 KiB
Python
100 lines
5.0 KiB
Python
# apps/feishu/models.py
|
|
from django.db import models
|
|
from django.utils import timezone
|
|
import uuid
|
|
|
|
class FeishuCreator(models.Model):
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
|
record_id = models.CharField(max_length=100, unique=True, verbose_name='飞书记录ID')
|
|
|
|
# 对接人信息
|
|
contact_person = models.CharField(max_length=50, blank=True, verbose_name='对接人')
|
|
|
|
# 基本账号信息
|
|
handle = models.TextField(blank=True, verbose_name='Handle')
|
|
tiktok_url = models.TextField(blank=True, verbose_name='链接')
|
|
fans_count = models.CharField(max_length=50, blank=True, verbose_name='粉丝数')
|
|
gmv = models.CharField(max_length=100, blank=True, verbose_name='GMV')
|
|
|
|
# 联系方式
|
|
email = models.EmailField(blank=True, verbose_name='邮箱')
|
|
phone = models.CharField(max_length=50, blank=True, verbose_name='手机号|WhatsApp')
|
|
|
|
# 账号属性和报价
|
|
account_type = models.CharField(max_length=50, blank=True, verbose_name='账号属性')
|
|
price_quote = models.TextField(blank=True, verbose_name='报价')
|
|
response_speed = models.CharField(max_length=50, blank=True, verbose_name='回复速度')
|
|
|
|
# 合作相关
|
|
cooperation_intention = models.CharField(max_length=50, blank=True, verbose_name='合作意向')
|
|
payment_method = models.CharField(max_length=50, blank=True, verbose_name='支付方式')
|
|
payment_account = models.CharField(max_length=100, blank=True, verbose_name='收款账号')
|
|
address = models.TextField(blank=True, verbose_name='收件地址')
|
|
has_ooin = models.CharField(max_length=10, blank=True, verbose_name='签约OOIN?')
|
|
|
|
# 渠道和进度
|
|
source = models.CharField(max_length=100, blank=True, verbose_name='渠道来源')
|
|
contact_status = models.CharField(max_length=50, blank=True, verbose_name='建联进度')
|
|
cooperation_brands = models.JSONField(default=list, blank=True, verbose_name='合作品牌')
|
|
|
|
# 品类信息
|
|
system_categories = models.CharField(max_length=100, blank=True, verbose_name='系统展示的带货品类')
|
|
actual_categories = models.CharField(max_length=100, blank=True, verbose_name='实际高播放量带货品类')
|
|
human_categories = models.CharField(max_length=100, blank=True, verbose_name='达人标想要货品类')
|
|
|
|
# 其他信息
|
|
creator_base = models.CharField(max_length=100, blank=True, verbose_name='达人base')
|
|
notes = models.TextField(blank=True, verbose_name='父记录')
|
|
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name='更新时间')
|
|
|
|
class Meta:
|
|
verbose_name = '创作者数据'
|
|
verbose_name_plural = '创作者数据'
|
|
|
|
class FeishuTableMapping(models.Model):
|
|
"""
|
|
飞书多维表格与数据库表的映射关系
|
|
"""
|
|
id = models.AutoField(primary_key=True)
|
|
app_token = models.CharField(max_length=100, verbose_name='应用令牌')
|
|
table_id = models.CharField(max_length=100, verbose_name='表格ID')
|
|
table_url = models.TextField(verbose_name='表格URL')
|
|
table_name = models.CharField(max_length=100, verbose_name='数据库表名')
|
|
feishu_table_name = models.CharField(max_length=255, blank=True, null=True, verbose_name='飞书表格名称')
|
|
last_sync_time = models.DateTimeField(auto_now=True, verbose_name='最后同步时间')
|
|
total_records = models.IntegerField(default=0, verbose_name='总记录数')
|
|
|
|
class Meta:
|
|
verbose_name = '飞书表格映射'
|
|
verbose_name_plural = '飞书表格映射'
|
|
unique_together = ('app_token', 'table_id')
|
|
|
|
def __str__(self):
|
|
return f"{self.feishu_table_name or self.table_name} ({self.table_id})"
|
|
|
|
class CreatorConversationTracker(models.Model):
|
|
"""
|
|
跟踪创作者回复和目标完成情况的模型
|
|
"""
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
|
creator_profile = models.ForeignKey('daren_detail.CreatorProfile', on_delete=models.CASCADE, verbose_name='创作者')
|
|
conversation_id = models.CharField(max_length=100, verbose_name='对话ID')
|
|
has_replied = models.BooleanField(default=False, verbose_name='是否已回复')
|
|
goal_achieved = models.BooleanField(default=False, verbose_name='是否达成目标')
|
|
user = models.ForeignKey('user.User', on_delete=models.CASCADE, verbose_name='用户')
|
|
user_email = models.EmailField(verbose_name='用户邮箱')
|
|
influencer_email = models.EmailField(verbose_name='达人邮箱')
|
|
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name='更新时间')
|
|
|
|
class Meta:
|
|
verbose_name = '创作者对话跟踪'
|
|
verbose_name_plural = '创作者对话跟踪'
|
|
db_table = 'creator_conversation_tracker'
|
|
unique_together = ('creator_profile', 'conversation_id')
|
|
|
|
def __str__(self):
|
|
return f"{self.creator_profile} - {self.conversation_id}" |