From b674c75c6563476fc77b9e92753c70433d5723ea Mon Sep 17 00:00:00 2001 From: "mula.liu" Date: Thu, 16 Oct 2025 17:15:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=86=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=E5=BA=93=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/.DS_Store | Bin 6148 -> 6148 bytes app/api/endpoints/knowledge_base.py | 42 +++++++++++++++++++++++++++- app/models/models.py | 8 ++++++ 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/app/.DS_Store b/app/.DS_Store index 3a0254a60bbfafca153df6edb440445d94ee041a..8a412a37f50613972f85bbb4ba51b2db5934e7fb 100644 GIT binary patch delta 276 zcmZoMXfc=|#>B)qu~2NHo+2aj!~pA!4;mPOj2^A}r1Ii|q@4UD1_p*5Nd-BX#U%y? z*BF_YSyuu5=%;pof3CJzu~2NHo+2aD!~pBb1|lqz`I*!=^D+Nq*=)cZ!L*s3gP#MaXtN^o ccjn3bBD$Q63=9khfS6&j4UhEZ7?CB+0MW7$^Z)<= diff --git a/app/api/endpoints/knowledge_base.py b/app/api/endpoints/knowledge_base.py index bfc40b4..9bc9154 100644 --- a/app/api/endpoints/knowledge_base.py +++ b/app/api/endpoints/knowledge_base.py @@ -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, diff --git a/app/models/models.py b/app/models/models.py index f0ff74d..bfd1219 100644 --- a/app/models/models.py +++ b/app/models/models.py @@ -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