feat:过滤state

This commit is contained in:
yujj128
2025-06-10 11:48:13 +08:00
parent 5a5b596529
commit d30acae377
4 changed files with 30 additions and 10 deletions

View File

@@ -137,10 +137,14 @@ def book_room(data: dict, params: dict) -> str:
'''
def query_booking_info(params: dict) -> str:
tenant_id = params.get('tenantId', None)
if not tenant_id:
raise Exception("tenantId 不能为空")
access_token = getinfo.get_access_token(tenant_id)
params['access_token'] = access_token
meeting_room = getinfo.query_meetingbooking_info(params)
content = json.loads(json.dumps(meeting_room))
result = params_filter.filter_state(meeting_room)
content = json.loads(json.dumps(result))
print("filter result is :", result)
return str(content)
@@ -246,8 +250,6 @@ def cancel_meeting2(params: dict)->str:
raise Exception("tenantId 不能为空")
access_token = getinfo.get_access_token(tenant_id)
params['access_token'] = access_token
params['isSendMail'] = True
params['isSendMsg'] = True
book_meeting = getinfo.cancel_meeting(params)
content = json.loads(json.dumps(book_meeting))
print("content is :", content)
@@ -301,7 +303,7 @@ def build_prompt(params):
可用会议室信息:
{room_info}
请按以下步骤处理:
1. 解析用户预订需求(时间、人数、设备要求等),会议室名称和type_name里面可能包含了区域信息注意根据地理信息过滤
1. 解析用户预订需求(时间、人数、设备要求等)
2. 根据可用会议室列表推荐合适选项,推荐选项时,没有用户明确需要预订哪间会议室时,不需要提取用户预订信息,直接返回推荐会议室列表,按照自然语言返回即可
3. 只有当用户确定要预订某间会议室,而不是在询问合适会议室时,请根据上下文提取用户预订信息,预订时间等信息并返回而不是直接提示预订成功,结果请只返回json格式得预订信息且不需要包含多余的描述内容以及<think>标签等,输出结果示例如下:
{book_for_mart_str}
@@ -423,7 +425,7 @@ def process_query_book_room(**kwargs) -> str:
book_promot = f'''
系统调用API查询当前租户下已经预订的会议室的结果如下:
{result}
请帮用户解析已有的预订会议室的结果,解析结果中需要返回会议ID,并根据结果给予用户相应自然语言反馈
请帮用户解析已有的预订会议室的结果并根据结果给予用户相应自然语言反馈
'''
return book_promot
@@ -435,7 +437,7 @@ def process_cancel_room_meeting(data, params) -> str:
meetingId = data.get("meetingId", None)
if meetingId:
params["meetingId"] = meetingId
result = cancel_meeting2(params=params)
result = cancel_meeting(params=params)
book_promot = f'''
系统调用API取消预订会议室的结果如下:
{result}

View File

@@ -7,6 +7,7 @@ import requests
import urllib
from decouple import config
APPKEY = config('APPKEY', default="")
APPSECRET = config('APPSECRET', default="")
@@ -58,7 +59,7 @@ def get_access_token(tenant_id):
params = {}
params['timestamp'] = str(int(time.time() * 1000))
params['appKey'] = APPKEY
print()
print(params)
app_secret = APPSECRET
sort_param = sign_opt.opt_sort_data(params)
print("sort_param", sort_param)
@@ -152,6 +153,8 @@ def query_meetingroom(params: dict):
return respones.json()
'''
查询会议预定信息
'''
@@ -171,6 +174,7 @@ def query_meetingbooking_info(params: dict):
params['pageSize'] = 800
respones = requests.get(url=request_url, params=params,
headers=DEFAULT_HEADER)
return respones.json()

View File

@@ -18,4 +18,15 @@ def filter_params(data, endpoint_name):
return {k: v for k, v in data.items() if k in whitelist}
elif isinstance(data, list):
return [filter_params(item, endpoint_name) for item in data]
return data
return data
def filter_state(content:dict):
filtered_data = []
for room in content['data']:
filtered_meetings = [meeting for meeting in room['meetingDTOList'] if meeting['state'] != 3]
if filtered_meetings: # 只保留有会议的会议室
filtered_room = room.copy()
filtered_room['meetingDTOList'] = filtered_meetings
filtered_data.append(filtered_room)
result = {'code': content['code'], 'data': filtered_data}
return result

View File

@@ -67,6 +67,7 @@ def query_meetingooking_info(request):
pageNum
pageSize
"""
from .tools import params_filter
params = request.GET.dict()
print("当前params : {0}".format(params))
tenant_id = params.get('tenantId', None)
@@ -75,10 +76,12 @@ def query_meetingooking_info(request):
try:
access_token = getinfo.get_access_token(tenant_id)
params['access_token'] = access_token
print("params is -----", params)
result = getinfo.query_meetingbooking_info(params)
print("params is -----",params)
result = params_filter.filter_state(result)
content = json.loads(json.dumps(result))
print("content :",content)
print("content is ------------------ :",content)
return JsonResponse(content)
except Exception as ex:
return JsonResponse(str(ex))