| | |
| | | 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) |
| | |
| | | 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) |
| | | |
| | |
| | | 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() |
| | | |
| | |
| | | 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={}) |
| | | 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={}) |
| | |
| | | |
| | | 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() |
| | | |
| | |
| | | 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={}) |
| | | 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={}) |
| | |
| | | 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: |
| | |
| | | |
| | | @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={}) |
| | |
| | | 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() |
| | | |
| | |
| | | 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={}) |
| | |
| | | |
| | | class dialogDataUpdate(BaseModel): |
| | | id: str |
| | | status: Optional[str] = "1" |
| | | status: Optional[str] = "1" |
| | | icon: Optional[str] = "" |
| | |
| | | name: str |
| | | description: Optional[str] = "" |
| | | icon: str |
| | | klgType: str |
| | | klgType: str |
| | | |
| | | |
| | | |
| | | class klgIcon(BaseModel): |
| | | id: str |
| | | icon: str |
| | |
| | | orderNum: int |
| | | address: Optional[str] = "" |
| | | parentId: Optional[str] = "" |
| | | status: Optional[str] = "" |
| | | status: Optional[str|int] = "" |
| | | roles: Optional[list] = [] |
| | | groups: Optional[list] = [] |
| | | |
| | |
| | | parentId: str |
| | | status: str |
| | | # roles: list |
| | | # groups: Optional[list] = [] |
| | | # groups: Optional[list] = [] |
| | | |
| | | |
| | | class MenuStatus(BaseModel): |
| | | menuId: str |
| | | status: str |
| | |
| | | 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 |
| | | |
| | |
| | | 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: |
| | |
| | | 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) |
| | |
| | | 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 |
| | |
| | | from datetime import datetime |
| | | |
| | | from sqlalchemy import or_ |
| | | |
| | | from app.models import KnowledgeModel, group_knowledge_table |
| | |
| | | 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 |
| | | |
| | |
| | | |
| | | 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: |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | |
| | | |
| | | 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) |