zhaoqingang
2024-12-18 ae88193c5153aa04226a8307e1294a9c75d312bb
add dialog sss
15个文件已修改
143 ■■■■ 已修改文件
app/api/agent.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/api/dialog.py 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/api/knowledge.py 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/api/organization.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/api/resource.py 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/models/dialog_model.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/models/knowledge_model.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/models/organization_model.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/models/resource_model.py 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/models/token_model.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/service/dialog.py 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/service/knowledge.py 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/service/organization.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/service/resource.py 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/service/v2/initialize_data.py 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)
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={})
    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={})
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={})
    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={})
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={})
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={})
app/models/dialog_model.py
@@ -80,4 +80,5 @@
class dialogDataUpdate(BaseModel):
    id: str
    status: Optional[str] = "1"
    status: Optional[str] = "1"
    icon: Optional[str] = ""
app/models/knowledge_model.py
@@ -51,4 +51,10 @@
    name: str
    description: Optional[str] = ""
    icon: str
    klgType: str
    klgType: str
class klgIcon(BaseModel):
    id: str
    icon: str
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] = []
app/models/resource_model.py
@@ -182,4 +182,9 @@
    parentId: str
    status: str
    # roles: list
    # groups: Optional[list] = []
    # groups: Optional[list] = []
class MenuStatus(BaseModel):
    menuId: str
    status: str
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)
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
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
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:
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
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)