New file |
| | |
| | | # 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)) |
New file |
| | |
| | | # 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)) |
| | |
| | | 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}) |
| | | return Response(code=200, msg="", data = await get_knowledge_list(db, role, current_user.id)) |
| | |
| | | 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) |
| | |
| | | |
| | | |
| | | @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) |
| | |
| | | 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={}) |
| | |
| | | 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={}) |
| | |
| | | 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={}) |
| | | return Response(code=200, msg="user pwd reset successfully", data={}) |
| | |
| | | |
| | | |
| | | class CanvasModel(Base): |
| | | __tablename__ = 'user_canvas' |
| | | __tablename__ = 'canvas' |
| | | |
| | | id = Column(String(32), primary_key=True) # id |
| | | create_date = Column(DateTime, default=datetime.now) |
| | |
| | | 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, |
| | |
| | | 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) |
| | |
| | | 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 |
| | | } |
| | |
| | | |
| | | 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')) |
| | |
| | | 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列表""" |
New file |
| | |
| | | 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]} |
New file |
| | |
| | | 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]} |
| | |
| | | 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]} |
| | | |
| | |
| | | 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) |
| | |
| | | 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 |
| | |
| | | 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 |