6
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
"""文档 API 路由。"""
|
||||
|
||||
from fastapi import APIRouter, Depends, Query, UploadFile, File, Form
|
||||
from pydantic import BaseModel, Field
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.api.deps import get_current_user, get_db
|
||||
@@ -16,10 +17,19 @@ from app.services.doc_service import DocumentService
|
||||
router = APIRouter(prefix="/documents", tags=["documents"])
|
||||
|
||||
|
||||
class CreateTextRequest(BaseModel):
|
||||
kb_id: str
|
||||
title: str = Field(min_length=1, max_length=512)
|
||||
content: str = Field(min_length=1)
|
||||
content_format: str = "markdown" # markdown / text
|
||||
category_id: str | None = None
|
||||
|
||||
|
||||
@router.post("/upload", response_model=DocumentUploadResponse, status_code=201)
|
||||
async def upload_document(
|
||||
kb_id: str = Form(...),
|
||||
file: UploadFile = File(...),
|
||||
category_id: str = Form(None),
|
||||
user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db),
|
||||
) -> DocumentUploadResponse:
|
||||
@@ -31,6 +41,7 @@ async def upload_document(
|
||||
kb_id=kb_id,
|
||||
filename=file.filename or "unknown",
|
||||
content=content,
|
||||
category_id=category_id,
|
||||
)
|
||||
return DocumentUploadResponse(
|
||||
id=doc.id,
|
||||
@@ -41,6 +52,25 @@ async def upload_document(
|
||||
)
|
||||
|
||||
|
||||
@router.post("/create-text", response_model=DocumentResponse, status_code=201)
|
||||
def create_text_document(
|
||||
body: CreateTextRequest,
|
||||
user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db),
|
||||
) -> DocumentResponse:
|
||||
"""直接创建文本内容文档(无需上传文件)。"""
|
||||
svc = DocumentService(db)
|
||||
doc = svc.create_text(
|
||||
user=user,
|
||||
kb_id=body.kb_id,
|
||||
title=body.title,
|
||||
content=body.content,
|
||||
content_format=body.content_format,
|
||||
category_id=body.category_id,
|
||||
)
|
||||
return _to_response(doc)
|
||||
|
||||
|
||||
@router.get("", response_model=DocumentListResponse)
|
||||
def list_documents(
|
||||
kb_id: str = Query(...),
|
||||
|
||||
Reference in New Issue
Block a user