From d3e9ebd7116d22f9886574c720162b5aa8a77b72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E9=9B=A8?= Date: Tue, 10 Jun 2025 10:46:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:tennantId=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 8 +-- yj_room_agent/LLM/ai_service.py | 18 +++---- yj_room_agent/tools/getinfo.py | 90 ++++++++++++++++++++++----------- 3 files changed, 71 insertions(+), 45 deletions(-) diff --git a/.env b/.env index 75c8f5d..53b5212 100644 --- a/.env +++ b/.env @@ -11,11 +11,11 @@ DJANGO_ALLOWED_HOSTS=192.168.237.130,127.0.0.1,10.212.26.130 #是否开启debug模式 DJANGO_DEBUG_ENABLE=True -DEFAULT_AUTH_URL = 'https://oa-dev.yced.com.cn/iuap-api-auth' -DEFAULT_GATEWAY_URL = 'https://oa-dev.yced.com.cn/iuap-api-gateway ' +DEFAULT_AUTH_URL = 'https://oa-pre.yced.com.cn/iuap-api-auth' +DEFAULT_GATEWAY_URL = 'https://oa-pre.yced.com.cn/iuap-api-gateway ' TEMP_TENANT_ID = 'pr3rl2oj' -APPKEY = 'e5d615eb169944abb3a1db5bd699ca65' -APPSECRET = '84bb250c995c6161a97aebc2296abe558f6551ac' +APPKEY = '422b4eb9c97b448689c0d444072a55ad' +APPSECRET = '371f07c8abe30577c608be6ba60198a914f98297' DEFAULT_HEADER = {'Content-Type': 'application/json'} # General Purpose Interface diff --git a/yj_room_agent/LLM/ai_service.py b/yj_room_agent/LLM/ai_service.py index 726c7c5..2105518 100644 --- a/yj_room_agent/LLM/ai_service.py +++ b/yj_room_agent/LLM/ai_service.py @@ -132,17 +132,11 @@ def book_room(data: dict, params: dict) -> str: return str(content) -''' -查询租户下预定信息 -''' -def query_booking_info(params: dict) ->str: - tenant_id = params.get('tenantId', None) - if not tenant_id: - raise Exception("tenantId 不能为空") + def query_booking_info(params: dict) -> str: - tenant_id = params.get('ytenantId', None) + tenant_id = params.get('tenantId', None) access_token = getinfo.get_access_token(tenant_id) params['access_token'] = access_token meeting_room = getinfo.query_meetingbooking_info(params) @@ -252,6 +246,8 @@ 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) @@ -305,7 +301,7 @@ def build_prompt(params): 可用会议室信息: {room_info} 请按以下步骤处理: - 1. 解析用户预订需求(时间、人数、设备要求等) + 1. 解析用户预订需求(时间、人数、设备要求等),会议室名称和type_name里面可能包含了区域信息,注意根据地理信息过滤 2. 根据可用会议室列表推荐合适选项,推荐选项时,没有用户明确需要预订哪间会议室时,不需要提取用户预订信息,直接返回推荐会议室列表,按照自然语言返回即可 3. 只有当用户确定要预订某间会议室,而不是在询问合适会议室时,请根据上下文提取用户预订信息,预订时间等信息并返回而不是直接提示预订成功,结果请只返回json格式得预订信息且不需要包含多余的描述内容以及标签等,输出结果示例如下: {book_for_mart_str} @@ -427,7 +423,7 @@ def process_query_book_room(**kwargs) -> str: book_promot = f''' 系统调用API查询当前租户下已经预订的会议室的结果如下: {result} - 请帮用户解析已有的预订会议室的结果,并根据结果给予用户相应自然语言反馈 + 请帮用户解析已有的预订会议室的结果,解析结果中需要返回会议ID,并根据结果给予用户相应自然语言反馈 ''' return book_promot @@ -439,7 +435,7 @@ def process_cancel_room_meeting(data, params) -> str: meetingId = data.get("meetingId", None) if meetingId: params["meetingId"] = meetingId - result = cancel_meeting(params=params) + result = cancel_meeting2(params=params) book_promot = f''' 系统调用API取消预订会议室的结果如下: {result} diff --git a/yj_room_agent/tools/getinfo.py b/yj_room_agent/tools/getinfo.py index 2fe77e0..18f093b 100644 --- a/yj_room_agent/tools/getinfo.py +++ b/yj_room_agent/tools/getinfo.py @@ -6,6 +6,7 @@ from yj_room_agent import settings import requests import urllib from decouple import config + APPKEY = config('APPKEY', default="") APPSECRET = config('APPSECRET', default="") @@ -24,6 +25,7 @@ CANCEL_MEETING2 = config('CANCEL_MEETING2', default="") EDIT_MEETING = config('EDIT_MEETING', default="") DEFAULT_HEADER = {'Content-Type': 'application/json'} + def check_required_params(required_fields, params): """ 检查提供的数据字典是否包含所有必需的字段,并且这些字段的值非空。 @@ -42,6 +44,8 @@ def check_required_params(required_fields, params): return False, missing_or_empty_fields else: return True, None + + def get_access_token(tenant_id): ''' :param params: keys=>[tenantId, appKey] @@ -83,6 +87,8 @@ def get_access_token(tenant_id): ''' 获取租户所在中心域名 ''' + + def get_domain(params): request_url = DEFAULT_AUTH_URL + GATEWAY_INTF print("request_url is {0}".format(request_url)) @@ -102,18 +108,22 @@ def get_domain(params): else: raise Exception(f"请求失败 状态码: {respones.status_code}") + ''' 查询会议室类型 ''' -def query_meetingroom_type(params:dict): + + +def query_meetingroom_type(params: dict): # ytenantId - params['ytenantId'] = params.pop('tenantId') - print("now params ", params) - tenant_id = params.get("ytenantId", None) + new_param = params.copy() + new_param['ytenantId'] = new_param.pop('tenantId') + print("now params ", new_param) + tenant_id = new_param.get("ytenantId", None) print("tenant_id : ", tenant_id) gateway_url, token_url = get_domain({"tenantId": tenant_id}) request_url = gateway_url + QUERY_MEETING_ROOM_TYPE - respones = requests.get(url=request_url, params=params, + respones = requests.get(url=request_url, params=new_param, headers=DEFAULT_HEADER) return respones.json() @@ -121,18 +131,21 @@ def query_meetingroom_type(params:dict): ''' 查询会议室信息 ''' -def query_meetingroom(params:dict): + + +def query_meetingroom(params: dict): + new_param = params.copy() # ytenantId - params['ytenantId'] = params.pop('tenantId') - print("now params ", params) - tenant_id = params.get("ytenantId", None) + new_param['ytenantId'] = new_param.pop('tenantId') + print("now params ", new_param) + tenant_id = new_param.get("ytenantId", None) print("tenant_id : ", tenant_id) gateway_url, token_url = get_domain({"tenantId": tenant_id}) request_url = gateway_url + QUERY_MEETING_ROOM print("request url ", request_url) - print("paramas ", params) - print("head is {0} type is {1}".format(DEFAULT_HEADER,type(DEFAULT_HEADER))) - respones = requests.get(url=request_url, params=params, + print("paramas ", new_param) + print("head is {0} type is {1}".format(DEFAULT_HEADER, type(DEFAULT_HEADER))) + respones = requests.get(url=request_url, params=new_param, headers=DEFAULT_HEADER) print("res is {0}".format(respones)) return respones.json() @@ -141,25 +154,31 @@ def query_meetingroom(params:dict): ''' 查询会议预定信息 ''' -def query_meetingbooking_info(params:dict): + + +def query_meetingbooking_info(params: dict): + new_param = params.copy() # ytenantId - params['ytenantId'] = params.pop('tenantId') - print("now params ", params) - tenant_id = params.get("ytenantId", None) + new_param['ytenantId'] = new_param.pop('tenantId') + print("now params ", new_param) + tenant_id = new_param.get("ytenantId", None) print("tenant_id : ", tenant_id) gateway_url, token_url = get_domain({"tenantId": tenant_id}) request_url = gateway_url + QUERY_MEETINGBOOKING_INFO print("request url ", request_url) - print("paramas ", params) - params['pageSize'] = 800 - respones = requests.get(url=request_url, params=params, + print("paramas ", new_param) + new_param['pageSize'] = 800 + respones = requests.get(url=request_url, params=new_param, headers=DEFAULT_HEADER) return respones.json() + ''' 预定会议室 ''' -def book_meeting_room(params:dict, data:dict): + + +def book_meeting_room(params: dict, data: dict): # tenantId print("now params ", params) tenant_id = params.get("ytenantId", None) @@ -168,9 +187,9 @@ def book_meeting_room(params:dict, data:dict): request_url = gateway_url + BOOK_MEETING_ROOM print("request url ", request_url) print("paramas ", params) - print("data: ",data) + print("data: ", data) respones = requests.post(url=request_url, params=params, - headers=DEFAULT_HEADER, data=json.dumps(data)) + headers=DEFAULT_HEADER, data=json.dumps(data)) print("respone ", respones) return respones.json() @@ -178,7 +197,9 @@ def book_meeting_room(params:dict, data:dict): ''' 预定会议 ''' -def book_meeting(params:dict, data:dict): + + +def book_meeting(params: dict, data: dict): # tenantId print("now params ", params) tenant_id = params.get("tenantId", None) @@ -187,16 +208,19 @@ def book_meeting(params:dict, data:dict): request_url = gateway_url + BOOKMEETING print("request url ", request_url) print("paramas ", params) - print("data: ",data) + print("data: ", data) respones = requests.post(url=request_url, params=params, - headers=DEFAULT_HEADER, data=json.dumps(data)) + headers=DEFAULT_HEADER, data=json.dumps(data)) print("respone ", respones) return respones.json() + ''' 会议编辑 ''' -def edit_meeting_info(params:dict, data:dict): + + +def edit_meeting_info(params: dict, data: dict): # tenantId print("now params ", params) tenant_id = params.get("tenantId", None) @@ -211,10 +235,13 @@ def edit_meeting_info(params:dict, data:dict): print("respone ", respones) return respones.json() + ''' 取消会议1 怀疑是假接口 ''' -def cancel_meeting_booking(params:dict): + + +def cancel_meeting_booking(params: dict): # tenantId tenant_id = params.pop('tenantId') print("now params ", params) @@ -224,14 +251,17 @@ def cancel_meeting_booking(params:dict): print("request url ", request_url) print("paramas ", params) respones = requests.post(url=request_url, params=params, - headers=DEFAULT_HEADER) + headers=DEFAULT_HEADER) print("respone ", respones) return respones.json() + ''' 取消会议2 ''' -def cancel_meeting(params:dict): + + +def cancel_meeting(params: dict): # tenantId tenant_id = params.get('tenantId') print("now params ", params) @@ -243,4 +273,4 @@ def cancel_meeting(params:dict): respones = requests.get(url=request_url, params=params, headers=DEFAULT_HEADER) print("respone ", respones) - return respones.json() \ No newline at end of file + return respones.json()