From b64c89f478bf324feb4d021bd7ec5200b4f57315 Mon Sep 17 00:00:00 2001 From: huangzhuang_3rd Date: Thu, 13 Aug 2026 00:45:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20V1=20-=20DAG=E7=BC=96=E6=8E=92/?= =?UTF-8?q?=E5=91=8A=E8=AD=A6=E7=B3=BB=E7=BB=9F/Agent=E5=BE=AA=E7=8E=AF/?= =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93RAG/Webhook=20+=20=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=AF=8C=E4=B8=8A=E4=B8=8B=E6=96=87=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/api/v1/knowledge.py | 62 +++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 backend/app/api/v1/knowledge.py diff --git a/backend/app/api/v1/knowledge.py b/backend/app/api/v1/knowledge.py new file mode 100644 index 0000000..5e8f0cd --- /dev/null +++ b/backend/app/api/v1/knowledge.py @@ -0,0 +1,62 @@ +"""Knowledge base endpoints.""" +from fastapi import APIRouter, Depends, HTTPException, Query +from sqlalchemy.orm import Session +from typing import List, Optional +from app.database import get_db +from app.schemas.knowledge import KnowledgeCreate, KnowledgeResponse, KnowledgeSearchResult +from app.services.knowledge_service import KnowledgeService +from app.api.deps import get_current_user +from app.models.user import User + +router = APIRouter(prefix="/knowledge") + + +@router.get("", response_model=List[KnowledgeResponse]) +def list_docs( + project_id: Optional[int] = None, + user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + return KnowledgeService.list_docs(db, user.tenant_id, project_id) + + +@router.post("", response_model=KnowledgeResponse, status_code=201) +def create_doc( + req: KnowledgeCreate, + user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + return KnowledgeService.create_doc(db, user.tenant_id, req) + + +@router.get("/search", response_model=List[KnowledgeSearchResult]) +def search_docs( + q: str = Query(..., min_length=1), + project_id: Optional[int] = None, + user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + return KnowledgeService.search(db, user.tenant_id, q, project_id) + + +@router.get("/{doc_id}", response_model=KnowledgeResponse) +def get_doc( + doc_id: int, + user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + doc = KnowledgeService.get_doc(db, user.tenant_id, doc_id) + if not doc: + raise HTTPException(status_code=404, detail="Document not found") + return doc + + +@router.delete("/{doc_id}") +def delete_doc( + doc_id: int, + user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + if KnowledgeService.delete_doc(db, user.tenant_id, doc_id): + return {"success": True} + raise HTTPException(status_code=404, detail="Document not found")