Co-authored-by: jyong <718720800@qq.com>tags/1.9.0
| @@ -33,7 +33,6 @@ from .dataset import ( | |||
| hit_testing, # pyright: ignore[reportUnusedImport] | |||
| metadata, # pyright: ignore[reportUnusedImport] | |||
| segment, # pyright: ignore[reportUnusedImport] | |||
| upload_file, # pyright: ignore[reportUnusedImport] | |||
| ) | |||
| from .workspace import models # pyright: ignore[reportUnusedImport] | |||
| @@ -1,65 +0,0 @@ | |||
| from werkzeug.exceptions import NotFound | |||
| from controllers.service_api import service_api_ns | |||
| from controllers.service_api.wraps import ( | |||
| DatasetApiResource, | |||
| ) | |||
| from core.file import helpers as file_helpers | |||
| from extensions.ext_database import db | |||
| from models.dataset import Dataset | |||
| from models.model import UploadFile | |||
| from services.dataset_service import DocumentService | |||
| @service_api_ns.route("/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/upload-file") | |||
| class UploadFileApi(DatasetApiResource): | |||
| @service_api_ns.doc("get_upload_file") | |||
| @service_api_ns.doc(description="Get upload file information and download URL") | |||
| @service_api_ns.doc(params={"dataset_id": "Dataset ID", "document_id": "Document ID"}) | |||
| @service_api_ns.doc( | |||
| responses={ | |||
| 200: "Upload file information retrieved successfully", | |||
| 401: "Unauthorized - invalid API token", | |||
| 404: "Dataset, document, or upload file not found", | |||
| } | |||
| ) | |||
| def get(self, tenant_id, dataset_id, document_id): | |||
| """Get upload file information and download URL. | |||
| Returns information about an uploaded file including its download URL. | |||
| """ | |||
| # check dataset | |||
| dataset_id = str(dataset_id) | |||
| tenant_id = str(tenant_id) | |||
| dataset = db.session.query(Dataset).where(Dataset.tenant_id == tenant_id, Dataset.id == dataset_id).first() | |||
| if not dataset: | |||
| raise NotFound("Dataset not found.") | |||
| # check document | |||
| document_id = str(document_id) | |||
| document = DocumentService.get_document(dataset.id, document_id) | |||
| if not document: | |||
| raise NotFound("Document not found.") | |||
| # check upload file | |||
| if document.data_source_type != "upload_file": | |||
| raise ValueError(f"Document data source type ({document.data_source_type}) is not upload_file.") | |||
| data_source_info = document.data_source_info_dict | |||
| if data_source_info and "upload_file_id" in data_source_info: | |||
| file_id = data_source_info["upload_file_id"] | |||
| upload_file = db.session.query(UploadFile).where(UploadFile.id == file_id).first() | |||
| if not upload_file: | |||
| raise NotFound("UploadFile not found.") | |||
| else: | |||
| raise ValueError("Upload file id not found in document data source info.") | |||
| url = file_helpers.get_signed_file_url(upload_file_id=upload_file.id) | |||
| return { | |||
| "id": upload_file.id, | |||
| "name": upload_file.name, | |||
| "size": upload_file.size, | |||
| "extension": upload_file.extension, | |||
| "url": url, | |||
| "download_url": f"{url}&as_attachment=true", | |||
| "mime_type": upload_file.mime_type, | |||
| "created_by": upload_file.created_by, | |||
| "created_at": upload_file.created_at.timestamp(), | |||
| }, 200 | |||
| @@ -1949,57 +1949,6 @@ ___ | |||
| <hr style={{ marginLeft: 0, marginRight: 0, width: '100%', maxWidth: '100%' }} /> | |||
| <Heading | |||
| url='/datasets/{dataset_id}/documents/{document_id}/upload-file' | |||
| method='GET' | |||
| title='Get Upload File' | |||
| name='#get_upload_file' | |||
| /> | |||
| <Row> | |||
| <Col> | |||
| ### Path | |||
| <Properties> | |||
| <Property name='dataset_id' type='string' key='dataset_id'> | |||
| Knowledge ID | |||
| </Property> | |||
| <Property name='document_id' type='string' key='document_id'> | |||
| Document ID | |||
| </Property> | |||
| </Properties> | |||
| </Col> | |||
| <Col sticky> | |||
| <CodeGroup | |||
| title="Request" | |||
| tag="GET" | |||
| label="/datasets/{dataset_id}/documents/{document_id}/upload-file" | |||
| targetCode={`curl --location --request GET '${props.apiBaseUrl}/datasets/{dataset_id}/documents/{document_id}/upload-file' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json'`} | |||
| > | |||
| ```bash {{ title: 'cURL' }} | |||
| curl --location --request GET '${props.apiBaseUrl}/datasets/{dataset_id}/documents/{document_id}/upload-file' \ | |||
| --header 'Authorization: Bearer {api_key}' \ | |||
| --header 'Content-Type: application/json' | |||
| ``` | |||
| </CodeGroup> | |||
| <CodeGroup title="Response"> | |||
| ```json {{ title: 'Response' }} | |||
| { | |||
| "id": "file_id", | |||
| "name": "file_name", | |||
| "size": 1024, | |||
| "extension": "txt", | |||
| "url": "preview_url", | |||
| "download_url": "download_url", | |||
| "mime_type": "text/plain", | |||
| "created_by": "user_id", | |||
| "created_at": 1728734540, | |||
| } | |||
| ``` | |||
| </CodeGroup> | |||
| </Col> | |||
| </Row> | |||
| <hr style={{ marginLeft: 0, marginRight: 0, width: '100%', maxWidth: '100%' }} /> | |||
| <Heading | |||
| url='/datasets/{dataset_id}/retrieve' | |||
| method='POST' | |||
| @@ -1705,57 +1705,6 @@ ___ | |||
| <hr style={{ marginLeft: 0, marginRight: 0, width: '100%', maxWidth: '100%' }} /> | |||
| <Heading | |||
| url='/datasets/{dataset_id}/documents/{document_id}/upload-file' | |||
| method='GET' | |||
| title='アップロードファイルを取得' | |||
| name='#get_upload_file' | |||
| /> | |||
| <Row> | |||
| <Col> | |||
| ### パス | |||
| <Properties> | |||
| <Property name='dataset_id' type='string' key='dataset_id'> | |||
| ナレッジ ID | |||
| </Property> | |||
| <Property name='document_id' type='string' key='document_id'> | |||
| ドキュメント ID | |||
| </Property> | |||
| </Properties> | |||
| </Col> | |||
| <Col sticky> | |||
| <CodeGroup | |||
| title="リクエスト" | |||
| tag="GET" | |||
| label="/datasets/{dataset_id}/documents/{document_id}/upload-file" | |||
| targetCode={`curl --location --request GET '${props.apiBaseUrl}/datasets/{dataset_id}/documents/{document_id}/upload-file' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json'`} | |||
| > | |||
| ```bash {{ title: 'cURL' }} | |||
| curl --location --request GET '${props.apiBaseUrl}/datasets/{dataset_id}/documents/{document_id}/upload-file' \ | |||
| --header 'Authorization: Bearer {api_key}' \ | |||
| --header 'Content-Type: application/json' | |||
| ``` | |||
| </CodeGroup> | |||
| <CodeGroup title="レスポンス"> | |||
| ```json {{ title: 'Response' }} | |||
| { | |||
| "id": "file_id", | |||
| "name": "file_name", | |||
| "size": 1024, | |||
| "extension": "txt", | |||
| "url": "preview_url", | |||
| "download_url": "download_url", | |||
| "mime_type": "text/plain", | |||
| "created_by": "user_id", | |||
| "created_at": 1728734540, | |||
| } | |||
| ``` | |||
| </CodeGroup> | |||
| </Col> | |||
| </Row> | |||
| <hr style={{ marginLeft: 0, marginRight: 0, width: '100%', maxWidth: '100%' }} /> | |||
| <Heading | |||
| url='/datasets/{dataset_id}/retrieve' | |||
| method='POST' | |||
| @@ -2594,4 +2543,3 @@ ___ | |||
| </tbody> | |||
| </table> | |||
| <div className="pb-4" /> | |||
| @@ -1991,57 +1991,6 @@ ___ | |||
| <hr style={{ marginLeft: 0, marginRight: 0, width: '100%', maxWidth: '100%' }} /> | |||
| <Heading | |||
| url='/datasets/{dataset_id}/documents/{document_id}/upload-file' | |||
| method='GET' | |||
| title='获取上传文件' | |||
| name='#get_upload_file' | |||
| /> | |||
| <Row> | |||
| <Col> | |||
| ### Path | |||
| <Properties> | |||
| <Property name='dataset_id' type='string' key='dataset_id'> | |||
| 知识库 ID | |||
| </Property> | |||
| <Property name='document_id' type='string' key='document_id'> | |||
| 文档 ID | |||
| </Property> | |||
| </Properties> | |||
| </Col> | |||
| <Col sticky> | |||
| <CodeGroup | |||
| title="Request" | |||
| tag="GET" | |||
| label="/datasets/{dataset_id}/documents/{document_id}/upload-file" | |||
| targetCode={`curl --location --request GET '${props.apiBaseUrl}/datasets/{dataset_id}/documents/{document_id}/upload-file' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json'`} | |||
| > | |||
| ```bash {{ title: 'cURL' }} | |||
| curl --location --request GET '${props.apiBaseUrl}/datasets/{dataset_id}/documents/{document_id}/upload-file' \ | |||
| --header 'Authorization: Bearer {api_key}' \ | |||
| --header 'Content-Type: application/json' | |||
| ``` | |||
| </CodeGroup> | |||
| <CodeGroup title="Response"> | |||
| ```json {{ title: 'Response' }} | |||
| { | |||
| "id": "file_id", | |||
| "name": "file_name", | |||
| "size": 1024, | |||
| "extension": "txt", | |||
| "url": "preview_url", | |||
| "download_url": "download_url", | |||
| "mime_type": "text/plain", | |||
| "created_by": "user_id", | |||
| "created_at": 1728734540, | |||
| } | |||
| ``` | |||
| </CodeGroup> | |||
| </Col> | |||
| </Row> | |||
| <hr style={{ marginLeft: 0, marginRight: 0, width: '100%', maxWidth: '100%' }} /> | |||
| <Heading | |||
| url='/datasets/{dataset_id}/retrieve' | |||
| method='POST' | |||