Browse Source

add dialog sss

zhaoqingang 1 year ago
parent
commit
ae88193c51

+ 3 - 0
app/api/agent.py

@@ -35,11 +35,13 @@ async def chat_list(
         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 @@ async def chat_list(
             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)
 

+ 10 - 2
app/api/dialog.py

@@ -6,7 +6,7 @@ from app.models.dialog_model import dialogData, dialogDataUpdate
 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 @@ async def sync_knowledge_api(dialogId: str, current_user: UserModel = Depends(ge
     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={})

+ 12 - 3
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 @@ async def sync_knowledge_api(knowledgeId: str, current_user: UserModel = Depends
     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={})

+ 3 - 3
app/api/organization.py

@@ -19,7 +19,7 @@ async def organization_list(deptName="",current_user: UserModel = Depends(get_cu
 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 @@ async def delete_dept(deptId, current_user: UserModel = Depends(get_current_user
 
 @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={})

+ 12 - 2
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 @@ async def resource_edit_menu(menu: MenuInfo, current_user: UserModel = Depends(g
     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={})

+ 2 - 1
app/models/dialog_model.py

@@ -80,4 +80,5 @@ class dialogData(BaseModel):
 
 class dialogDataUpdate(BaseModel):
     id: str
-    status: Optional[str] = "1"
+    status: Optional[str] = "1"
+    icon: Optional[str] = ""

+ 7 - 1
app/models/knowledge_model.py

@@ -51,4 +51,10 @@ class klgParameter(BaseModel):
     name: str
     description: Optional[str] = ""
     icon: str
-    klgType: str
+    klgType: str
+
+
+
+class klgIcon(BaseModel):
+    id: str
+    icon: str

+ 1 - 1
app/models/organization_model.py

@@ -169,7 +169,7 @@ class DeptInfo(BaseModel):
     orderNum: int
     address: Optional[str] = ""
     parentId: Optional[str] = ""
-    status:  Optional[str] = ""
+    status:  Optional[str|int] = ""
     roles: Optional[list] = []
     groups: Optional[list] = []
 

+ 6 - 1
app/models/resource_model.py

@@ -182,4 +182,9 @@ class MenuInfo(BaseModel):
     parentId: str
     status: str
     # roles: list
-    # groups: Optional[list] = []
+    # groups: Optional[list] = []
+
+
+class MenuStatus(BaseModel):
+    menuId: str
+    status: str

+ 4 - 0
app/models/token_model.py

@@ -4,6 +4,7 @@ from typing import Type
 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 @@ async def update_token(db: Session, user_id: int, access_token: str, token: dict
         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 @@ async def update_token(db: Session, user_id: int, access_token: str, token: dict
             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)

+ 11 - 0
app/service/dialog.py

@@ -123,4 +123,15 @@ async def delete_dialog_service(db, dialog_id):
         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

+ 14 - 0
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 @@ async def delete_knowledge_service(db, klg_id):
         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
+

+ 1 - 1
app/service/organization.py

@@ -17,7 +17,7 @@ async def get_organization_list(db, deptName: str):
 
 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:

+ 14 - 1
app/service/resource.py

@@ -49,7 +49,7 @@ async def edit_resource_data(db, menu_id, menu_name, component, path, order_num,
         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 @@ async def edit_resource_data(db, menu_id, menu_name, component, path, order_num,
         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

+ 16 - 11
app/service/v2/initialize_data.py

@@ -40,29 +40,34 @@ async def dialog_menu_sync(db):
 
 
 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)