From 6a19615f02c70acb18e15b1e39aab560e14219f7 Mon Sep 17 00:00:00 2001 From: ulleo Date: Wed, 22 Oct 2025 17:02:24 +0800 Subject: [PATCH] feat: chart & export Excel support large number data #233 fix get predict data error --- backend/apps/chat/api/chat.py | 4 ++-- backend/apps/chat/curd/chat.py | 13 ++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/backend/apps/chat/api/chat.py b/backend/apps/chat/api/chat.py index 5f0199b8..6fe358f0 100644 --- a/backend/apps/chat/api/chat.py +++ b/backend/apps/chat/api/chat.py @@ -10,7 +10,7 @@ from apps.chat.curd.chat import list_chats, get_chat_with_records, create_chat, rename_chat, \ delete_chat, get_chat_chart_data, get_chat_predict_data, get_chat_with_records_with_data, get_chat_record_by_id, \ - format_json_data + format_json_data, format_json_list_data from apps.chat.models.chat_model import CreateChat, ChatRecord, RenameChat, ChatQuestion, ExcelData from apps.chat.task.llm import LLMService from common.core.deps import CurrentAssistant, SessionDep, CurrentUser, Trans @@ -55,7 +55,7 @@ def inner(): async def chat_predict_data(session: SessionDep, chart_record_id: int): def inner(): data = get_chat_predict_data(chart_record_id=chart_record_id, session=session) - return format_json_data(data) + return format_json_list_data(data) return await asyncio.to_thread(inner) diff --git a/backend/apps/chat/curd/chat.py b/backend/apps/chat/curd/chat.py index 6109c40f..2c8a56a6 100644 --- a/backend/apps/chat/curd/chat.py +++ b/backend/apps/chat/curd/chat.py @@ -88,8 +88,16 @@ def get_last_execute_sql_error(session: SessionDep, chart_id: int): def format_json_data(origin_data: dict): result = {'fields': origin_data.get('fields') if origin_data.get('fields') else []} + _list = origin_data.get('data') if origin_data.get('data') else [] + data = format_json_list_data(_list) + result['data'] = data + + return result + + +def format_json_list_data(origin_data: list[dict]): data = [] - for _data in origin_data.get('data') if origin_data.get('data') else []: + for _data in origin_data if origin_data else []: _row = {} for key, value in _data.items(): if value is not None: @@ -105,9 +113,8 @@ def format_json_data(origin_data: dict): value = str(value) _row[key] = value data.append(_row) - result['data'] = data - return result + return data def get_chat_chart_data(session: SessionDep, chart_record_id: int):