1、每天可排片时间自动判断是不是暑期档,暑期档自动用节假日时间

2、增减场规则由原来的ai判断改为代码判断后生成固定提示词,减少AI思考难度
main
rogersun 4 days ago
parent 75910a8aa5
commit 4f0d873448
  1. 31
      ai/utils/basic_func.py
  2. 89
      ai/utils/manual_utils.py
  3. 29
      ai/utils/show_prompt.py

@ -177,6 +177,7 @@ def get_black_list(cinema_code: str):
def get_runtime_val(key: str): def get_runtime_val(key: str):
return AiRuntime.objects.filter(runtime_key=key).first().runtime_val return AiRuntime.objects.filter(runtime_key=key).first().runtime_val
# 获取当前开启的模型 # 获取当前开启的模型
def get_current_model(): def get_current_model():
return AiModel.objects.filter(Q(current_used=True) & Q(delete_flag=False)).first() return AiModel.objects.filter(Q(current_used=True) & Q(delete_flag=False)).first()
@ -191,12 +192,36 @@ def dict_get(_dict: dict, keys: list):
# AI返回数据清洗 # AI返回数据清洗
def data_cleansing(data:str): def data_cleansing(data: str):
return data.replace('', ',').replace('影厅 id', '影厅id').replace('本地影片 id', '本地影片id').replace(', ', ',') return data.replace('', ',').replace('影厅 id', '影厅id').replace('本地影片 id', '本地影片id').replace(', ', ',')
# 获取排片数据的起始和结束日期 # 获取排片数据的起始和结束日期
def get_report_date(): def get_report_date():
start_date = datetime.datetime.strftime(AiShow.objects.filter(is_ai_show=True).order_by('show_date').first().show_date, '%Y-%m-%d')+'T00:00:00Z' start_date = datetime.datetime.strftime(
end_date = datetime.datetime.strftime(AiShow.objects.filter(is_ai_show=True).order_by('-show_date').first().show_date, '%Y-%m-%d')+'T00:00:00Z' AiShow.objects.filter(is_ai_show=True).order_by('show_date').first().show_date, '%Y-%m-%d') + 'T00:00:00Z'
end_date = datetime.datetime.strftime(
AiShow.objects.filter(is_ai_show=True).order_by('-show_date').first().show_date, '%Y-%m-%d') + 'T00:00:00Z'
print(start_date, end_date) print(start_date, end_date)
return start_date, end_date return start_date, end_date
# 判断目标日期是否是暑期档
def is_summer(target: str, start='06-11', end='08-31') -> bool:
year = str(datetime.datetime.strptime(target, '%Y-%m-%d').year)
start_obj = datetime.datetime.strptime(f"{year}-{start}", '%Y-%m-%d').date()
end_obj = datetime.datetime.strptime(f"{year}-{end}", '%Y-%m-%d').date()
target_obj = datetime.datetime.strptime(target, '%Y-%m-%d').date()
if start_obj <= target_obj <= end_obj:
return True
return False
# 根据输入的两个日期,判端是否需要增减场次
def add_reduce_rule(template:bool, target: bool) -> str:
if template is True and target is False:
return 'decrease'
elif template is False and target is True:
return 'increase'
else:
return 'same'

