完善了知识库功能
parent
a5f544d7a2
commit
b674c75c65
Binary file not shown.
|
|
@ -1,6 +1,6 @@
|
|||
from fastapi import APIRouter, Depends, HTTPException, BackgroundTasks
|
||||
from typing import Optional, List
|
||||
from app.models.models import KnowledgeBase, KnowledgeBaseListResponse, CreateKnowledgeBaseRequest, Tag
|
||||
from app.models.models import KnowledgeBase, KnowledgeBaseListResponse, CreateKnowledgeBaseRequest, UpdateKnowledgeBaseRequest, Tag
|
||||
from app.core.database import get_db_connection
|
||||
from app.core.auth import get_current_user
|
||||
from app.core.response import create_api_response
|
||||
|
|
@ -198,6 +198,46 @@ def get_knowledge_base_detail(
|
|||
|
||||
return kb_data
|
||||
|
||||
@router.put("/knowledge-bases/{kb_id}")
|
||||
def update_knowledge_base(
|
||||
kb_id: int,
|
||||
request: UpdateKnowledgeBaseRequest,
|
||||
current_user: dict = Depends(get_current_user)
|
||||
):
|
||||
with get_db_connection() as connection:
|
||||
cursor = connection.cursor(dictionary=True)
|
||||
|
||||
# Check if knowledge base exists and user has permission
|
||||
cursor.execute(
|
||||
"SELECT kb_id, creator_id FROM knowledge_bases WHERE kb_id = %s",
|
||||
(kb_id,)
|
||||
)
|
||||
kb = cursor.fetchone()
|
||||
|
||||
if not kb:
|
||||
raise HTTPException(status_code=404, detail="Knowledge base not found")
|
||||
|
||||
if kb['creator_id'] != current_user['user_id']:
|
||||
raise HTTPException(status_code=403, detail="Only the creator can update this knowledge base")
|
||||
|
||||
# Update the knowledge base
|
||||
now = datetime.datetime.utcnow()
|
||||
update_query = """
|
||||
UPDATE knowledge_bases
|
||||
SET title = %s, content = %s, tags = %s, updated_at = %s
|
||||
WHERE kb_id = %s
|
||||
"""
|
||||
cursor.execute(update_query, (
|
||||
request.title,
|
||||
request.content,
|
||||
request.tags,
|
||||
now,
|
||||
kb_id
|
||||
))
|
||||
connection.commit()
|
||||
|
||||
return {"message": "Knowledge base updated successfully"}
|
||||
|
||||
@router.delete("/knowledge-bases/{kb_id}")
|
||||
def delete_knowledge_base(
|
||||
kb_id: int,
|
||||
|
|
|
|||
|
|
@ -127,9 +127,12 @@ class KnowledgeBase(BaseModel):
|
|||
creator_caption: str # To show in the UI
|
||||
is_shared: bool
|
||||
source_meeting_ids: Optional[str] = None
|
||||
user_prompt: Optional[str] = None
|
||||
tags: Optional[List[Tag]] = []
|
||||
created_at: datetime.datetime
|
||||
updated_at: datetime.datetime
|
||||
source_meeting_count: Optional[int] = 0
|
||||
created_by_name: Optional[str] = None
|
||||
|
||||
class KnowledgeBaseTask(BaseModel):
|
||||
task_id: str
|
||||
|
|
@ -150,6 +153,11 @@ class CreateKnowledgeBaseRequest(BaseModel):
|
|||
source_meeting_ids: Optional[str] = None
|
||||
tags: Optional[str] = None
|
||||
|
||||
class UpdateKnowledgeBaseRequest(BaseModel):
|
||||
title: str
|
||||
content: Optional[str] = None
|
||||
tags: Optional[str] = None
|
||||
|
||||
class KnowledgeBaseListResponse(BaseModel):
|
||||
kbs: List[KnowledgeBase]
|
||||
total: int
|
||||
|
|
|
|||
Loading…
Reference in New Issue