diff --git a/.env b/.env index 1d834b9..21a7df2 100644 --- a/.env +++ b/.env @@ -26,8 +26,7 @@ QUERY_MEETING_ROOM_TYPE = '/yonbip/uspace/external/access/getMeetingRoomType' QUERY_MEETING_ROOM = '/yonbip/uspace/external/access/getMeetingRoom' QUERY_MEETINGBOOKING_INFO = '/yonbip/uspace/external/access/getDestineInformation' BOOK_MEETING_ROOM = '/yonbip/uspace/destine/Meeting' -CANCEL_MEETING = '/yonbip/uspace/cancel/Meeting' -CANCEL_MEETING2 = '/yonbip/uspace/external/access/cancel' +CANCEL_MEETING = '/yonbip/uspace/external/access/cancel' BOOKMEETING = '/yonbip/uspace/external/access/book' EDIT_MEETING = '/yonbip/uspace/external/access/edit' diff --git a/yj_room_agent/LLM/ai_service.py b/yj_room_agent/LLM/ai_service.py index a290b28..75ca2f7 100644 --- a/yj_room_agent/LLM/ai_service.py +++ b/yj_room_agent/LLM/ai_service.py @@ -1,5 +1,5 @@ from threading import Lock -from datetime import datetime +from datetime import datetime, timedelta import requests, json from django.db.models.expressions import result @@ -20,10 +20,10 @@ BASE_URL = config('MODEL_BASE_URL', default="") def parse_time(time_str: str) -> int: try: timestamp = datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S").timestamp() - return int(timestamp) + return int(timestamp * 1000) except Exception as ee: print("解析时间错误:" + str(ee.with_traceback())) - return int(datetime.now().timestamp()) + return int(datetime.now().timestamp() * 1000) ''' @@ -39,6 +39,14 @@ def is_json(myjson): return False +def get_time_info(offset: int) -> int: + now = datetime.now() + if offset > 0: + now = now + timedelta(days=offset) + midnight = now.replace(hour=0, minute=0, second=0, microsecond=0) + return int(midnight.timestamp() * 1000) + + ''' 查询租户下所有会议室类型 ''' @@ -135,12 +143,16 @@ 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 + params['startTimeStamp'] = get_time_info(0) + params['endTimeStamp'] = get_time_info(10) meeting_room = getinfo.query_meetingbooking_info(params) result = params_filter.filter_state(meeting_room) content = json.loads(json.dumps(result)) @@ -175,20 +187,41 @@ def book_meeting(params: dict, data: dict) -> str: } params: tenantId (not null) """ + + new_data = { + "subject": "会议主题", + "meetingRoomId": data["room_id"], + "meetingRoomName": "会议室名称", + "meetingDateTimeStamp": int(datetime.now().timestamp() * 1000), + "startDateTimeStamp": parse_time(data["start_time"]), + "endDateTimeStamp": parse_time(data["end_time"]), + "meetingPersonYhtUserIds": [ + + ], + "meetingPersonAmount": data["capacity"], + "remindArray": [ + 15 + ], + "content": "会议内容", + "isSendMail": True, + "isSendMsg": True + } + 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 - book_meeting = getinfo.book_meeting(params, data) + book_meeting = getinfo.book_meeting(params, new_data) content = json.loads(json.dumps(book_meeting)) return str(content) - ''' 会议编辑 ''' + + def edit_meeting(params: dict, data: dict): """ :params: {tenant_id} @@ -214,10 +247,13 @@ def edit_meeting(params: dict, data: dict): print("content is :", content) return str(content) + ''' 第二个会议取消接口 ''' -def cancel_meeting(params: dict)->str: + + +def cancel_meeting(params: dict) -> str: """ params{ ytenantId @@ -387,7 +423,7 @@ def add_message_async(manager: DialogManager, session_id: str, role: str, conten def process_book_room(data, params) -> str: - result = book_room(data=data, params=params) + result = book_meeting(data=data, params=params) book_promot = f''' 系统调用API预订该会议室的结果如下: {result} @@ -414,6 +450,8 @@ def process_query_book_room(**kwargs) -> str: ''' 函数调用,取消会议室 ''' + + def process_cancel_room_meeting(data, params) -> str: meetingId = data.get("meetingId", None) if meetingId: @@ -462,7 +500,7 @@ def process_chat(user_id: str, user_input: str, params: dict): add_message_async(dialog_manager, user_id, 'user', user_input) resp = call_openai_api(model=MODEL_NAME, system_prompt=prompt, user_query=user_input, api_key=config('MODEL_API_KEY'), - history=history,temperature=config("MODEL_TEMPERATURE",cast=float,default=0.5)) + history=history, temperature=config("MODEL_TEMPERATURE", cast=float, default=0.5)) print(resp) content = resp["choices"][0]["message"]["content"] reasoning_content = resp["choices"][0]["message"].get('reasoning_content') diff --git a/yj_room_agent/tools/getinfo.py b/yj_room_agent/tools/getinfo.py index fa3e8b2..fc8b0f9 100644 --- a/yj_room_agent/tools/getinfo.py +++ b/yj_room_agent/tools/getinfo.py @@ -235,6 +235,8 @@ def cancel_meeting(params: dict): request_url = gateway_url + CANCEL_MEETING print("request url ", request_url) print("paramas ", params) + params['isSendMail']=True + params['isSendMsg']=True respones = requests.get(url=request_url, params=params, headers=DEFAULT_HEADER) print("respone ", respones) diff --git a/yj_room_agent/tools/params_filter.py b/yj_room_agent/tools/params_filter.py index a2de5c3..3db5100 100644 --- a/yj_room_agent/tools/params_filter.py +++ b/yj_room_agent/tools/params_filter.py @@ -23,7 +23,7 @@ def filter_params(data, endpoint_name): def filter_state(content:dict): filtered_data = [] for room in content['data']: - filtered_meetings = [meeting for meeting in room['meetingDTOList'] if meeting['state'] != 3] + filtered_meetings = [meeting for meeting in room['meetingDTOList'] if meeting['state'] in [0,1]] if filtered_meetings: # 只保留有会议的会议室 filtered_room = room.copy() filtered_room['meetingDTOList'] = filtered_meetings