Browse Source

增加文件停用功能

chenbin 1 month ago
parent
commit
d4de97f5b6
2 changed files with 27 additions and 1 deletions
  1. 1 0
      agent/models/web/knowledge_base.py
  2. 26 1
      agent/router/knowledge_base_router.py

+ 1 - 0
agent/models/web/knowledge_base.py

@@ -37,6 +37,7 @@ class KnowledgeFile(Base):
     creator = Column(String(100), nullable=True)  # 创建人
     knowledge_type = Column(String(50), nullable=True)  # 知识类型
     is_deleted = Column(Integer, default=0)
+    status = Column(Integer, default=0) # 0启用 1 停用
     created_at = Column(DateTime, default=datetime.utcnow)
     updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
 

+ 26 - 1
agent/router/knowledge_base_router.py

@@ -64,6 +64,7 @@ class KnowledgeFileResponse(BaseModel):
     file_size: float
     file_type: str
     minio_url: str
+    status: bool = False
     user_name: Optional[str] = None  # 用户名
     version: Optional[str] = None
     author: Optional[str] = None
@@ -380,7 +381,7 @@ def list_files(kb_id: int, pageNo: int = 1, pageSize: int = 10, file_name: Optio
         filter(
         KnowledgeFile.knowledge_base_id == kb_id,
         KnowledgeFile.is_deleted == 0
-    )
+    ).order_by(KnowledgeFile.status)
 
     if file_name:
         query = query.filter(KnowledgeFile.file_name.ilike(f"%{file_name}%"))
@@ -486,6 +487,30 @@ def delete_file(file_id: int, db: Session = Depends(get_db)):
         "data": True
     }
 
+@router.get("/files/{file_id}/changeStatus", response_model=dict)
+def change_file_status(file_id: int, status: bool, db: Session = Depends(get_db)):
+    # 获取文件信息
+    file = db.query(KnowledgeFile).filter(
+        KnowledgeFile.id == file_id,
+        KnowledgeFile.is_deleted == 0
+    ).first()
+    if not file:
+        raise HTTPException(status_code=404, detail="文件不存在")
+
+    # 标记文件停用状态
+    if status:
+        file.status = 1
+    else:
+        file.status = 0
+    file.updated_at = datetime.utcnow()
+    db.commit()
+
+    return {
+        "code": 200,
+        "message": "修改成功",
+        "data": True
+    }
+
 
 @router.put("/files/batch-update", response_model=ResponseModel)
 def batch_update_files(update_data: BatchFileUpdate, db: Session = Depends(get_db)):