1、优化查找排片csv的功能,增加正则判断

2、手动ai排片增加指定影院的功能
main
rogersun 2 weeks ago
parent 82f13d14ac
commit 34728d5c24
  1. 17
      ai/utils/show_process.py
  2. 3
      ai/views.py

@ -2,10 +2,11 @@ from ai.models import *
from ai.utils.show_prompt import * from ai.utils.show_prompt import *
import datetime import datetime
from django_redis import get_redis_connection from django_redis import get_redis_connection
from django.db.models import Q
import re import re
# ai排片主流程 # ai排片主流程
def show_main_process(): def show_main_process(zz_code=None):
# 查看状态 # 查看状态
redis_conn = get_redis_connection() redis_conn = get_redis_connection()
redis_key = f'ai_show{datetime.date.today().strftime("%Y%m%d")}' redis_key = f'ai_show{datetime.date.today().strftime("%Y%m%d")}'
@ -13,7 +14,10 @@ def show_main_process():
return False return False
# 获取影院列表 # 获取影院列表
redis_conn.set(redis_key, 1, ex=60*60*20) redis_conn.set(redis_key, 1, ex=60*60*20)
test_cinema_list = TestCinema.objects.filter(is_active=True).all() if not zz_code:
test_cinema_list = TestCinema.objects.filter(is_active=True).all()
else:
test_cinema_list = TestCinema.objects.filter(Q(zz_code=zz_code) & Q(is_active=True)).all()
# 获取提示词版本 # 获取提示词版本
prompt_ver = PromptTemplate.objects.filter( prompt_ver = PromptTemplate.objects.filter(
Q(del_flag=False) & Q(prompt_type='version') & Q(prompt_key='ShowPromptVersion')).first().prompt_val Q(del_flag=False) & Q(prompt_type='version') & Q(prompt_key='ShowPromptVersion')).first().prompt_val
@ -32,11 +36,20 @@ def show_main_process():
print('message:', message) print('message:', message)
print('tokens:', tokens) print('tokens:', tokens)
# 获取排片数据 # 获取排片数据
# 方式一
_show = next((s for s in result.split('------') if s.startswith('\n影厅别名,影厅id')), '') _show = next((s for s in result.split('------') if s.startswith('\n影厅别名,影厅id')), '')
_show = _show.strip() _show = _show.strip()
# 方式二
if _show == '': if _show == '':
_show = next((s for s in result.split('------') if s.startswith('\n```csv\n影厅别名,')), '') _show = next((s for s in result.split('------') if s.startswith('\n```csv\n影厅别名,')), '')
_show = _show.replace('```', '').replace('csv', '').strip() _show = _show.replace('```', '').replace('csv', '').strip()
# 方式三
if _show == '':
# 正则提取中间内容
csv_pattern = r"```csv\s*([\s\S]*?)```"
match = re.search(csv_pattern, result)
if match:
_show = match.group(1)
print('_show:', _show) print('_show:', _show)
# 获取销售额 # 获取销售额
_sales = next((s for s in result.split('\n') if re.search('预估销售数据', s)), '') _sales = next((s for s in result.split('\n') if re.search('预估销售数据', s)), '')

@ -10,7 +10,8 @@ from ai.utils.basic_func import *
# 手动触发ai排片 # 手动触发ai排片
@csrf_exempt @csrf_exempt
def manual_general_show(request): def manual_general_show(request):
result = show_main_process() zz_code = request.GET.dict().get('cinema_code')
result = show_main_process(zz_code)
result_dict = { result_dict = {
'status': 'success' if result else 'fail', 'status': 'success' if result else 'fail',
'message': '生成成功' if result else '生成失败', 'message': '生成成功' if result else '生成失败',

Loading…
Cancel
Save