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