feat: export

This commit is contained in:
ulleo
2025-08-05 10:56:59 +08:00
parent 8b20110ebc
commit 86abe25e27
5 changed files with 30 additions and 22 deletions
+9 -5
View File
@@ -1,5 +1,8 @@
import datetime
import hashlib
import io
import traceback
import uuid
import numpy as np
import pandas as pd
@@ -12,6 +15,7 @@ from apps.chat.models.chat_model import CreateChat, ChatRecord, RenameChat, Chat
from apps.chat.task.llm import LLMService
from common.core.config import settings
from common.core.deps import CurrentAssistant, SessionDep, CurrentUser
from starlette.responses import FileResponse
router = APIRouter(tags=["Data Q&A"], prefix="/chat")
@@ -202,12 +206,12 @@ async def export_excel(excel_data: ExcelData):
_fields_list.append(field.name)
df = pd.DataFrame(np.array(data), columns=_fields_list)
file_name = f"{excel_data.name}-{datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.xlsx"
file_name = f"{excel_data.name}-{datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}_{hashlib.sha256(uuid.uuid4().bytes).hexdigest()[:10]}.xlsx"
file_path = f'{(settings.EXCEL_PATH if settings.EXCEL_PATH[-1] == "/" else (settings.EXCEL_PATH + "/"))}{file_name}'
file_download_path = f'{(settings.SERVER_EXCEL_HOST if settings.SERVER_EXCEL_HOST[-1] == "/" else (settings.SERVER_EXCEL_HOST + "/"))}{file_name}'
buffer = io.BytesIO()
df.to_excel(buffer, index=False)
buffer.seek(0)
df.to_excel(file_path, index=False)
return file_download_path
return StreamingResponse(io.BytesIO(buffer.getvalue()))
+2 -1
View File
@@ -8,6 +8,7 @@ import pandas as pd
from fastapi import APIRouter, File, UploadFile, HTTPException
from apps.db.engine import create_table, get_data_engine, insert_data
from common.core.config import settings
from common.core.deps import SessionDep, CurrentUser, Trans
from common.utils.utils import SQLBotLogUtil
from ..crud.datasource import get_datasource_list, check_status, create_ds, update_ds, delete_ds, getTables, getFields, \
@@ -17,7 +18,7 @@ from ..crud.table import get_tables_by_ds_id
from ..models.datasource import CoreDatasource, CreateDatasource, TableObj, CoreTable, CoreField
router = APIRouter(tags=["datasource"], prefix="/datasource")
path = "/opt/sqlbot/data/excel"
path = settings.EXCEL_PATH
@router.get("/ws/{oid}", include_in_schema=False)