ai排片,增加新片推荐排片数量的功能

main
rogersun 1 week ago
parent 6b22f93426
commit dac0ac8b00
  1. 20
      ai/models.py
  2. 6
      ai/serializers.py
  3. 21
      ai/utils/show_func.py
  4. 1
      ai/utils/show_prompt.py

@ -69,8 +69,8 @@ class AiShow(models.Model):
message = models.TextField() # ai返回结果的完整信息
created_at = models.DateTimeField(auto_now_add=True) # ai返回结果的时间
updated_at = models.DateTimeField(auto_now=True)
take_times = models.IntegerField(default=0) # 从提示词发给ai到取得返回结果的时间,单位秒
take_tokens = models.CharField(default='', max_length=2000) # ai返回结果中token消耗部分的信息
take_times = models.IntegerField(default=0) # 从提示词发给ai到取得返回结果的时间,单位秒
take_tokens = models.CharField(default='', max_length=2000) # ai返回结果中token消耗部分的信息
prompt_version = models.CharField(max_length=50, default='') # 使用的提示词版本
def __str__(self):
@ -154,3 +154,19 @@ class MovieHotInfo(models.Model):
verbose_name = 'AI影片热度信息'
verbose_name_plural = 'AI影片热度信息'
db_table = 'ai_movie_hot'
class NewMovieSuggestion(models.Model):
id = models.AutoField(primary_key=True)
movie_zz_code = models.CharField(max_length=50)
movie_name = models.CharField(max_length=50)
suggestion = models.CharField(max_length=50)
delete_flag = models.BooleanField(default=False)
def __str__(self):
return self.movie_name
class Meta:
verbose_name = '新片推荐排片数'
verbose_name_plural = '新片推荐排片数'
db_table = 'ai_new_movie_suggestion'

@ -43,3 +43,9 @@ class MovieHotInfoSerializer(serializers.ModelSerializer):
class Meta:
model = MovieHotInfo
fields = '__all__'
class NewMovieSuggestionSerializer(serializers.ModelSerializer):
class Meta:
model = NewMovieSuggestion
fields = '__all__'

@ -95,6 +95,7 @@ def get_target_show(cinema, show_date):
target_date_show = '影厅别名,影厅id,影片别名,本地影片id,语言,放映日期,开始时间,结束时间,片长,场间'
return target_date_show
# 从BI接口获取影片热度信息
def get_movie_hot_info_from_bi(cinema, show_date):
data = GetData(cinema)
@ -108,14 +109,16 @@ def get_movie_hot_info_from_bi(cinema, show_date):
print('name, title, hot', name, title, hot)
return True
# 从本地数据库中获取影片热度信息
def get_all_movie_hot_info(req_date: str = 'today', show_type:str='old', get_num: int = 10):
def get_all_movie_hot_info(req_date: str = 'today', show_type: str = 'old', get_num: int = 10):
if req_date == 'today':
date_sr = datetime.datetime.today().strftime('%Y-%m-%d')
else:
date_sr = req_date
hot_order_day = get_runtime_val('hot_order_day')
hot_data = MovieHotInfo.objects.filter(Q(req_date=date_sr) & Q(show_type=show_type)).order_by(hot_order_day).all()[:get_num]
hot_data = MovieHotInfo.objects.filter(Q(req_date=date_sr) & Q(show_type=show_type)).order_by(hot_order_day).all()[
:get_num]
if hot_data:
print('if hot_data')
title = f"\t{hot_data[0].title}"
@ -128,3 +131,17 @@ def get_all_movie_hot_info(req_date: str = 'today', show_type:str='old', get_num
f"\t{hot.movie_name}》,{hot.wants},{hot.hots},{','.join([d['value'] for d in json.loads(hot.day_data)])}")
print(data_list)
return data_list
# 模拟用户设置的新片推荐数量
def get_new_suggestion(cinema, show_date):
data = GetData(cinema)
movie = data.get_movie_info(show_date, 'new')
new_movie_list = []
for m in movie:
new_movie = NewMovieSuggestion.objects.filter(movie_name=m['cinema_movie_cn_name']).first()
if new_movie is not None:
new_movie_list.append(f"\t{m['cinema_movie_cn_name']}》的不同制式版本总计建议至少排{new_movie.suggestion}场;")
if len(new_movie_list) > 0:
return '\n'.join(new_movie_list)
return None

@ -189,6 +189,7 @@ class ShowAI:
Q(del_flag=False) & Q(prompt_type='show') & Q(prompt_key='Rules')).first().prompt_val # 获取提示词模板
rules = rules.replace('{template_date}', template_date) # 处理模板日期
rules = rules.replace('{available_movie}', data.get_available_movie(self.show_date)) # 处理上映影片
rules = rules.replace('{new_movie_suggestion}', get_new_suggestion(self.cinema, self.show_date)) # 处理新片推荐数量
prompt_list.append(rules)
# 处理基本规则

Loading…
Cancel
Save