@ -5,56 +5,57 @@ from pymysql.cursors import DictCursor
s = """ s = """
影厅别名,影厅id,影片别名,本地影片id,语言,放映日期,开始时间,结束时间,片长,场间 影厅别名,影厅id,影片别名,本地影片id,语言,放映日期,开始时间,结束时间,片长,场间
2 百花厅部分按摩椅,1,功夫女足,4292,国语,2026-07-13,11:00,12:46,106,0 2 百花厅部分按摩椅,1,功夫女足,4292,国语,2026-07-13,10:30,12:16,106,0
2 百花厅部分按摩椅,1,功夫女足,4292,国语,2026-07-13,13:00,14:46,106,14 2 百花厅部分按摩椅,1,功夫女足,4292,国语,2026-07-13,12:30,14:16,106,14
2 百花厅部分按摩椅,1,功夫女足,4292,国语,2026-07-13,15:00,16:46,106,14 2 百花厅部分按摩椅,1,功夫女足,4292,国语,2026-07-13,14:30,16:16,106,14
2 百花厅部分按摩椅,1,功夫女足,4292,国语,2026-07-13,17:00,18:46,106,14 2 百花厅部分按摩椅,1,功夫女足,4292,国语,2026-07-13,16:30,18:16,106,14
2 百花厅部分按摩椅,1,功夫女足,4292,国语,2026-07-13,19:00,20:46,106,14 2 百花厅部分按摩椅,1,功夫女足,4292,国语,2026-07-13,18:30,20:16,106,14
2 百花厅部分按摩椅,1,功夫女足,4292,国语,2026-07-13,21:00,22:46,106,14 2 百花厅部分按摩椅,1,功夫女足,4292,国语,2026-07-13,20:30,22:16,106,14
2楼1号厅部分按摩椅,2,三国第一部争洛阳,4281,国语,2026-07-13,11:10,13:27,137,0 2楼1号厅部分按摩椅,2,三国第一部争洛阳,4281,国语,2026-07-13,11:00,13:17,137,0
2楼1号厅部分按摩椅,2,三国第一部争洛阳,4281,国语,2026-07-13,13:40,15:57,137,13 2楼1号厅部分按摩椅,2,三国第一部争洛阳,4281,国语,2026-07-13,13:30,15:47,137,13
2楼1号厅部分按摩椅,2,三国第一部争洛阳,4281,国语,2026-07-13,16:10,18:27,137,13 2楼1号厅部分按摩椅,2,三国第一部争洛阳,4281,国语,2026-07-13,16:00,18:17,137,13
2楼1号厅部分按摩椅,2,三国第一部争洛阳,4281,国语,2026-07-13,18:40,20:57,137,13 2楼1号厅部分按摩椅,2,三国第一部争洛阳,4281,国语,2026-07-13,18:30,20:47,137,13
2楼1号厅部分按摩椅,2,三国第一部争洛阳,4281,国语,2026-07-13,21:10,23:27,137,13 2楼1号厅部分按摩椅,2,三国第一部争洛阳,4281,国语,2026-07-13,21:00,23:17,137,13
2楼2号速度与激情厅部分按摩椅,3,三国第一部争洛阳,4281,国语,2026-07-13,10:20,12:37,137,0 2楼2号速度与激情厅部分按摩椅,3,三国第一部争洛阳,4281,国语,2026-07-13,10:20,12:37,137,0
2楼2号速度与激情厅部分按摩椅,3,三国第一部争洛阳,4281,国语,2026-07-13,12:50,15:07,137,13 2楼2号速度与激情厅部分按摩椅,3,三国第一部争洛阳,4281,国语,2026-07-13,12:50,15:07,137,13
2楼2号速度与激情厅部分按摩椅,3,三国第一部争洛阳,4281,国语,2026-07-13,15:20,17:37,137,13 2楼2号速度与激情厅部分按摩椅,3,三国第一部争洛阳,4281,国语,2026-07-13,15:20,17:37,137,13
2楼2号速度与激情厅部分按摩椅,3,三国第一部争洛阳,4281,国语,2026-07-13,17:50,20:07,137,13 2楼2号速度与激情厅部分按摩椅,3,三国第一部争洛阳,4281,国语,2026-07-13,17:50,20:07,137,13
2楼2号速度与激情厅部分按摩椅,3,三国第一部争洛阳,4281,国语,2026-07-13,20:20,22:37,137,13 2楼2号速度与激情厅部分按摩椅,3,三国第一部争洛阳,4281,国语,2026-07-13,20:20,22:37,137,13
2楼3号厅部分按摩椅,4,特立独行,4280,国语,2026-07-13,11:00,13:03,123,0 2楼3号厅部分按摩椅,4,小黄人与大怪兽,4288,原版,2026-07-13,10:30,12:00,90,0
2楼3号厅部分按摩椅,4,小黄人与大怪兽,4288,原版,2026-07-13,13:15,14:45,90,12 2楼3号厅部分按摩椅,4,玩具总动员5,4269,原版,2026-07-13,12:15,13:57,102,15
2楼3号厅部分按摩椅,4,小黄人与大怪兽,4288,原版,2026-07-13,15:00,16:30,90,15 2楼3号厅部分按摩椅,4,特立独行,4280,国语,2026-07-13,14:10,16:13,123,13
2楼3号厅部分按摩椅,4,小黄人与大怪兽,4288,原版,2026-07-13,16:45,18:15,90,15 2楼3号厅部分按摩椅,4,后室,4279,原版,2026-07-13,16:25,18:16,111,12
2楼3号厅部分按摩椅,4,功夫女足,4292,国语,2026-07-13,18:30,20:16,106,15 2楼3号厅部分按摩椅,4,功夫女足,4292,国语,2026-07-13,18:30,20:16,106,14
2楼3号厅部分按摩椅,4,八仙,4296,国语,2026-07-13,20:30,22:54,144,14 2楼3号厅部分按摩椅,4,八仙,4296,国语,2026-07-13,20:30,22:54,144,14
2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,11:00,12:46,106,0 2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,10:20,12:06,106,0
2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,13:00,14:46,106,14 2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,12:20,14:06,106,14
2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,15:00,16:46,106,14 2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,14:20,16:06,106,14
2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,17:00,18:46,106,14 2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,16:20,18:06,106,14
2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,19:00,20:46,106,14 2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,18:20,20:06,106,14
2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,21:00,22:46,106,14 2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,20:20,22:06,106,14
3楼5号厅部分按摩椅,6,功夫女足,4292,国语,2026-07-13,10:30,12:16,106,0 3楼5号厅部分按摩椅,6,功夫女足,4292,国语,2026-07-13,10:25,12:11,106,0
3楼5号厅部分按摩椅,6,功夫女足,4292,国语,2026-07-13,12:30,14:16,106,14 3楼5号厅部分按摩椅,6,功夫女足,4292,国语,2026-07-13,12:25,14:11,106,14
3楼5号厅部分按摩椅,6,功夫女足,4292,国语,2026-07-13,14:30,16:16,106,14 3楼5号厅部分按摩椅,6,功夫女足,4292,国语,2026-07-13,14:25,16:11,106,14
3楼5号厅部分按摩椅,6,功夫女足,4292,国语,2026-07-13,16:30,18:16,106,14 3楼5号厅部分按摩椅,6,功夫女足,4292,国语,2026-07-13,16:25,18:11,106,14
3楼5号厅部分按摩椅,6,功夫女足,4292,国语,2026-07-13,18:30,20:16,106,14 3楼5号厅部分按摩椅,6,功夫女足,4292,国语,2026-07-13,18:25,20:11,106,14
3楼5号厅部分按摩椅,6,功夫女足,4292,国语,2026-07-13,20:30,22:16,106,14 3楼5号厅部分按摩椅,6,功夫女足,4292,国语,2026-07-13,20:25,22:11,106,14
3楼6号泰隆银行厅部分按摩椅,7,小黄人与大怪兽,4288,原版,2026-07-13,11:00,12:30,90,0 3楼6号泰隆银行厅部分按摩椅,7,功夫女足,4292,国语,2026-07-13,10:30,12:16,106,0
3楼6号泰隆银行厅部分按摩椅,7,功夫女足,4292,国语,2026-07-13,12:45,14:31,106,15 3楼6号泰隆银行厅部分按摩椅,7,功夫女足,4292,国语,2026-07-13,12:30,14:16,106,14
3楼6号泰隆银行厅部分按摩椅,7,功夫女足,4292,国语,2026-07-13,14:45,16:31,106,14 3楼6号泰隆银行厅部分按摩椅,7,功夫女足,4292,国语,2026-07-13,14:30,16:16,106,14
3楼6号泰隆银行厅部分按摩椅,7,功夫女足,4292,国语,2026-07-13,16:45,18:31,106,14 3楼6号泰隆银行厅部分按摩椅,7,功夫女足,4292,国语,2026-07-13,16:30,18:16,106,14
3楼6号泰隆银行厅部分按摩椅,7,功夫女足,4292,国语,2026-07-13,18:45,20:31,106,14 3楼6号泰隆银行厅部分按摩椅,7,功夫女足,4292,国语,2026-07-13,18:30,20:16,106,14
3楼6号泰隆银行厅部分按摩椅,7,功夫女足,4292,国语,2026-07-13,20:45,22:31,106,14 3楼6号泰隆银行厅部分按摩椅,7,功夫女足,4292,国语,2026-07-13,20:30,22:16,106,14
3楼7号厅,8,玩具总动员5,4269,原版,2026-07-13,11:00,12:42,102,0 3楼7号厅,8,海洋奇缘启航,4293,原版,2026-07-13,10:40,12:36,116,0
3楼7号厅,8,特立独行,4280,国语,2026-07-13,12:55,14:58,123,13 3楼7号厅,8,特立独行,4280,国语,2026-07-13,12:50,14:53,123,14
3楼7号厅,8,特立独行,4280,国语,2026-07-13,15:15,17:18,123,17 3楼7号厅,8,玩具总动员5,4269,原版,2026-07-13,15:05,16:47,102,12
3楼7号厅,8,特立独行,4280,国语,2026-07-13,17:30,19:33,123,12 3楼7号厅,8,后室,4279,原版,2026-07-13,17:00,18:51,111,13
3楼7号厅,8,八仙,4296,国语,2026-07-13,19:45,22:09,144,12 3楼7号厅,8,小黄人与大怪兽,4288,原版,2026-07-13,19:05,20:35,90,14
2 三江VIP厅,9,海洋奇缘启航,4293,原版,2026-07-13,12:00,13:56,116,0 3楼7号厅,8,功夫女足,4292,国语,2026-07-13,20:50,22:36,106,15
2 三江VIP厅,9,后室,4279,原版,2026-07-13,14:10,16:01,111,14 2 三江VIP厅,9,功夫女足,4292,国语,2026-07-13,12:15,14:01,106,0
2 三江VIP厅,9,后室,4279,原版,2026-07-13,16:15,18:06,111,14 2 三江VIP厅,9,八仙,4296,国语,2026-07-13,14:15,16:39,144,14
2 三江VIP厅,9,特立独行,4280,国语,2026-07-13,18:20,20:23,123,14 2 三江VIP厅,9,特立独行,4280,国语,2026-07-13,16:55,18:58,123,16
2 三江VIP厅,9,特立独行,4280,国语,2026-07-13,20:40,22:43,123,17 2 三江VIP厅,9,后室,4279,原版,2026-07-13,19:10,21:01,111,12
2 三江VIP厅,9,小黄人与大怪兽,4288,原版,2026-07-13,21:15,22:45,90,14
""" """

