From e80ffb7f9be04226d2a6ea9566612b06df85e580 Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期三, 13 十一月 2024 17:58:14 +0800 Subject: [PATCH] 参数修改 --- app/api/role.py | 4 app/models/agent_model.py | 4 app/service/user.py | 2 app/service/knowledge.py | 23 +++++ app/api/user.py | 13 ++- app/service/canvas.py | 22 +++++ app/models/user_model.py | 47 +++++++++++ app/api/knowledge.py | 21 ---- app/api/canvas.py | 15 +++ app/service/dialog.py | 22 +++++ app/api/dialog.py | 15 +++ main.py | 4 + app/models/group_model.py | 2 app/models/dialog_model.py | 14 --- 14 files changed, 165 insertions(+), 43 deletions(-) diff --git a/app/api/canvas.py b/app/api/canvas.py new file mode 100644 index 0000000..df214a0 --- /dev/null +++ b/app/api/canvas.py @@ -0,0 +1,15 @@ +# coding:utf-8 + +from fastapi import APIRouter, Depends +from app.api import Response, get_current_user, ResponseList +from app.models import RoleParameter, GroupModel, KnowledgeModel +from app.models.base_model import get_db +from app.models.user_model import UserModel +from app.service.canvas import get_canvas_list + +canvas_router = APIRouter() + +@canvas_router.get("/list", response_model=Response) +async def canvas_list(role:str="", current_user: UserModel = Depends(get_current_user), + db=Depends(get_db)): + return Response(code=200, msg="", data = await get_canvas_list(db, role, current_user.id)) \ No newline at end of file diff --git a/app/api/dialog.py b/app/api/dialog.py new file mode 100644 index 0000000..98769d2 --- /dev/null +++ b/app/api/dialog.py @@ -0,0 +1,15 @@ +# coding:utf-8 + +from fastapi import APIRouter, Depends +from app.api import Response, get_current_user, ResponseList +from app.models import RoleParameter, GroupModel, KnowledgeModel +from app.models.base_model import get_db +from app.models.user_model import UserModel +from app.service.dialog import get_dialog_list + +dialog_router = APIRouter() + +@dialog_router.get("/list", response_model=Response) +async def dialog_list(role:str="", current_user: UserModel = Depends(get_current_user), + db=Depends(get_db)): + return Response(code=200, msg="", data = await get_dialog_list(db, role, current_user.id)) \ No newline at end of file diff --git a/app/api/knowledge.py b/app/api/knowledge.py index 91edec0..be70bbf 100644 --- a/app/api/knowledge.py +++ b/app/api/knowledge.py @@ -5,26 +5,11 @@ from app.models import RoleParameter, GroupModel, KnowledgeModel from app.models.base_model import get_db from app.models.user_model import UserModel +from app.service.knowledge import get_knowledge_list knowledge_router = APIRouter() @knowledge_router.get("/list", response_model=Response) -async def knowledge_list(role:str, current_user: UserModel = Depends(get_current_user), +async def knowledge_list(role:str="", current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): - if role == "admin": - kld_list = db.query(KnowledgeModel).all() - else: - user = db.query(UserModel).filter(UserModel.id == current_user.id).first() - - group_list = [i.id for i in user.groups] - - kld_list = db.query(KnowledgeModel).filter(KnowledgeModel.tenant_id==current_user.id).all() - kld_set = set([i.id for i in kld_list]) - for group in db.query(GroupModel).filter(GroupModel.id.in_(group_list)).all(): - for k in group.knowledges: - if k.id not in kld_set: - kld_list.append(k) - kld_set.add(k.id) - - data = [kld.to_json() for kld in kld_list] - return Response(code=200, msg="", data={"rows": data}) \ No newline at end of file + return Response(code=200, msg="", data = await get_knowledge_list(db, role, current_user.id)) \ No newline at end of file diff --git a/app/api/role.py b/app/api/role.py index 516619a..a4674c3 100644 --- a/app/api/role.py +++ b/app/api/role.py @@ -11,10 +11,10 @@ role_router = APIRouter() @role_router.get("/list", response_model=Response) -async def user_group_list(paras: PageParameter, current_user: UserModel = Depends(get_current_user), +async def user_group_list(current, pageSize, keyword="", current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): - return Response(code=200, msg="", data=await role_list(db, paras.page_size, paras.page_index, paras.keyword, current_user.permission, current_user.id)) + return Response(code=200, msg="", data=await role_list(db, pageSize, current, keyword, current_user.permission, current_user.id)) @role_router.post("/add_role", response_model=Response) diff --git a/app/api/user.py b/app/api/user.py index 5d1443e..1e2db47 100644 --- a/app/api/user.py +++ b/app/api/user.py @@ -10,8 +10,10 @@ @user_router.get("/list", response_model=Response) -async def user_list(paras: PageParameter,current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): - return Response(code=200, msg="", data=await get_user_list(db, paras.page_size, paras.page_index, paras.keyword, current_user.permission, current_user.id)) +async def user_list(current, pageSize, keyword="", current_user: UserModel = Depends(get_current_user), + db=Depends(get_db)): + return Response(code=200, msg="", data=await get_user_list(db, current, pageSize, keyword, + current_user.permission, current_user.id)) @user_router.post("/add_user", response_model=Response) @@ -24,7 +26,8 @@ pwd = user.pwd if not pwd: pwd = "000000" - is_create = await create_user(db, user.userName, user.email, user.phone, user.loginName, pwd, user.roles, user.groups,current_user.id) + is_create = await create_user(db, user.userName, user.email, user.phone, user.loginName, pwd, user.roles, + user.groups, current_user.id) if not is_create: return Response(code=500, msg="user create failure", data={}) return Response(code=200, msg="user create successfully", data={}) @@ -53,7 +56,7 @@ db_user = db.query(UserModel).filter(UserModel.id == user.userId).first() if not db_user: return Response(code=200, msg="user does not exist") - is_edit = await edit_user_status(db, user.status,user.userId) + is_edit = await edit_user_status(db, user.status, user.userId) if not is_edit: return Response(code=500, msg="user status edit failure", data={}) return Response(code=200, msg="user status edit successfully", data={}) @@ -78,4 +81,4 @@ is_edit = await edit_user_pwd(db, user.userId) if not is_edit: return Response(code=500, msg="user pwd reset failure", data={}) - return Response(code=200, msg="user pwd reset successfully", data={}) \ No newline at end of file + return Response(code=200, msg="user pwd reset successfully", data={}) diff --git a/app/models/agent_model.py b/app/models/agent_model.py index e2151fc..cc9120e 100644 --- a/app/models/agent_model.py +++ b/app/models/agent_model.py @@ -30,7 +30,7 @@ class CanvasModel(Base): - __tablename__ = 'user_canvas' + __tablename__ = 'canvas' id = Column(String(32), primary_key=True) # id create_date = Column(DateTime, default=datetime.now) @@ -51,9 +51,7 @@ def to_json(self): return { 'id': self.id, - 'create_time': self.create_time, 'create_date': self.create_date, - 'update_time': self.update_time, 'update_date': self.update_date, 'avatar': self.avatar, 'user_id': self.user_id, diff --git a/app/models/dialog_model.py b/app/models/dialog_model.py index 2ac706f..e46a950 100644 --- a/app/models/dialog_model.py +++ b/app/models/dialog_model.py @@ -18,7 +18,7 @@ description = Column(Text) # 璇存槑 icon = Column(Text) # 鍥炬爣 status = Column(String(1)) # 鐘舵�� - dialog_type = Column(String(1)) # # 骞冲彴 + # dialog_type = Column(String(1)) # # 骞冲彴 def get_id(self): return str(self.id) @@ -26,23 +26,11 @@ def to_json(self): return { 'id': self.id, - 'create_time': self.create_time, 'create_date': self.create_date, - 'update_time': self.update_time, 'update_date': self.update_date, 'tenant_id': self.tenant_id, 'name': self.name, 'description': self.description, 'icon': self.icon, - 'language': self.language, - 'llm_id': self.llm_id, - 'prompt_type': self.prompt_type, - 'prompt_config': self.prompt_config, - 'similarity_threshold': self.similarity_threshold, - 'vector_similarity_weight': self.vector_similarity_weight, - 'top_n': self.top_n, - 'top_k': self.top_k, - 'do_refer': self.do_refer, - 'kb_ids': self.kb_ids, 'status': self.status } \ No newline at end of file diff --git a/app/models/group_model.py b/app/models/group_model.py index b9c30e9..38db667 100644 --- a/app/models/group_model.py +++ b/app/models/group_model.py @@ -19,7 +19,7 @@ group_agent_table = Table('group_agent', Base.metadata , Column('group_id', Integer, ForeignKey('group.id', ondelete='CASCADE')) - , Column('agent_id', String(36), ForeignKey('user_canvas.id', ondelete='CASCADE'))) + , Column('agent_id', String(36), ForeignKey('canvas.id', ondelete='CASCADE'))) group_llm_table = Table('group_llm', Base.metadata , Column('group_id', Integer, ForeignKey('group.id', ondelete='CASCADE')) diff --git a/app/models/user_model.py b/app/models/user_model.py index 8736ba0..d722d02 100644 --- a/app/models/user_model.py +++ b/app/models/user_model.py @@ -112,6 +112,53 @@ json['roles'] = roles return json + def to_login_json(self): + json = { + 'userId': self.id, + 'createTime': self.created_at.strftime('%Y-%m-%d %H:%M:%S') if self.created_at else "", + 'updateTime': self.updated_at.strftime('%Y-%m-%d %H:%M:%S') if self.created_at else "", + 'userName': self.username, + 'loginName': self.login_name, + 'sex': self.sex, + 'age': self.age, + "status": self.status, + 'phone': self.phone, + 'email': self.email, + # 'phoneNumber': self.phone_number + } + parent_dict = {} + resources = [] + for role in self.roles: + for r in role.to_json().get("resources", []): + if not r["parentId"]: + resources.append(r) + continue + if r["parentId"] in parent_dict: + parent_dict[r["parentId"]].append(r) + else: + parent_dict[r["parentId"]] = [r] + + # roles = [role.to_json() for role in self.roles] + organization_roles = [role.to_json() for organization in self.organizations for role in + organization.roles] + for role in organization_roles: + for r in role.to_json().get("resources", []): + if not r["parentId"]: + resources.append(r) + continue + if r["parentId"] in parent_dict: + parent_dict[r["parentId"]].append(r) + else: + parent_dict[r["parentId"]] = [r] + + + # for resource in resources: + # if resource["menuId"] in parent_dict: + # resource[] + + json['resources'] = resources + return json + def get_children(self): """閫掑綊鑾峰彇鎸囧畾鐢ㄦ埛鐨勫瓙鐢ㄦ埛ID鍒楄〃""" diff --git a/app/service/canvas.py b/app/service/canvas.py new file mode 100644 index 0000000..e6343ae --- /dev/null +++ b/app/service/canvas.py @@ -0,0 +1,22 @@ +from app.models import KnowledgeModel, GroupModel, CanvasModel +from app.models.user_model import UserModel +from Log import logger + + +async def get_canvas_list(db, role, user_id): + if role == "admin": + canvas_list = db.query(CanvasModel).all() + else: + user = db.query(UserModel).filter(UserModel.id == user_id).first() + + group_list = [i.id for i in user.groups] + + canvas_list = db.query(CanvasModel).filter(CanvasModel.user_id == user_id).all() + kld_set = set([i.id for i in canvas_list]) + for group in db.query(GroupModel).filter(GroupModel.id.in_(group_list)).all(): + for k in group.agents: + if k.id not in kld_set: + canvas_list.append(k) + kld_set.add(k.id) + + return {"rows": [kld.to_json() for kld in canvas_list]} \ No newline at end of file diff --git a/app/service/dialog.py b/app/service/dialog.py new file mode 100644 index 0000000..4fa7a63 --- /dev/null +++ b/app/service/dialog.py @@ -0,0 +1,22 @@ +from app.models import KnowledgeModel, GroupModel, DialogModel +from app.models.user_model import UserModel +from Log import logger + + +async def get_dialog_list(db, role, user_id): + if role == "admin": + dialog_list = db.query(DialogModel).all() + else: + user = db.query(UserModel).filter(UserModel.id == user_id).first() + + group_list = [i.id for i in user.groups] + + dialog_list = db.query(DialogModel).filter(DialogModel.tenant_id == user_id).all() + kld_set = set([i.id for i in dialog_list]) + for group in db.query(GroupModel).filter(GroupModel.id.in_(group_list)).all(): + for k in group.dialogs: + if k.id not in kld_set: + dialog_list.append(k) + kld_set.add(k.id) + + return {"rows": [kld.to_json() for kld in dialog_list]} \ No newline at end of file diff --git a/app/service/knowledge.py b/app/service/knowledge.py index e69de29..c9c89b4 100644 --- a/app/service/knowledge.py +++ b/app/service/knowledge.py @@ -0,0 +1,23 @@ +from app.models import KnowledgeModel, GroupModel +from app.models.user_model import UserModel +from Log import logger + + +async def get_knowledge_list(db, role, user_id): + if role == "admin": + kld_list = db.query(KnowledgeModel).all() + else: + user = db.query(UserModel).filter(UserModel.id == user_id).first() + + group_list = [i.id for i in user.groups] + + kld_list = db.query(KnowledgeModel).filter(KnowledgeModel.tenant_id == user_id).all() + kld_set = set([i.id for i in kld_list]) + for group in db.query(GroupModel).filter(GroupModel.id.in_(group_list)).all(): + for k in group.knowledges: + if k.id not in kld_set: + kld_list.append(k) + kld_set.add(k.id) + + return {"rows": [kld.to_json() for kld in kld_list]} + diff --git a/app/service/user.py b/app/service/user.py index 02a4efc..792b9ea 100644 --- a/app/service/user.py +++ b/app/service/user.py @@ -9,7 +9,7 @@ from app.service.ragflow import RagflowService -async def get_user_list(db, page_size: int, page_index: int, keyword: str, role_key:str, user_id): +async def get_user_list(db, page_index: int, page_size: int, keyword: str, role_key:str, user_id): query = db.query(UserModel) if role_key != "admin": query.filter(UserModel.creator==user_id) diff --git a/main.py b/main.py index 90683f5..0197ea4 100644 --- a/main.py +++ b/main.py @@ -1,8 +1,10 @@ from contextlib import asynccontextmanager from fastapi import FastAPI from app.api.auth import router as auth_router +from app.api.canvas import canvas_router from app.api.chat import router as chat_router from app.api.agent import router as agent_router +from app.api.dialog import dialog_router from app.api.excel import router as excel_router from app.api.files import router as files_router from app.api.knowledge import knowledge_router @@ -48,6 +50,8 @@ app.include_router(dept_router, prefix='/api/dept', tags=["dept"]) app.include_router(menu_router, prefix='/api/menu', tags=["menu"]) app.include_router(knowledge_router, prefix='/api/knowledge', tags=["knowledge"]) +app.include_router(dialog_router, prefix='/api/dialog', tags=["dialog"]) +app.include_router(canvas_router, prefix='/api/canvas', tags=["canvas"]) if __name__ == "__main__": import uvicorn -- Gitblit v1.8.0