完善了知识库功能

main
mula.liu 2025-10-16 17:15:36 +08:00
parent a5f544d7a2
commit b674c75c65
3 changed files with 49 additions and 1 deletions

BIN
app/.DS_Store vendored

Binary file not shown.

View File

@ -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,

View File

@ -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