From 25bf0a51088fa0d0acdc39c6096cc45d699f63a1 Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期四, 13 二月 2025 10:53:23 +0800 Subject: [PATCH] merge master --- app/models/session_model.py | 1 app/service/ragflow.py | 4 app/api/chat.py | 13 app/service/difyService.py | 4 app/api/agent.py | 31 +++ app/config/env_conf/resource.json | 376 ++++++++++++++++++------------------ app/api/auth.py | 4 app/init_config/init_run_data.py | 21 + app/config/env_conf/admin.yaml | 12 + app/service/session.py | 9 app/api/files.py | 2 app/service/v2/initialize_data.py | 39 +++ app/config/env_conf/menu_conf.json | 29 -- 13 files changed, 314 insertions(+), 231 deletions(-) diff --git a/app/api/agent.py b/app/api/agent.py index 0fb5f10..fd31c96 100644 --- a/app/api/agent.py +++ b/app/api/agent.py @@ -233,6 +233,7 @@ tmp_data["question"] = i.get("content") elif i.get("role") == "assistant": if isinstance(i.get("content"), dict): + content = i.get("content", {}) tmp_data["answer"] = i.get("content", {}).get("answer") if "file_name" in i.get("content", {}): tmp_data["files"] = [{"file_name": i.get("content", {}).get("file_name"), @@ -242,6 +243,36 @@ if "download_url" in i.get("content", {}): tmp_data["download_url"] = i.get("content", {}).get("download_url") + if "node_list" in content: + node_dict = { + "node_data": [], + # {"title": "鍘婚櫎鍐椾綑", # 鑺傜偣鍚嶇О "status": "succeeded", # 鑺傜偣鐘舵��"created_at": 1735817337, # 寮�濮嬫椂闂�"finished_at": 1735817337, # 缁撴潫鏃堕棿"error": "" # 閿欒鏃ュ織} + "total_tokens": 0, # 鑺辫垂token鏁� + "created_at": 0, # 寮�濮嬫椂闂� + "finished_at": 0, # 缁撴潫鏃堕棿 + "elapsed_time": 0, # 缁撴潫鏃堕棿 + "status": "succeeded", # 宸ヤ綔娴佺姸鎬� + "error": "", # 閿欒鏃ュ織 + } + for node in content["node_list"]: + if node.get("event") == "node_finished": + node_dict["node_data"].append({ + "title": node.get("data", {}).get("title", ""), + "status": node.get("data", {}).get("status", ""), + "created_at": node.get("data", {}).get("created_at", 0), + "finished_at": node.get("data", {}).get("finished_at", 0), + "node_type": node.get("data", {}).get("node_type", 0), + "elapsed_time": node.get("data", {}).get("elapsed_time", 0), + "error": node.get("data", {}).get("error", ""), + }) + elif node.get("event") == "workflow_finished": + node_dict["total_tokens"] = node.get("data", {}).get("total_tokens", 0) + node_dict["created_at"] = node.get("data", {}).get("created_at", 0) + node_dict["finished_at"] = node.get("data", {}).get("finished_at", 0) + node_dict["status"] = node.get("data", {}).get("status", "") + node_dict["error"] = node.get("data", {}).get("error", "") + node_dict["elapsed_time"] = node.get("data", {}).get("elapsed_time", 0) + tmp_data["workflow"] = node_dict else: tmp_data["answer"] = i.get("content") data.append(tmp_data) diff --git a/app/api/auth.py b/app/api/auth.py index da59d89..b43e9d1 100644 --- a/app/api/auth.py +++ b/app/api/auth.py @@ -126,14 +126,16 @@ continue try: name = login_data.username + email = "" app_password = login_data.password user_app = await UserAppDao(db).get_data_by_id(user.id, app["id"]) if user_app: name = user_app.username + email = user_app.email app_password = user_app.decrypted_password(user_app.password) else: await update_user_info(db, user.id) - token = await service.login(name, app_password) + token = await service.login(name, app_password,email=email) token_dict[app["id"]] = token except Exception as e: return Response(code=500, msg=f"Failed to login with {app['id']}: {str(e)}") diff --git a/app/api/chat.py b/app/api/chat.py index 6980d10..2c03a58 100644 --- a/app/api/chat.py +++ b/app/api/chat.py @@ -1,6 +1,5 @@ import json import re -import uuid from copy import deepcopy from fastapi import WebSocket, WebSocketDisconnect, APIRouter, Depends @@ -231,7 +230,8 @@ question, agent_id, AgentType.BASIC, - current_user.id + current_user.id, + {"role": "user", "content": question} ) except Exception as e: logger.error(e) @@ -345,7 +345,8 @@ question, agent_id, AgentType.DIFY, - current_user.id + current_user.id, + {"role": "user", "content": question} ) conversation_id = session.conversation_id except Exception as e: @@ -806,7 +807,7 @@ result = {"message": f"鍐呴儴閿欒锛� {e2}", "type": "close"} await websocket.send_json(result) print(f"Error process message of ragflow: {e2}") - elif agent.type == "documentIa": + elif chat_type == "documentIa": token = DfTokenDao(db).get_token_by_id(DOCUMENT_IA_QUESTIONS) # print(token) if not token: @@ -828,7 +829,8 @@ question, agent_id, AgentType.DIFY, - current_user.id + current_user.id, + {"role": "user", "content": question} ) conversation_id = session.conversation_id except Exception as e: @@ -929,7 +931,6 @@ result = {"message": f"鍐呴儴閿欒锛� {e2}", "type": "close"} await websocket.send_json(result) print(f"Error process message of ragflow: {e2}") - # 鍚姩浠诲姟澶勭悊瀹㈡埛绔秷鎭� tasks = [ diff --git a/app/api/files.py b/app/api/files.py index c9f0524..db8936b 100644 --- a/app/api/files.py +++ b/app/api/files.py @@ -118,7 +118,7 @@ raise HTTPException(status_code=500, detail=str(e)) elif agent.chat_type == "reportWorkflow" or agent.chat_type == "documentIa" or agent.chat_type == "paperTalk": token_dict = { - "reportWorkflow": DOCUMENT_TO_REPORT, + "reportWorkflow": DOCUMENT_TO_REPORT_TITLE, "documentIa": DOCUMENT_IA_QUESTIONS, "paperTalk": DOCUMENT_TO_PAPER, } diff --git a/app/config/env_conf/admin.yaml b/app/config/env_conf/admin.yaml new file mode 100644 index 0000000..3821bfd --- /dev/null +++ b/app/config/env_conf/admin.yaml @@ -0,0 +1,12 @@ +smart_server: + account: administer + password: basic@2025 + +ragflow_app: + id: 2c039666c29d11efa4670242ac1b0006 + account: admin@example.com + password: basic@2025 + +dify_app: + account: admin@mail.com + password: basic@2025 \ No newline at end of file diff --git a/app/config/env_conf/menu_conf.json b/app/config/env_conf/menu_conf.json index fac6e33..c8750b2 100644 --- a/app/config/env_conf/menu_conf.json +++ b/app/config/env_conf/menu_conf.json @@ -1,23 +1,6 @@ { "data": [ { - "id": 10, - "title": "鎶ュ憡鐢熸垚", - "icon": "2", - "img": "/src/assets/index/2.png", - "desc": "鍩轰簬鎮ㄥ垱寤虹殑鎶ュ憡鏍煎紡鍜岀煡璇嗗簱涓殑鏂囨。鍐呭锛屽揩閫熺敓鎴愬畾鍒舵姤鍛婏紝骞舵敮鎸佷竴閿笅杞姐��", - "describe": "鍩轰簬鎮ㄥ垱寤虹殑鎶ュ憡鏍煎紡鍜岀煡璇嗗簱涓殑鏂囨。鍐呭锛屽揩閫熺敓鎴愬畾鍒舵姤鍛婏紝骞舵敮鎸佷竴閿笅杞姐��", - "rank": 100, - "dialog": [ - { - "id": "80ee430a-e396-48c4-a12c-7c7cdf5eda51", - "chat_id": "80ee430a-e396-48c4-a12c-7c7cdf5eda51", - "chat_type": "report", - "agentType": 2 - } - ] - }, - { "id": 1, "title": "鎶ヨ〃鍚堝苟", "icon": "6", @@ -155,7 +138,7 @@ }, { "id": 9, - "title": "鏂囨。鎶ュ憡", + "title": "鎶ュ憡鐢熸垚", "icon": "2", "img": "/src/assets/index/2.png", "desc": "鍩轰簬鎮ㄥ垱寤虹殑鎶ュ憡鏍煎紡鍜屼笂浼犵殑鏂囨。鍐呭锛屽揩閫熺敓鎴愬畾鍒舵姤鍛婏紝骞舵敮鎸佷竴閿笅杞姐��", @@ -163,13 +146,19 @@ "rank": 91, "dialog": [ { - "id": "72a69e47-458d-47f9-b534-1859e5da244f", + "id": "87b8e17c-594d-424f-b9f8-0b56036904c9", "chat_id": "basic_report_clean", "chat_type": "reportWorkflow", "agentType": 4 }, { - "id": "6eda0700-6273-488d-a97c-88d315bd9d8f", + "id": "61d26deb-9371-4f9c-b61b-b9f9a24a9188", + "chat_id": "basic_report_clean", + "chat_type": "reportWorkflow", + "agentType": 4 + }, + { + "id": "d6eea92d-444a-4658-b9e7-9ab7bd5cb19d", "chat_id": "basic_report_clean", "chat_type": "reportWorkflow", "agentType": 4 diff --git a/app/config/env_conf/resource.json b/app/config/env_conf/resource.json index 2530c6d..b0cb111 100644 --- a/app/config/env_conf/resource.json +++ b/app/config/env_conf/resource.json @@ -1,8 +1,8 @@ [ { "id": "1eed48e2-d510-42f2-9495-bc299bae237b", - "created_at": "8/8/2024 19:21:42", - "updated_at": "8/8/2024 19:21:42", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "root", "url": "root", "path": null, @@ -15,14 +15,14 @@ "resource_type_id": "3", "resource_id": null, "status": "1", - "hidden": null, + "hidden": 0, "children": [ { - "id": "76e81844-c3a6-4ea0-882f-150be2987d9d", - "created_at": "23/12/2024 09:50:31", - "updated_at": "23/12/2024 09:50:31", + "id": "8eadbabd-cf55-469b-ad74-4f9fc80631a1", + "created_at": "10/1/2025 18:48:05", + "updated_at": "10/1/2025 18:48:05", "name": "鏅鸿兘浣撹鎯�", - "url": "/intelligent/detail", + "url": "DifyDetail", "path": "/intelligent/detail", "perms": "system:intelligent:detail", "description": "", @@ -32,14 +32,31 @@ "canbdeeleted": null, "resource_type_id": "3", "resource_id": "1eed48e2-d510-42f2-9495-bc299bae237b", - "status": "2", + "status": "1", "hidden": 0 }, - + { + "id": "21e90633-bb76-4419-8925-c20b9ccd33f1", + "created_at": "10/1/2025 18:48:05", + "updated_at": "10/1/2025 18:48:05", + "name": "鐭ヨ瘑搴撹鎯�", + "url": "KnowledgeDetail", + "path": "/knowledge/detail", + "perms": "system:knowledge:detail", + "description": "", + "icon": "", + "seq": 0, + "target": null, + "canbdeeleted": null, + "resource_type_id": "3", + "resource_id": "1eed48e2-d510-42f2-9495-bc299bae237b", + "status": "1", + "hidden": 0 + }, { "id": "3750795c-404b-488b-8080-89c037b4a187", - "created_at": "18/12/2024 19:20:09", - "updated_at": "20/12/2024 11:38:54", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "灏忔暟", "url": "Xiaoshu", "path": "/xiaoshu", @@ -56,8 +73,8 @@ }, { "id": "3ea0f0b8-5160-4005-91d6-7c6650a5934c", - "created_at": "20/12/2024 11:38:54", - "updated_at": "20/12/2024 11:38:54", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "浼氳瘽鍘嗗彶", "url": "ConversationHistory", "path": "/chat/history", @@ -74,8 +91,8 @@ }, { "id": "6469b565-908a-4771-a9e3-1cf8651b26f4", - "created_at": "12/9/2024 08:01:13", - "updated_at": "20/12/2024 11:38:54", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "浼氳瘽", "url": "ConversationQA", "path": "/chat/qa", @@ -88,12 +105,12 @@ "resource_type_id": "0", "resource_id": "1eed48e2-d510-42f2-9495-bc299bae237b", "status": "1", - "hidden": null + "hidden": 0 }, { "id": "6b3640d2-6142-4dce-b09b-ce11f9e6c89c", - "created_at": "20/12/2024 11:38:54", - "updated_at": "20/12/2024 11:38:54", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "浼氳瘽杩涜涓�", "url": "ConversationQA", "path": "/chat/qa", @@ -110,8 +127,8 @@ }, { "id": "6da7445a-5980-4380-ab1d-75021c1dd269", - "created_at": "18/12/2024 19:20:09", - "updated_at": "20/12/2024 11:38:54", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鏅鸿兘浣�", "url": "Intelligent", "path": "/intelligent", @@ -127,9 +144,27 @@ "hidden": 0 }, { + "id": "a4931c80-c890-4142-a698-87940c937b57", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", + "name": "浼氳瘽闈㈡澘", + "url": "ConversationBoard", + "path": "/chat/board", + "perms": "system:conversation:board", + "description": "", + "icon": "", + "seq": 0, + "target": null, + "canbdeeleted": null, + "resource_type_id": "3", + "resource_id": "1eed48e2-d510-42f2-9495-bc299bae237b", + "status": "1", + "hidden": 0 + }, + { "id": "9fb9456c-1000-485e-9cbb-905d951b86c1", - "created_at": "18/12/2024 19:20:09", - "updated_at": "20/12/2024 11:38:54", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鐭ヨ瘑搴撶鐞�", "url": "Knowledge", "path": "/knowledge", @@ -145,27 +180,9 @@ "hidden": 0, "children": [ { - "id": "2d1c2831-79f4-4817-b79f-be4e49687bd1", - "created_at": "19/12/2024 10:08:40", - "updated_at": "24/12/2024 19:15:20", - "name": "鐭ヨ瘑搴撹鎯�", - "url": "KnowledgeDetail", - "path": "detail", - "perms": "system:knowledge:detail", - "description": "", - "icon": "", - "seq": 0, - "target": null, - "canbdeeleted": null, - "resource_type_id": "3", - "resource_id": "9fb9456c-1000-485e-9cbb-905d951b86c1", - "status": "1", - "hidden": 0 - }, - { "id": "242060f6-741e-423a-8634-2f7ece1f0c6d", - "created_at": "19/12/2024 10:08:40", - "updated_at": "24/12/2024 19:15:20", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鐭ヨ瘑搴撳垹闄�", "url": "-", "path": "-", @@ -182,8 +199,8 @@ }, { "id": "25722c9e-63fe-4c80-8c05-5fcb9fb58d01", - "created_at": "19/12/2024 10:08:40", - "updated_at": "24/12/2024 19:15:20", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鐭ヨ瘑搴撴柊澧�", "url": "-", "path": "-", @@ -197,31 +214,31 @@ "resource_id": "9fb9456c-1000-485e-9cbb-905d951b86c1", "status": "0", "hidden": 0 + }, + { + "id": "91be8704-d6ac-4941-ab9b-02ebfd9c56a3", + "created_at": "10/1/2025 17:51:51", + "updated_at": "10/1/2025 18:48:05", + "name": "鏂囨。涓婁紶", + "url": "-", + "path": "-", + "perms": "system:knowledgeLib:upload", + "description": "", + "icon": "", + "seq": 0, + "target": null, + "canbdeeleted": null, + "resource_type_id": "1", + "resource_id": "9fb9456c-1000-485e-9cbb-905d951b86c1", + "status": "1", + "hidden": 0 } ] }, { - "id": "a4931c80-c890-4142-a698-87940c937b57", - "created_at": "20/12/2024 11:38:54", - "updated_at": "20/12/2024 11:38:54", - "name": "浼氳瘽闈㈡澘", - "url": "ConversationBoard", - "path": "/chat/board", - "perms": "system:conversation:board", - "description": "", - "icon": "", - "seq": 0, - "target": null, - "canbdeeleted": null, - "resource_type_id": "3", - "resource_id": "1eed48e2-d510-42f2-9495-bc299bae237b", - "status": "1", - "hidden": 0 - }, - { "id": "online", - "created_at": "25/8/2015 10:34:53", - "updated_at": "20/12/2024 11:38:54", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "妯″瀷绠$悊", "url": "Model", "path": "/model", @@ -234,12 +251,12 @@ "resource_type_id": "0", "resource_id": "1eed48e2-d510-42f2-9495-bc299bae237b", "status": "1", - "hidden": null + "hidden": 0 }, { "id": "xtgl", - "created_at": "25/8/2015 10:34:53", - "updated_at": "20/12/2024 11:38:54", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鏉冮檺绠$悊", "url": "layout/LayoutPermission", "path": "/permission", @@ -252,12 +269,12 @@ "resource_type_id": "0", "resource_id": "1eed48e2-d510-42f2-9495-bc299bae237b", "status": "1", - "hidden": null, + "hidden": 0, "children": [ { "id": "0642e4a6-3d48-4635-ba2a-bf4e39c351ed", - "created_at": "28/10/2024 07:38:41", - "updated_at": "18/12/2024 20:05:23", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鐢ㄦ埛缁勭鐞�", "url": "PermissionGroup", "path": "/permission/group", @@ -270,12 +287,12 @@ "resource_type_id": "0", "resource_id": "xtgl", "status": "1", - "hidden": null, + "hidden": 0, "children": [ { "id": "0bcb1f37-f87e-4f47-ba72-a2e194884b8f", - "created_at": "28/10/2024 07:41:16", - "updated_at": "18/12/2024 15:09:28", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "缂栬緫鐢ㄦ埛缁�", "url": "/base/syuser!update", "path": "", @@ -288,13 +305,12 @@ "resource_type_id": "1", "resource_id": "0642e4a6-3d48-4635-ba2a-bf4e39c351ed", "status": "1", - "hidden": null + "hidden": 0 }, - { "id": "2648f4bd-b5d5-4a34-8b9c-128fd970b014", - "created_at": "18/12/2024 15:09:28", - "updated_at": "18/12/2024 15:09:28", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鐢ㄦ埛缁勬垚鍛樼鐞�", "url": "-", "path": "", @@ -309,11 +325,10 @@ "status": "1", "hidden": 0 }, - { "id": "3daf1a03-c0c9-4ebd-935d-fe46561971fb", - "created_at": "28/10/2024 07:46:14", - "updated_at": "28/10/2024 07:46:41", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鐢ㄦ埛缁勫垪琛�", "url": "/base/syuser!grid", "path": null, @@ -326,32 +341,12 @@ "resource_type_id": "1", "resource_id": "0642e4a6-3d48-4635-ba2a-bf4e39c351ed", "status": "1", - "hidden": null - }, - - { - "id": "72fe917f-70ee-4cbf-8c21-f1852f3ef037", - "created_at": "18/12/2024 15:09:28", - "updated_at": "19/12/2024 16:08:38", - "name": "鐢ㄦ埛缁勬潈闄愮鐞�", - "url": "-", - "path": "", - "perms": "system:group:permissionConfig", - "description": "", - "icon": "", - "seq": 0, - "target": null, - "canbdeeleted": null, - "resource_type_id": "1", - "resource_id": "0642e4a6-3d48-4635-ba2a-bf4e39c351ed", - "status": "1", "hidden": 0 }, - { "id": "5d9ab44e-488c-4dd8-8688-56650393fab1", - "created_at": "18/12/2024 11:35:02", - "updated_at": "18/12/2024 11:35:02", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鍒犻櫎鐢ㄦ埛缁�", "url": "-", "path": "", @@ -366,11 +361,28 @@ "status": "1", "hidden": 0 }, - + { + "id": "72fe917f-70ee-4cbf-8c21-f1852f3ef037", + "created_at": "26/12/2024 18:45:57", + "updated_at": "10/1/2025 18:48:05", + "name": "鐢ㄦ埛缁勬潈闄愮鐞�", + "url": "-", + "path": "-", + "perms": "system:group:permissionConfig", + "description": "", + "icon": "", + "seq": 0, + "target": null, + "canbdeeleted": null, + "resource_type_id": "1", + "resource_id": "0642e4a6-3d48-4635-ba2a-bf4e39c351ed", + "status": "1", + "hidden": 0 + }, { "id": "f2b2c9be-1c39-4416-b3c7-21891fc28f84", - "created_at": "28/10/2024 07:56:04", - "updated_at": "28/10/2024 07:56:04", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "娣诲姞鐢ㄦ埛缁�", "url": "/base/sygroup!save", "path": null, @@ -383,14 +395,14 @@ "resource_type_id": "1", "resource_id": "0642e4a6-3d48-4635-ba2a-bf4e39c351ed", "status": "1", - "hidden": null + "hidden": 0 } ] }, { "id": "jggl", - "created_at": "25/8/2015 10:34:53", - "updated_at": "18/12/2024 20:05:23", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鏈烘瀯绠$悊", "url": "PermissionOrganization", "path": "/permission/org", @@ -403,12 +415,12 @@ "resource_type_id": "0", "resource_id": "xtgl", "status": "1", - "hidden": null, + "hidden": 0, "children": [ { "id": "jgbj", - "created_at": "25/8/2015 10:34:53", - "updated_at": "25/5/2022 00:39:56", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "缂栬緫鏈烘瀯", "url": "/base/syorganization!update", "path": null, @@ -421,12 +433,12 @@ "resource_type_id": "1", "resource_id": "jggl", "status": "1", - "hidden": null + "hidden": 0 }, { "id": "jglb", - "created_at": "25/8/2015 10:34:53", - "updated_at": "28/11/2016 14:09:52", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鏈烘瀯鍒楄〃", "url": "/base/syorganization!treeGrid", "path": null, @@ -439,12 +451,12 @@ "resource_type_id": "1", "resource_id": "jggl", "status": "1", - "hidden": null + "hidden": 0 }, { "id": "jgsc", - "created_at": "25/8/2015 10:34:53", - "updated_at": "18/12/2024 11:35:02", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鍒犻櫎鏈烘瀯", "url": "/base/syorganization!delete", "path": "", @@ -457,12 +469,12 @@ "resource_type_id": "1", "resource_id": "jggl", "status": "1", - "hidden": null + "hidden": 0 }, { "id": "jgtj", - "created_at": "25/8/2015 10:34:53", - "updated_at": "25/8/2015 10:34:53", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "娣诲姞鏈烘瀯", "url": "/base/syorganization!save", "path": null, @@ -475,14 +487,14 @@ "resource_type_id": "1", "resource_id": "jggl", "status": "1", - "hidden": null + "hidden": 0 } ] }, { "id": "jsgl", - "created_at": "25/8/2015 10:34:53", - "updated_at": "18/12/2024 20:05:23", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "瑙掕壊绠$悊", "url": "PermissionRole", "path": "/permission/role", @@ -495,12 +507,12 @@ "resource_type_id": "0", "resource_id": "xtgl", "status": "1", - "hidden": null, + "hidden": 0, "children": [ { "id": "00b61433-a5cd-46e9-a867-2e249dd310f4", - "created_at": "18/12/2024 11:35:02", - "updated_at": "18/12/2024 11:35:02", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "瑙掕壊鏉冮檺閰嶇疆", "url": "-", "path": "", @@ -517,8 +529,8 @@ }, { "id": "f9947112-c8e4-42cd-ba3a-2612eb373564", - "created_at": "18/12/2024 11:35:02", - "updated_at": "18/12/2024 11:35:02", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "瑙掕壊閮ㄩ棬閰嶇疆", "url": "-", "path": "", @@ -535,8 +547,8 @@ }, { "id": "jsbj", - "created_at": "25/8/2015 10:34:53", - "updated_at": "25/8/2015 10:34:53", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "缂栬緫瑙掕壊", "url": "/base/syrole!update", "path": null, @@ -549,12 +561,12 @@ "resource_type_id": "1", "resource_id": "jsgl", "status": "1", - "hidden": null + "hidden": 0 }, { "id": "jslb", - "created_at": "25/8/2015 10:34:53", - "updated_at": "25/8/2015 10:34:53", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "瑙掕壊鍒楄〃", "url": "/base/syrole!grid", "path": null, @@ -567,12 +579,12 @@ "resource_type_id": "1", "resource_id": "jsgl", "status": "1", - "hidden": null + "hidden": 0 }, { "id": "jssc", - "created_at": "25/8/2015 10:34:53", - "updated_at": "18/12/2024 11:35:02", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鍒犻櫎瑙掕壊", "url": "/base/syrole!delete", "path": "", @@ -585,12 +597,12 @@ "resource_type_id": "1", "resource_id": "jsgl", "status": "1", - "hidden": null + "hidden": 0 }, { "id": "jstj", - "created_at": "25/8/2015 10:34:53", - "updated_at": "25/8/2015 10:34:53", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "娣诲姞瑙掕壊", "url": "/base/syrole!save", "path": null, @@ -603,15 +615,14 @@ "resource_type_id": "1", "resource_id": "jsgl", "status": "1", - "hidden": null + "hidden": 0 } ] }, - { "id": "yhgl", - "created_at": "25/8/2015 10:34:53", - "updated_at": "18/12/2024 20:05:23", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鐢ㄦ埛绠$悊", "url": "PermissionAccount", "path": "/permission/account", @@ -624,12 +635,12 @@ "resource_type_id": "0", "resource_id": "xtgl", "status": "1", - "hidden": null, + "hidden": 0, "children": [ { "id": "07417a54-4afc-45ec-84ee-c59baf7d45b4", - "created_at": "18/12/2024 11:35:02", - "updated_at": "18/12/2024 11:35:02", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鐢ㄦ埛瑙掕壊", "url": "-", "path": "", @@ -644,11 +655,10 @@ "status": "1", "hidden": 0 }, - { "id": "a06316f1-b7e4-48b8-80c8-49b1dbb79c4a", - "created_at": "18/12/2024 11:35:02", - "updated_at": "18/12/2024 11:35:02", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "閲嶅埗瀵嗙爜", "url": "-", "path": "", @@ -663,11 +673,10 @@ "status": "0", "hidden": 0 }, - { "id": "e368cae2-96b6-46e5-b537-946a8dc5ede6", - "created_at": "18/12/2024 11:35:02", - "updated_at": "18/12/2024 11:35:02", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "閮ㄩ棬閰嶇疆", "url": "-", "path": "", @@ -682,11 +691,10 @@ "status": "1", "hidden": 0 }, - { "id": "yhbj", - "created_at": "25/8/2015 10:34:53", - "updated_at": "25/8/2015 10:34:53", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "缂栬緫鐢ㄦ埛", "url": "/base/syuser!update", "path": null, @@ -699,13 +707,12 @@ "resource_type_id": "1", "resource_id": "yhgl", "status": "1", - "hidden": null + "hidden": 0 }, - { "id": "yhlb", - "created_at": "25/8/2015 10:34:53", - "updated_at": "25/8/2015 10:34:53", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鐢ㄦ埛鍒楄〃", "url": "/base/syuser!grid", "path": null, @@ -718,13 +725,12 @@ "resource_type_id": "1", "resource_id": "yhgl", "status": "1", - "hidden": null + "hidden": 0 }, - { "id": "yhsc", - "created_at": "25/8/2015 10:34:53", - "updated_at": "18/12/2024 11:35:02", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鍒犻櫎鐢ㄦ埛", "url": "/base/syuser!delete", "path": "", @@ -737,13 +743,12 @@ "resource_type_id": "1", "resource_id": "yhgl", "status": "1", - "hidden": null + "hidden": 0 }, - { "id": "yhtj", - "created_at": "25/8/2015 10:34:53", - "updated_at": "25/8/2015 10:34:53", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "娣诲姞鐢ㄦ埛", "url": "/base/syuser!save", "path": null, @@ -756,14 +761,14 @@ "resource_type_id": "1", "resource_id": "yhgl", "status": "1", - "hidden": null + "hidden": 0 } ] }, { "id": "zygl", - "created_at": "25/8/2015 10:34:53", - "updated_at": "18/12/2024 20:05:23", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "璧勬簮绠$悊", "url": "PermissionResource", "path": "/permission/resource", @@ -776,12 +781,12 @@ "resource_type_id": "0", "resource_id": "xtgl", "status": "1", - "hidden": null, + "hidden": 0, "children": [ { "id": "zybj", - "created_at": "25/8/2015 10:34:53", - "updated_at": "5/9/2024 03:14:57", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "缂栬緫璧勬簮", "url": "/base/syresource!update", "path": null, @@ -794,13 +799,12 @@ "resource_type_id": "1", "resource_id": "zygl", "status": "1", - "hidden": null + "hidden": 0 }, - { "id": "zylb", - "created_at": "25/8/2015 10:34:53", - "updated_at": "18/12/2024 11:35:02", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "璧勬簮鍒楄〃", "url": "/base/syresource!treeGrid", "path": "", @@ -813,13 +817,12 @@ "resource_type_id": "1", "resource_id": "zygl", "status": "1", - "hidden": null + "hidden": 0 }, - { "id": "zysc", - "created_at": "25/8/2015 10:34:53", - "updated_at": "18/12/2024 11:35:02", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "鍒犻櫎璧勬簮", "url": "/base/syresource!delete", "path": "", @@ -832,13 +835,12 @@ "resource_type_id": "1", "resource_id": "zygl", "status": "1", - "hidden": null + "hidden": 0 }, - { "id": "zytj", - "created_at": "25/8/2015 10:34:53", - "updated_at": "25/8/2015 10:34:53", + "created_at": "26/12/2024 18:45:57", + "updated_at": "26/12/2024 18:45:57", "name": "娣诲姞璧勬簮", "url": "/base/syresource!save", "path": null, @@ -851,7 +853,7 @@ "resource_type_id": "1", "resource_id": "zygl", "status": "1", - "hidden": null + "hidden": 0 } ] } @@ -859,4 +861,4 @@ } ] } -] +] \ No newline at end of file diff --git a/app/init_config/init_run_data.py b/app/init_config/init_run_data.py index 8bcff03..02283f4 100644 --- a/app/init_config/init_run_data.py +++ b/app/init_config/init_run_data.py @@ -1,17 +1,22 @@ from app.models.base_model import SessionLocal from app.service.v2.initialize_data import dialog_menu_sync, default_group_sync, default_role_sync, app_register_sync, \ - basic_agent_sync, admin_account_sync -from app.task.fetch_agent import sync_resources_from_json + basic_agent_sync, admin_account_sync, admin_user_sync async def sync_default_data(): db = SessionLocal() - await dialog_menu_sync(db) # 灏忔暟 - await default_group_sync(db) # 榛樿缁� - await default_role_sync(db) # 榛樿瑙掕壊 - await app_register_sync(db) # 娉ㄥ唽鐨勫簲鐢� - await basic_agent_sync(db) # 寮�鍙戠殑agent - await admin_account_sync(db) # 瓒呯璐﹀彿 + try: + await dialog_menu_sync(db) # 灏忔暟 + await default_group_sync(db) # 榛樿缁� + await default_role_sync(db) # 榛樿瑙掕壊 + await app_register_sync(db) # 娉ㄥ唽鐨勫簲鐢� + await basic_agent_sync(db) # 寮�鍙戠殑agent + await admin_account_sync(db) # + await admin_user_sync(db) # + except Exception as e: + print(e) + finally: + db.close() # await default_role_sync(db) # 椤甸潰璧勬簮閰嶇疆淇℃伅 # await default_role_sync(db) # 榛樿鐨勮鑹茶祫婧� diff --git a/app/models/session_model.py b/app/models/session_model.py index d91a2b1..5765a44 100644 --- a/app/models/session_model.py +++ b/app/models/session_model.py @@ -33,6 +33,7 @@ 'name': self.name, 'agent_type': self.agent_type, 'agent_id': self.agent_id, + 'workflow': self.workflow if self.workflow else 0, 'create_date': self.create_date.strftime("%Y-%m-%d %H:%M:%S"), 'update_date': self.update_date.strftime("%Y-%m-%d %H:%M:%S"), } diff --git a/app/service/difyService.py b/app/service/difyService.py index 3c67d09..21117e8 100644 --- a/app/service/difyService.py +++ b/app/service/difyService.py @@ -72,9 +72,9 @@ # print(response.text) return self._handle_response(response) - async def login(self, username: str, password: str, remember_me=True, invite_token:str="") -> str: + async def login(self, username: str, password: str, remember_me=True, invite_token:str="", email="") -> str: # password = RagflowCrypto(settings.PUBLIC_KEY, settings.PRIVATE_KEY).encrypt(password) - data = {"email": f"{username}@basic.com", "password": password, "remember_me": remember_me, "invite_token": invite_token, + data = {"email":email if email else f"{username}@basic.com", "password": password, "remember_me": remember_me, "invite_token": invite_token, "language": "zh-Hans"} async with httpx.AsyncClient() as client: diff --git a/app/service/ragflow.py b/app/service/ragflow.py index f10902f..08cc26f 100644 --- a/app/service/ragflow.py +++ b/app/service/ragflow.py @@ -48,13 +48,13 @@ raise Exception(f"Ragflow registration failed: {response.text}") return self._handle_response(response) - async def login(self, username: str, password: str) -> str: + async def login(self, username: str, password: str, email="") -> str: password = RagflowCrypto(settings.PUBLIC_KEY, settings.PRIVATE_KEY).encrypt(password) async with httpx.AsyncClient() as client: response = await client.post( f"{self.base_url}/v1/user/login", headers={'Content-Type': 'application/json'}, - json={"email": f"{username}@example.com", "password": password} + json={"email": email if email else f"{username}@example.com", "password": password} ) if response.status_code != 200: raise Exception(f"Ragflow login failed: {response.text}") diff --git a/app/service/session.py b/app/service/session.py index 37a7fe7..034eb50 100644 --- a/app/service/session.py +++ b/app/service/session.py @@ -12,8 +12,10 @@ def __init__(self, db: Session): self.db = db - def create_session(self, session_id: str, name: str, agent_id: str, agent_type: AgentType, user_id: int, - message: dict = None, workflow_type: int = 0) -> Type[SessionModel] | SessionModel: + + def create_session(self, session_id: str, name: str, agent_id: str, agent_type: AgentType, user_id: int, message: dict = None, workflow_type: int = 0) -> Type[ + SessionModel] | SessionModel: + """ 鍒涘缓涓�涓柊鐨勪細璇濊褰曘�� @@ -30,6 +32,7 @@ message = {"role": "user", "content": name} existing_session = self.get_session_by_id(session_id) if existing_session: + # existing_session.add_message({"role": "user", "content": name}) existing_session.add_message(message) existing_session.update_date = current_time() self.db.commit() @@ -43,7 +46,7 @@ agent_type=agent_type, tenant_id=user_id, workflow=workflow_type, - message=json.dumps([message]) + message = json.dumps([message]) ) self.db.add(new_session) self.db.commit() diff --git a/app/service/v2/initialize_data.py b/app/service/v2/initialize_data.py index c3e295f..e315b4a 100644 --- a/app/service/v2/initialize_data.py +++ b/app/service/v2/initialize_data.py @@ -3,9 +3,12 @@ import os import yaml +from passlib.context import CryptContext + from Log import logger -from app.config.const import DIFY, ENV_CONF_PATH +# from app.api import pwd_context +from app.config.const import DIFY, ENV_CONF_PATH, RAGFLOW from app.models import MenuCapacityModel, WebMenuModel, GroupModel, RoleModel, DialogModel, UserModel, UserAppModel, \ cipher_suite, UserTokenModel from app.service.auth import UserAppDao @@ -16,6 +19,8 @@ from app.service.v2.app_register import AppRegisterDao from app.config.config import settings from app.utils.password_handle import generate_password + +pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") async def dialog_menu_sync(db): @@ -252,4 +257,36 @@ db.commit() except Exception as e: print(e) + db.rollback() +async def admin_user_sync(db): + try: + config = {} + with open(os.path.join(ENV_CONF_PATH, "admin.yaml"), 'r', encoding='utf-8') as file: + # 鍔犺浇JSON鏁版嵁 + config = yaml.safe_load(file) + # print(config) + db_user = db.query(UserModel).filter(UserModel.username == config["smart_server"]["account"]).first() + if db_user: + print("admin_user_sync: 鐢ㄦ埛宸茬粡瀛樺湪锛�") + return + register_dict = {} + + for app in [RAGFLOW, DIFY]: + register_dict[app] = {"id": config[app].get("id", "123"), "name": config[app]["account"], + "pwd":config[app]["password"], + "email": config[app]["account"]} + + # 瀛樺偍鐢ㄦ埛淇℃伅 + hashed_password = pwd_context.hash(config["smart_server"]["password"]) + user_model = UserModel(username=config["smart_server"]["account"], hashed_password=hashed_password, email="", + phone="", login_name="", sync_flag="", creator=0, permission="admin") + db.add(user_model) + db.commit() + db.refresh(user_model) + u_id = user_model.id + user_app_dao = UserAppDao(db) + for k, v in register_dict.items(): + await user_app_dao.update_and_insert_data(v.get("name"), user_model.encrypted_password(v.get("pwd")), v.get("email"), u_id, str(v.get("id")), k) + except Exception as e: + print(e) db.rollback() \ No newline at end of file -- Gitblit v1.8.0