From ae88193c5153aa04226a8307e1294a9c75d312bb Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期三, 18 十二月 2024 18:30:03 +0800 Subject: [PATCH] add dialog sss --- app/models/organization_model.py | 2 app/models/resource_model.py | 7 ++ app/service/organization.py | 2 app/api/agent.py | 3 + app/service/knowledge.py | 14 ++++ app/service/resource.py | 15 ++++ app/api/resource.py | 14 ++++ app/api/knowledge.py | 15 ++++- app/api/organization.py | 6 +- app/service/dialog.py | 11 +++ app/models/knowledge_model.py | 8 ++ app/api/dialog.py | 12 +++ app/models/dialog_model.py | 3 app/service/v2/initialize_data.py | 27 +++++--- app/models/token_model.py | 4 + 15 files changed, 116 insertions(+), 27 deletions(-) diff --git a/app/api/agent.py b/app/api/agent.py index 2bde98c..6270da4 100644 --- a/app/api/agent.py +++ b/app/api/agent.py @@ -35,11 +35,13 @@ limit: int = Query(1000, ge=1, le=1000), db: Session = Depends(get_db), current_user: UserModel = Depends(get_current_user)): + print(111) agent = db.query(AgentModel).filter(AgentModel.id == agent_id).first() if not agent: return ResponseList(code=404, msg="Agent not found") if agent.agent_type == AgentType.RAGFLOW: + print(222) ragflow_service = RagflowService(base_url=settings.fwr_base_url) try: token = await get_ragflow_token(db, current_user.id) @@ -47,6 +49,7 @@ if not result: result = await get_session_history(db, current_user.id, agent_id) except Exception as e: + print(e) raise HTTPException(status_code=500, detail=str(e)) return ResponseList(code=200, msg="", data=result) diff --git a/app/api/dialog.py b/app/api/dialog.py index d5cd5ea..6e97966 100644 --- a/app/api/dialog.py +++ b/app/api/dialog.py @@ -6,7 +6,7 @@ from app.models.base_model import get_db from app.models.user_model import UserModel from app.service.dialog import get_dialog_list, create_dialog_service, update_dialog_status_service, \ - delete_dialog_service + delete_dialog_service, update_dialog_icon_service dialog_router = APIRouter() @@ -55,4 +55,12 @@ is_delete = await delete_dialog_service(db, dialogId) if not is_delete: return Response(code=500, msg="knowledge delete failure", data={}) - return Response(code=200, msg="knowledge delete success", data={}) \ No newline at end of file + return Response(code=200, msg="knowledge delete success", data={}) + + +@dialog_router.put("/update_icon", response_model=Response) +async def change_dialog_icon(dialog: dialogDataUpdate, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): + is_create = await update_dialog_icon_service(db, dialog.id, dialog.icon) + if not is_create: + return Response(code=500, msg="dialog update failure", data={}) + return Response(code=200, msg="dialog update success", data={}) \ No newline at end of file diff --git a/app/api/knowledge.py b/app/api/knowledge.py index 5b0a4f4..acc454c 100644 --- a/app/api/knowledge.py +++ b/app/api/knowledge.py @@ -2,11 +2,11 @@ from fastapi import APIRouter, Depends, Query, HTTPException from app.api import Response, get_current_user, ResponseList -from app.models import klgParameter +from app.models import klgParameter, klgIcon from app.models.base_model import get_db from app.models.user_model import UserModel from app.service.knowledge import get_knowledge_list, create_knowledge_service, sync_knowledge_service, \ - delete_knowledge_service + delete_knowledge_service, update_knowledge_icon_service from typing import Optional knowledge_router = APIRouter() @@ -56,4 +56,13 @@ is_delete = await delete_knowledge_service(db, knowledgeId) if not is_delete: return Response(code=500, msg="knowledge delete failure", data={}) - return Response(code=200, msg="knowledge delete success", data={}) \ No newline at end of file + return Response(code=200, msg="knowledge delete success", data={}) + + + +@knowledge_router.put("/update_icon", response_model=Response) +async def change_dialog_icon(klg: klgIcon, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): + is_create = await update_knowledge_icon_service(db, klg.id, klg.icon) + if not is_create: + return Response(code=500, msg="knowledge update failure", data={}) + return Response(code=200, msg="knowledge update success", data={}) \ No newline at end of file diff --git a/app/api/organization.py b/app/api/organization.py index eab77c7..fcb2447 100644 --- a/app/api/organization.py +++ b/app/api/organization.py @@ -19,7 +19,7 @@ async def add_dept(dept: DeptInfo, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): if not dept.deptName: return Response(code=400, msg="The deptName cannot be empty!") - if dept.status not in ["0", "1"]: + if dept.status not in ["0", "1", 0, 1]: return Response(code=400, msg="The status cannot be {}!".format(dept.status)) is_create = await create_dept(db, dept.deptName, dept.leader, dept.phone, dept.address, dept.status, dept.orderNum, dept.roles, dept.groups, dept.parentId) if not is_create: @@ -62,9 +62,9 @@ @dept_router.put("/status", response_model=Response) async def edit_status_api(dept: DeptStatus, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): - if dept.status not in ["0", '1']: + if dept.status not in ["0", '1', 0, 1]: return Response(code=400, msg="鏈煡鐘舵�侊紒", data={}) - msg = await edit_organization_status(db, dept.deptId, dept.status) + msg = await edit_organization_status(db, dept.deptId, str(dept.status)) if msg: return Response(code=400, msg=f"{msg}", data={}) return Response(code=200, msg="dept delete successfully", data={}) diff --git a/app/api/resource.py b/app/api/resource.py index c722bec..421b83b 100644 --- a/app/api/resource.py +++ b/app/api/resource.py @@ -1,10 +1,10 @@ from fastapi import APIRouter, Depends from app.api import Response, pwd_context, get_current_user -from app.models import MenuInfo +from app.models import MenuInfo, MenuStatus from app.models.base_model import get_db from app.models.user_model import UserModel from app.service.resource import get_resource_tree, get_resource_info, delete_resource_info, create_menu, \ - edit_resource_data + edit_resource_data, edit_resource_status menu_router = APIRouter() @@ -49,3 +49,13 @@ if not is_create: return Response(code=500, msg="dept edit failure", data={}) return Response(code=200, msg="dept edit successfully", data={}) + + +@menu_router.put("/status", response_model=Response) +async def resource_edit_status(menu: MenuStatus, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): + if menu.status not in ["0", "1"]: + return Response(code=400, msg="The status cannot be {}!".format(menu.status)) + is_create = await edit_resource_status(db, menu.menuId, menu.status) + if not is_create: + return Response(code=500, msg="dept status edit failure", data={}) + return Response(code=200, msg="dept status edit success", data={}) diff --git a/app/models/dialog_model.py b/app/models/dialog_model.py index 058581c..beac4bd 100644 --- a/app/models/dialog_model.py +++ b/app/models/dialog_model.py @@ -80,4 +80,5 @@ class dialogDataUpdate(BaseModel): id: str - status: Optional[str] = "1" \ No newline at end of file + status: Optional[str] = "1" + icon: Optional[str] = "" \ No newline at end of file diff --git a/app/models/knowledge_model.py b/app/models/knowledge_model.py index 30aca5d..adc82a0 100644 --- a/app/models/knowledge_model.py +++ b/app/models/knowledge_model.py @@ -51,4 +51,10 @@ name: str description: Optional[str] = "" icon: str - klgType: str \ No newline at end of file + klgType: str + + + +class klgIcon(BaseModel): + id: str + icon: str \ No newline at end of file diff --git a/app/models/organization_model.py b/app/models/organization_model.py index b780496..d7a17a0 100644 --- a/app/models/organization_model.py +++ b/app/models/organization_model.py @@ -169,7 +169,7 @@ orderNum: int address: Optional[str] = "" parentId: Optional[str] = "" - status: Optional[str] = "" + status: Optional[str|int] = "" roles: Optional[list] = [] groups: Optional[list] = [] diff --git a/app/models/resource_model.py b/app/models/resource_model.py index 0e71119..00bd03f 100644 --- a/app/models/resource_model.py +++ b/app/models/resource_model.py @@ -182,4 +182,9 @@ parentId: str status: str # roles: list - # groups: Optional[list] = [] \ No newline at end of file + # groups: Optional[list] = [] + + +class MenuStatus(BaseModel): + menuId: str + status: str \ No newline at end of file diff --git a/app/models/token_model.py b/app/models/token_model.py index ccf6ee2..736720c 100644 --- a/app/models/token_model.py +++ b/app/models/token_model.py @@ -4,6 +4,7 @@ from sqlalchemy import Column, Integer, DateTime, Text from sqlalchemy.orm import Session +from app.config.const import RAGFLOW # from Log import logger from app.models.base_model import Base @@ -65,6 +66,8 @@ if db_token: # 璁板綍瀛樺湪锛岃繘琛屾洿鏂� db_token.token = access_token + db_token.ragflow_token = token.get(RAGFLOW, "") + # db_token.token = access_token # for k, v in token.items(): # setattr(db_token, k.replace("app", "token"), v) else: @@ -72,6 +75,7 @@ db_token = TokenModel( user_id=user_id, token=access_token, + ragflow_token = token.get(RAGFLOW, "") ) # for k, v in token.items(): # setattr(db_token, k.replace("app", "token"), v) diff --git a/app/service/dialog.py b/app/service/dialog.py index 83d192b..1bf4e4a 100644 --- a/app/service/dialog.py +++ b/app/service/dialog.py @@ -123,4 +123,15 @@ logger.error(e) db.rollback() return False + return True + + +async def update_dialog_icon_service(db, dialog_id, icon): + try: + db.query(DialogModel).filter_by(id=dialog_id).update({"icon":icon, "update_date": datetime.now()}) + db.commit() + except Exception as e: + logger.error(e) + db.rollback() + return False return True \ No newline at end of file diff --git a/app/service/knowledge.py b/app/service/knowledge.py index 7131186..ffd6dcf 100644 --- a/app/service/knowledge.py +++ b/app/service/knowledge.py @@ -1,3 +1,5 @@ +from datetime import datetime + from sqlalchemy import or_ from app.models import KnowledgeModel, group_knowledge_table @@ -69,3 +71,15 @@ return False return True + + +async def update_knowledge_icon_service(db, klg_id, icon): + try: + db.query(KnowledgeModel).filter_by(id=klg_id).update({"icon":icon, "update_date": datetime.now()}) + db.commit() + except Exception as e: + logger.error(e) + db.rollback() + return False + return True + diff --git a/app/service/organization.py b/app/service/organization.py index db4152c..0954c6c 100644 --- a/app/service/organization.py +++ b/app/service/organization.py @@ -17,7 +17,7 @@ async def create_dept(db, dept_name, leader, phone, address, status, order_num, roles, groups,parent_id): try: - dept_model = OrganizationModel(id=str(uuid.uuid4()),name=dept_name, address=address,leader=leader,phone=phone,seq=order_num,status=status) + dept_model = OrganizationModel(id=str(uuid.uuid4()),name=dept_name, address=address,leader=leader,phone=phone,seq=order_num,status=str(status)) if parent_id: dept_model.parent = db.get(OrganizationModel, parent_id) if roles: diff --git a/app/service/resource.py b/app/service/resource.py index 9d93cef..7880c01 100644 --- a/app/service/resource.py +++ b/app/service/resource.py @@ -49,7 +49,7 @@ dept_model.url = component dept_model.path = path dept_model.perms = perms - dept_model.status = status + # dept_model.status = status dept_model.icon = icon dept_model.seq = order_num dept_model.description = description @@ -62,4 +62,17 @@ logger.error(e) db.rollback() return False + return True + + +async def edit_resource_status(db, menu_id, status): + try: + dept_model = db.query(ResourceModel).filter(ResourceModel.id == menu_id).first() + dept_model.status = status + db.commit() + db.refresh(dept_model) + except Exception as e: + logger.error(e) + db.rollback() + return False return True \ No newline at end of file diff --git a/app/service/v2/initialize_data.py b/app/service/v2/initialize_data.py index a778b13..f681c56 100644 --- a/app/service/v2/initialize_data.py +++ b/app/service/v2/initialize_data.py @@ -40,29 +40,34 @@ async def create_menu_sync(db): - json_file_path = "env_conf/menu_conf.json" + json_file_path = "env_conf/menu_conf.json.template" with open(json_file_path, 'r', encoding='utf-8') as file: json_data = json.load(file).get("data", []) - for menu in json_data: - menu['dialog'].clear() + # for menu in json_data: + # menu['dialog'].clear() dialogs = db.query(DialogModel).all() dialog_dict = {} for dialog in dialogs: if dialog.name not in dialog_dict: dialog_dict[dialog.name] = [] - dialog_dict[dialog.name].append(dialog) - - for menu in json_data: - if menu['title'] in dialog_dict: - for dialog in dialog_dict[menu['title']]: - new_dialog_item = { + dialog_dict[dialog.name].append({ 'id': dialog.id, 'chat_id': dialog.id, 'chat_type': '', 'agentType': dialog.dialog_type - } - menu['dialog'].append(new_dialog_item) + }) + + for menu in json_data: + # if menu['title'] in dialog_dict: + # for dialog in dialog_dict[menu['title']]: + # new_dialog_item = { + # 'id': dialog.id, + # 'chat_id': dialog.id, + # 'chat_type': '', + # 'agentType': dialog.dialog_type + # } + menu['dialog']= dialog_dict.get(menu['title'], []) json_data = {"data": json_data} new_file_name = f"menu_conf.json.template" new_file_path = os.path.join(os.path.dirname(json_file_path), new_file_name) -- Gitblit v1.8.0