feat:增加分析进度接口
This commit is contained in:
+15
-14
@@ -1,4 +1,4 @@
|
||||
"""数据文件接口:上传限制、上传解析、列出、查看、删除,见 docs/screen-agent/data-files.md 第 5 节"""
|
||||
"""数据文件接口:上传限制、上传解析及进度、列出、查看、删除,见 docs/screen-agent/data-files.md 第 5 节"""
|
||||
|
||||
from typing import Annotated, Literal, get_args
|
||||
|
||||
@@ -28,6 +28,7 @@ from app.schemas.data_file import (
|
||||
DataFileRecord,
|
||||
DataFormat,
|
||||
DataTableRows,
|
||||
UploadProgress,
|
||||
)
|
||||
from app.schemas.user import CurrentUser
|
||||
|
||||
@@ -105,17 +106,18 @@ async def get_limits(request: Request) -> ApiResponse[DataFileLimits]:
|
||||
)
|
||||
|
||||
|
||||
@router.post("")
|
||||
@router.post("", status_code=202)
|
||||
async def upload_file(
|
||||
request: Request,
|
||||
conversation_id: Annotated[NonBlankString, Form()],
|
||||
file: Annotated[UploadFile, File()],
|
||||
user: Annotated[CurrentUser, Depends(get_current_user)],
|
||||
) -> ApiResponse[DataFileDetail]:
|
||||
record = await _service(request).upload(
|
||||
) -> ApiResponse[UploadProgress]:
|
||||
"""原文件保存后立即返回,解析在后台进行,前端用返回的 file_id 轮询进度"""
|
||||
progress = await _service(request).upload(
|
||||
user.id, conversation_id, file.filename, file.file
|
||||
)
|
||||
return success_response(_detail(record))
|
||||
return success_response(progress)
|
||||
|
||||
|
||||
@router.get("")
|
||||
@@ -124,12 +126,14 @@ async def list_files(
|
||||
conversation_id: Annotated[NonBlankString, Query()],
|
||||
user: Annotated[CurrentUser, Depends(get_current_user)],
|
||||
) -> ApiResponse[DataFileList]:
|
||||
records = await _service(request).list_files(user.id, conversation_id)
|
||||
service = _service(request)
|
||||
records = await service.list_files(user.id, conversation_id)
|
||||
return success_response(
|
||||
DataFileList(
|
||||
files=[
|
||||
DataFileInfo.model_validate(record.model_dump()) for record in records
|
||||
]
|
||||
],
|
||||
uploads=service.list_uploads(user.id, conversation_id),
|
||||
)
|
||||
)
|
||||
|
||||
@@ -143,16 +147,13 @@ async def get_file(
|
||||
return success_response(_detail(await _service(request).get_file(user.id, file_id)))
|
||||
|
||||
|
||||
@router.post("/{file_id}/insights")
|
||||
async def regenerate_insights(
|
||||
@router.get("/{file_id}/progress")
|
||||
async def get_progress(
|
||||
file_id: str,
|
||||
request: Request,
|
||||
user: Annotated[CurrentUser, Depends(get_current_user)],
|
||||
) -> ApiResponse[DataFileDetail]:
|
||||
"""重新分析文件,上次分析失败后用;分析在后台进行,返回的 insights 为 pending"""
|
||||
return success_response(
|
||||
_detail(await _service(request).regenerate_insights(user.id, file_id))
|
||||
)
|
||||
) -> ApiResponse[UploadProgress]:
|
||||
return success_response(await _service(request).get_progress(user.id, file_id))
|
||||
|
||||
|
||||
@router.get("/{file_id}/tables/{table}/rows")
|
||||
|
||||
Reference in New Issue
Block a user