完善了知识库功能
parent
a5f544d7a2
commit
b674c75c65
Binary file not shown.
|
|
@ -1,6 +1,6 @@
|
||||||
from fastapi import APIRouter, Depends, HTTPException, BackgroundTasks
|
from fastapi import APIRouter, Depends, HTTPException, BackgroundTasks
|
||||||
from typing import Optional, List
|
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.database import get_db_connection
|
||||||
from app.core.auth import get_current_user
|
from app.core.auth import get_current_user
|
||||||
from app.core.response import create_api_response
|
from app.core.response import create_api_response
|
||||||
|
|
@ -198,6 +198,46 @@ def get_knowledge_base_detail(
|
||||||
|
|
||||||
return kb_data
|
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}")
|
@router.delete("/knowledge-bases/{kb_id}")
|
||||||
def delete_knowledge_base(
|
def delete_knowledge_base(
|
||||||
kb_id: int,
|
kb_id: int,
|
||||||
|
|
|
||||||
|
|
@ -127,9 +127,12 @@ class KnowledgeBase(BaseModel):
|
||||||
creator_caption: str # To show in the UI
|
creator_caption: str # To show in the UI
|
||||||
is_shared: bool
|
is_shared: bool
|
||||||
source_meeting_ids: Optional[str] = None
|
source_meeting_ids: Optional[str] = None
|
||||||
|
user_prompt: Optional[str] = None
|
||||||
tags: Optional[List[Tag]] = []
|
tags: Optional[List[Tag]] = []
|
||||||
created_at: datetime.datetime
|
created_at: datetime.datetime
|
||||||
updated_at: datetime.datetime
|
updated_at: datetime.datetime
|
||||||
|
source_meeting_count: Optional[int] = 0
|
||||||
|
created_by_name: Optional[str] = None
|
||||||
|
|
||||||
class KnowledgeBaseTask(BaseModel):
|
class KnowledgeBaseTask(BaseModel):
|
||||||
task_id: str
|
task_id: str
|
||||||
|
|
@ -150,6 +153,11 @@ class CreateKnowledgeBaseRequest(BaseModel):
|
||||||
source_meeting_ids: Optional[str] = None
|
source_meeting_ids: Optional[str] = None
|
||||||
tags: Optional[str] = None
|
tags: Optional[str] = None
|
||||||
|
|
||||||
|
class UpdateKnowledgeBaseRequest(BaseModel):
|
||||||
|
title: str
|
||||||
|
content: Optional[str] = None
|
||||||
|
tags: Optional[str] = None
|
||||||
|
|
||||||
class KnowledgeBaseListResponse(BaseModel):
|
class KnowledgeBaseListResponse(BaseModel):
|
||||||
kbs: List[KnowledgeBase]
|
kbs: List[KnowledgeBase]
|
||||||
total: int
|
total: int
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue