From 2ef29db5fd8771793ccdd7eeefc3a2bdf10b72d4 Mon Sep 17 00:00:00 2001 From: woni <320753691@qq.com> Date: Wed, 31 Jul 2024 17:53:39 +0800 Subject: [PATCH] fix card record --- app/task.py | 85 ++++++--- app/test/test_parse_message.py | 322 +++++++++++++++++++++++++++++++++ 2 files changed, 378 insertions(+), 29 deletions(-) create mode 100644 app/test/test_parse_message.py diff --git a/app/task.py b/app/task.py index 5b81a91..d85f87f 100644 --- a/app/task.py +++ b/app/task.py @@ -28,42 +28,69 @@ def parse_history_message(data): if index == 0: sender_id = sender_id_item - if sender_id != sender_id_item: + print(f"raw msg: {item}") + + print("***************") + + item_content = json.loads(item.get("body").get("content")) + print(item_content) + + print("***************") + + message_id = item.get("message_id") + + if item_content.get("text"): + message_content_data.append(item_content.get("text")) + print(item_content.get("text")) + if ( + sender_id.startswith("cli_") + and item_content.get("text") == "@_user_1 记录问题" + ): + sender_id = sender_id_item continue - try: - item_content = json.loads(item.get("body").get("content")) + if item_content.get("content"): + tmp_message = [] - message_id = item.get("message_id") + message_content_content_data = item_content.get("content") - if item_content.get("text"): - message_content_data.append(item_content.get("text")) + tmp_content_data = [] + for message_content_content_item in message_content_content_data: + for message_content_content_item_item in message_content_content_item: + tmp_content_data.append(message_content_content_item_item) - if item_content.get("content"): - message_content_content_data = item_content.get("content") - - tmp_content_data = [] - for message_content_content_item in message_content_content_data: - for message_content_content_item_item in message_content_content_item: - tmp_content_data.append(message_content_content_item_item) - - for tmp_content_data_item in tmp_content_data: - print(tmp_content_data_item) - if tmp_content_data_item.get("tag") == "text": - message_content_data.append(tmp_content_data_item.get("text")) - if tmp_content_data_item.get("tag") == "img": - message_images_data.append( - { - "message_id": message_id, - "image_id": tmp_content_data_item.get("image_key"), - } - ) - except Exception as e: - print(e) + for tmp_content_data_item in tmp_content_data: + print(tmp_content_data_item) + if tmp_content_data_item.get("tag") == "text": + tmp_message.append(tmp_content_data_item.get("text")) + message_content_data.append(tmp_content_data_item.get("text")) + if tmp_content_data_item.get("tag") == "img": + message_images_data.append( + { + "message_id": message_id, + "image_id": tmp_content_data_item.get("image_key"), + } + ) + print("\n".join(tmp_message)) continue - print(message_content_data) - print(message_images_data) + if item_content.get("title"): + tmp_message = [] + tmp_content_data = list(chain(*item_content.get("elements"))) + for tmp_content_data_item in tmp_content_data: + if tmp_content_data_item.get("tag") == "text": + tmp_message.append(tmp_content_data_item.get("text")) + message_content_data.append(tmp_content_data_item.get("text")) + if tmp_content_data_item.get("tag") == "img": + message_images_data.append( + { + "message_id": message_id, + "image_id": tmp_content_data_item.get("image_key"), + } + ) + print("\n".join(tmp_message)) + + continue return message_content_data, message_images_data, sender_id diff --git a/app/test/test_parse_message.py b/app/test/test_parse_message.py new file mode 100644 index 0000000..fbf4346 --- /dev/null +++ b/app/test/test_parse_message.py @@ -0,0 +1,322 @@ +import json +import itertools + +data = { + "has_more": False, + "items": [ + { + "body": { + "content": '{"title":"🚩新增在线RPA流转问题:官方应用,TikTok关键词抓取红人信息,运行一段时间报错,未监听到响应数据","elements":[[{"tag":"text","text":"1、客户端版本:5.19.22\\n2、问题描述:官方应用,TikTok关键词抓取红人信息,运行一段时间报错,未监听到响应数据\\n3、公司名称:安徽米莱诺贸易有限公司\\n4、复现频率:必现\\n5、截图或录屏:"}],[{"tag":"img","image_key":"img_v3_02d9_a1932223-b776-43b9-a9c7-dba4ad27cdcg"}],[{"tag":"text","text":"6、优先级和紧急原因:紧急,客户说上次反馈过,但是工单总表里并没有记录\\n7、排查情况:无\\n8、日志文件:请"},{"tag":"at","user_id":"@_user_1","user_name":"星云"},{"tag":"text","text":"继续补充日志等文件\\nps:直接拖动文件至话题内"}],[{"tag":"hr"}],[{"tag":"text","text":"来自 "},{"tag":"a","href":"https://ying-dao.feishu.cn/base/KMoSbOwZXazlCVslCzgcpKU1nBh?ccm_open_type=im_card_automation_link","text":"在线RPA_流转产研"}]]}' + }, + "chat_id": "oc_483b96fe46b2523126d0407808088e4a", + "create_time": "1722330254498", + "deleted": False, + "mentions": [ + { + "id": "ou_57ab29dded5d4cd4fe9d8e472fdd8b25", + "id_type": "open_id", + "key": "@_user_1", + "name": "星云", + "tenant_key": "11cf67642edc175f", + } + ], + "message_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "msg_type": "interactive", + "sender": { + "id": "cli_a6d7c68aeeb9900d", + "id_type": "app_id", + "sender_type": "app", + "tenant_key": "11cf67642edc175f", + }, + "thread_id": "omt_15cd24470f69575f", + "update_time": "1722330254498", + "updated": False, + }, + { + "body": {"content": '{"text":"@_user_1 记录问题"}'}, + "chat_id": "oc_483b96fe46b2523126d0407808088e4a", + "create_time": "1722330268207", + "deleted": False, + "mentions": [ + { + "id": "ou_76322e169bb6bb8f6e1c8b6631b54d72", + "id_type": "open_id", + "key": "@_user_1", + "name": "官方应用指令", + "tenant_key": "11cf67642edc175f", + } + ], + "message_id": "om_9e914b1e2e0b6194b441c1de1642126c", + "msg_type": "text", + "parent_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "root_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "sender": { + "id": "ou_57ab29dded5d4cd4fe9d8e472fdd8b25", + "id_type": "open_id", + "sender_type": "user", + "tenant_key": "11cf67642edc175f", + }, + "thread_id": "omt_15cd24470f69575f", + "update_time": "1722330268207", + "updated": False, + }, + { + "body": { + "content": '{"text":"问题已经记录到多维表格, 及时更新工单状态💕"}' + }, + "chat_id": "oc_483b96fe46b2523126d0407808088e4a", + "create_time": "1722330273266", + "deleted": False, + "message_id": "om_718be013df88017356dec6811d34f5c0", + "msg_type": "text", + "parent_id": "om_9e914b1e2e0b6194b441c1de1642126c", + "root_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "sender": { + "id": "cli_a5110cd1da70900b", + "id_type": "app_id", + "sender_type": "app", + "tenant_key": "11cf67642edc175f", + }, + "thread_id": "omt_15cd24470f69575f", + "update_time": "1722330273266", + "updated": False, + }, + { + "body": {"content": '{"text":"@_user_1"}'}, + "chat_id": "oc_483b96fe46b2523126d0407808088e4a", + "create_time": "1722414346354", + "deleted": False, + "mentions": [ + { + "id": "ou_776e7cb5f800181ce0d4eb4a66c9e9c8", + "id_type": "open_id", + "key": "@_user_1", + "name": "驿站", + "tenant_key": "11cf67642edc175f", + } + ], + "message_id": "om_1b78f3fda48541bddbd0de9e7e38fa72", + "msg_type": "text", + "parent_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "root_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "sender": { + "id": "ou_d542891996bf1961f9a94563e6bd4d49", + "id_type": "open_id", + "sender_type": "user", + "tenant_key": "11cf67642edc175f", + }, + "thread_id": "omt_15cd24470f69575f", + "update_time": "1722414346354", + "updated": False, + }, + { + "body": {"content": '{"text":"@_user_1 远程一下"}'}, + "chat_id": "oc_483b96fe46b2523126d0407808088e4a", + "create_time": "1722414368335", + "deleted": False, + "mentions": [ + { + "id": "ou_57ab29dded5d4cd4fe9d8e472fdd8b25", + "id_type": "open_id", + "key": "@_user_1", + "name": "星云", + "tenant_key": "11cf67642edc175f", + } + ], + "message_id": "om_2b981b6611ac9216670d2bf006924d3e", + "msg_type": "text", + "parent_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "root_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "sender": { + "id": "ou_776e7cb5f800181ce0d4eb4a66c9e9c8", + "id_type": "open_id", + "sender_type": "user", + "tenant_key": "11cf67642edc175f", + }, + "thread_id": "omt_15cd24470f69575f", + "update_time": "1722414368335", + "updated": False, + }, + { + "body": { + "content": '{"text":"好的,客户说要运行十分钟左右才会出现这个错误"}' + }, + "chat_id": "oc_483b96fe46b2523126d0407808088e4a", + "create_time": "1722414475340", + "deleted": False, + "message_id": "om_3a6676adc1516bfa075076690327065f", + "msg_type": "text", + "parent_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "root_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "sender": { + "id": "ou_57ab29dded5d4cd4fe9d8e472fdd8b25", + "id_type": "open_id", + "sender_type": "user", + "tenant_key": "11cf67642edc175f", + }, + "thread_id": "omt_15cd24470f69575f", + "update_time": "1722414475340", + "updated": False, + }, + { + "body": { + "content": '{"title":"","content":[[{"tag":"img","image_key":"img_v3_02da_e7d68292-eab6-422d-9037-370eaf8cae0g","width":770,"height":520}]]}' + }, + "chat_id": "oc_483b96fe46b2523126d0407808088e4a", + "create_time": "1722414504441", + "deleted": False, + "message_id": "om_5a9e6ae5901e1c6154b7172a2fc47e42", + "msg_type": "post", + "parent_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "root_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "sender": { + "id": "ou_57ab29dded5d4cd4fe9d8e472fdd8b25", + "id_type": "open_id", + "sender_type": "user", + "tenant_key": "11cf67642edc175f", + }, + "thread_id": "omt_15cd24470f69575f", + "update_time": "1722414504441", + "updated": False, + }, + { + "body": {"content": '{"text":"@_user_1 记录问题"}'}, + "chat_id": "oc_483b96fe46b2523126d0407808088e4a", + "create_time": "1722414646073", + "deleted": False, + "mentions": [ + { + "id": "ou_76322e169bb6bb8f6e1c8b6631b54d72", + "id_type": "open_id", + "key": "@_user_1", + "name": "官方应用指令", + "tenant_key": "11cf67642edc175f", + } + ], + "message_id": "om_d5b9f34ce296f06ca30d3c4728c6cd83", + "msg_type": "text", + "parent_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "root_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "sender": { + "id": "ou_d542891996bf1961f9a94563e6bd4d49", + "id_type": "open_id", + "sender_type": "user", + "tenant_key": "11cf67642edc175f", + }, + "thread_id": "omt_15cd24470f69575f", + "update_time": "1722414646073", + "updated": False, + }, + { + "body": { + "content": '{"text":"问题已经记录到多维表格, 及时更新工单状态💕"}' + }, + "chat_id": "oc_483b96fe46b2523126d0407808088e4a", + "create_time": "1722414652433", + "deleted": False, + "message_id": "om_bf8f3d909dbe536168e5ee12bccd5f18", + "msg_type": "text", + "parent_id": "om_d5b9f34ce296f06ca30d3c4728c6cd83", + "root_id": "om_45c9b5c6900534ffe59b146c5104c70f", + "sender": { + "id": "cli_a5110cd1da70900b", + "id_type": "app_id", + "sender_type": "app", + "tenant_key": "11cf67642edc175f", + }, + "thread_id": "omt_15cd24470f69575f", + "update_time": "1722414652433", + "updated": False, + }, + ], + "page_token": "", +} + + +def parse_history_message(data): + sender_id = "" + + message_content_data = [] + message_images_data = [] + + items = data.get("items") + + for index, item in enumerate(items): + print("=======================") + + sender_id_item = item.get("sender").get("id") + if index == 0: + sender_id = sender_id_item + + print(f"raw msg: {item}") + + print("***************") + + item_content = json.loads(item.get("body").get("content")) + print(item_content) + + print("***************") + + message_id = item.get("message_id") + + if item_content.get("text"): + message_content_data.append(item_content.get("text")) + print(item_content.get("text")) + if ( + sender_id.startswith("cli_") + and item_content.get("text") == "@_user_1 记录问题" + ): + sender_id = sender_id_item + continue + + if item_content.get("content"): + tmp_message = [] + + message_content_content_data = item_content.get("content") + + tmp_content_data = [] + for message_content_content_item in message_content_content_data: + for message_content_content_item_item in message_content_content_item: + tmp_content_data.append(message_content_content_item_item) + + for tmp_content_data_item in tmp_content_data: + print(tmp_content_data_item) + if tmp_content_data_item.get("tag") == "text": + tmp_message.append(tmp_content_data_item.get("text")) + message_content_data.append(tmp_content_data_item.get("text")) + if tmp_content_data_item.get("tag") == "img": + message_images_data.append( + { + "message_id": message_id, + "image_id": tmp_content_data_item.get("image_key"), + } + ) + print("\n".join(tmp_message)) + continue + + if item_content.get("title"): + tmp_message = [] + tmp_content_data = list(itertools.chain(*item_content.get("elements"))) + for tmp_content_data_item in tmp_content_data: + if tmp_content_data_item.get("tag") == "text": + tmp_message.append(tmp_content_data_item.get("text")) + message_content_data.append(tmp_content_data_item.get("text")) + if tmp_content_data_item.get("tag") == "img": + message_images_data.append( + { + "message_id": message_id, + "image_id": tmp_content_data_item.get("image_key"), + } + ) + print("\n".join(tmp_message)) + + continue + + return message_content_data, message_images_data, sender_id + + +if __name__ == "__main__": + res = parse_history_message(data) + + for item in res: + print(item)