@ -15,6 +15,7 @@ class ShowAI:
self.cinema = cinema_info self.cinema = cinema_info
self.user_config = json.loads(cinema_info.user_config) self.user_config = json.loads(cinema_info.user_config)
self.show_date = show_date self.show_date = show_date
self.is_summer = is_summer(show_date)
self.prompt = "" self.prompt = ""
self.model = get_current_model() self.model = get_current_model()
self.ai_model_name = self.model.model_name self.ai_model_name = self.model.model_name
@ -190,15 +191,17 @@ class ShowAI:
rules = rules.replace('{template_date}', template_date) # 处理模板日期 rules = rules.replace('{template_date}', template_date) # 处理模板日期
rules = rules.replace('{available_movie}', data.get_available_movie(self.show_date)) # 处理上映影片 rules = rules.replace('{available_movie}', data.get_available_movie(self.show_date)) # 处理上映影片
new_suggestion = get_new_suggestion(self.cinema, self.show_date) new_suggestion = get_new_suggestion(self.cinema, self.show_date)
rules = rules.replace('{new_movie_suggestion}', '\t' if new_suggestion is None else new_suggestion) # 处理新片推荐数量 rules = rules.replace('{new_movie_suggestion}',
'\t' if new_suggestion is None else new_suggestion) # 处理新片推荐数量
prompt_list.append(rules) prompt_list.append(rules)
# 处理基本规则 # 处理基本规则
basic = PromptTemplate.objects.filter( basic = PromptTemplate.objects.filter(
Q(del_flag=False) & Q(prompt_type='show') & Q(prompt_key='Basic')).first().prompt_val # 获取提示词模板 Q(del_flag=False) & Q(prompt_type='show') & Q(prompt_key='Basic')).first().prompt_val # 获取提示词模板
start = self.user_config['holiday_date_start'] if target_date_is_holiday else self.user_config[ start = self.user_config['holiday_date_start'] if target_date_is_holiday or self.is_summer else \
'work_date_start'] self.user_config['work_date_start']
end = self.user_config['holiday_date_end'] if target_date_is_holiday else self.user_config['work_date_end'] end = self.user_config['holiday_date_end'] if target_date_is_holiday or self.is_summer else self.user_config[
'work_date_end']
basic = basic.replace('{start}', start) basic = basic.replace('{start}', start)
basic = basic.replace('{end}', end) basic = basic.replace('{end}', end)
prompt_list.append(basic) prompt_list.append(basic)
@ -213,17 +216,20 @@ class ShowAI:
# 处理增减场次规则 # 处理增减场次规则
add_reduce = PromptTemplate.objects.filter( add_reduce = PromptTemplate.objects.filter(
Q(del_flag=False) & Q(prompt_type='show') & Q(prompt_key='AddReduce')).first().prompt_val # 获取提示词模板 Q(del_flag=False) & Q(prompt_type='show') & Q(prompt_key='AddReduce')).first().prompt_val # 获取提示词模板
prompt_list.append(add_reduce) add_reduce_obj = json.loads(add_reduce)
rule = add_reduce_rule(template_date_is_holiday, target_date_is_holiday)
add_reduce_str = f"{add_reduce_obj['title']}\n{add_reduce_obj[rule]}\n\n"
prompt_list.append(add_reduce_str)
# 处理黄金时段 # 处理黄金时段
prime_time = PromptTemplate.objects.filter( prime_time = PromptTemplate.objects.filter(
Q(del_flag=False) & Q(prompt_type='show') & Q(prompt_key='PrimeTime')).first().prompt_val # 获取提示词模板 Q(del_flag=False) & Q(prompt_type='show') & Q(prompt_key='PrimeTime')).first().prompt_val # 获取提示词模板
prompt_list.append(prime_time) prompt_list.append(prime_time)
# 处理暑期档 # # 处理暑期档
summer = PromptTemplate.objects.filter( # summer = PromptTemplate.objects.filter(
Q(del_flag=False) & Q(prompt_type='show') & Q(prompt_key='Summer')).first().prompt_val # 获取提示词模板 # Q(del_flag=False) & Q(prompt_type='show') & Q(prompt_key='Summer')).first().prompt_val # 获取提示词模板
prompt_list.append(summer) # prompt_list.append(summer)
# 处理输出目标 # 处理输出目标
output = PromptTemplate.objects.filter( output = PromptTemplate.objects.filter(
@ -246,8 +252,9 @@ class ShowAI:
response = self.client.chat.completions.create( response = self.client.chat.completions.create(
model=self.ai_model_name, model=self.ai_model_name,
messages=[ messages=[
{'role': 'system', 'content': '你是中文AI助手。要求:1.所有思考过程必须使用中文。2.所有tool reasoning必须使用中文。3.所有规划必须使用中文。4.即使用户使用英文提问,也必须中文推理。5.最终输出使用中文。'}, {'role': 'system',
{'role': 'user', 'content': self.prompt if prompt is None else prompt} , 'content': '你是中文AI助手。要求:1.所有思考过程必须使用中文。2.所有tool reasoning必须使用中文。3.所有规划必须使用中文。4.即使用户使用英文提问,也必须中文推理。5.最终输出使用中文。'},
{'role': 'user', 'content': self.prompt if prompt is None else prompt},
], ],
stream=False, stream=False,
reasoning_effort="high", reasoning_effort="high",

Loading…
Cancel
Save