99
1010from apps .chat .models .chat_model import Chat , ChatRecord , CreateChat , ChatInfo , RenameChat , ChatQuestion , ChatLog , \
1111 TypeEnum , OperationEnum , ChatRecordResult , ChatLogHistory , ChatLogHistoryItem
12+ from apps .datasource .crud .datasource import get_ds
1213from apps .datasource .crud .recommended_problem import get_datasource_recommended_chart
1314from apps .datasource .models .datasource import CoreDatasource
1415from apps .db .constant import DB
16+ from apps .db .db import exec_sql
1517from apps .system .crud .assistant import AssistantOutDs , AssistantOutDsFactory
1618from apps .system .schemas .system_schema import AssistantOutDsSchema
1719from common .core .deps import CurrentAssistant , SessionDep , CurrentUser , Trans
20+ from common .utils .data_format import DataFormat
1821from common .utils .utils import extract_nested_json
1922
2023
@@ -234,6 +237,20 @@ def get_chart_data_with_user(session: SessionDep, current_user: CurrentUser, cha
234237 pass
235238 return {}
236239
240+ def get_chart_data_with_user_live (session : SessionDep , current_user : CurrentUser , chat_record_id : int ):
241+ stmt = select (ChatRecord .datasource ,ChatRecord .sql ).where (and_ (ChatRecord .id == chat_record_id , ChatRecord .create_by == current_user .id ))
242+ row = session .execute (stmt ).first ()
243+ return get_chart_data_ds (session ,row .datasource , row .sql )
244+
245+ def get_chart_data_ds (session : SessionDep ,ds_id ,sql ):
246+ try :
247+ datasource = get_ds (session ,ds_id )
248+ result = exec_sql (ds = datasource ,sql = sql , origin_column = False )
249+ _data = DataFormat .convert_large_numbers_in_object_array (result .get ('data' ))
250+ return _data
251+ except Exception :
252+ pass
253+ return []
237254
238255def get_chat_chart_data (session : SessionDep , chat_record_id : int ):
239256 stmt = select (ChatRecord .data ).where (and_ (ChatRecord .id == chat_record_id ))
@@ -307,7 +324,7 @@ def get_chat_with_records(session: SessionDep, chart_id: int, current_user: Curr
307324 predict_alias_log = aliased (ChatLog )
308325
309326 stmt = (select (ChatRecord .id , ChatRecord .chat_id , ChatRecord .create_time , ChatRecord .finish_time ,
310- ChatRecord .question , ChatRecord .sql_answer , ChatRecord .sql ,
327+ ChatRecord .question , ChatRecord .sql_answer , ChatRecord .sql ,ChatRecord . datasource ,
311328 ChatRecord .chart_answer , ChatRecord .chart , ChatRecord .analysis , ChatRecord .predict ,
312329 ChatRecord .datasource_select_answer , ChatRecord .analysis_record_id , ChatRecord .predict_record_id ,
313330 ChatRecord .regenerate_record_id ,
@@ -334,7 +351,7 @@ def get_chat_with_records(session: SessionDep, chart_id: int, current_user: Curr
334351 ChatRecord .create_time ))
335352 if with_data :
336353 stmt = select (ChatRecord .id , ChatRecord .chat_id , ChatRecord .create_time , ChatRecord .finish_time ,
337- ChatRecord .question , ChatRecord .sql_answer , ChatRecord .sql ,
354+ ChatRecord .question , ChatRecord .sql_answer , ChatRecord .sql ,ChatRecord . datasource ,
338355 ChatRecord .chart_answer , ChatRecord .chart , ChatRecord .analysis , ChatRecord .predict ,
339356 ChatRecord .datasource_select_answer , ChatRecord .analysis_record_id , ChatRecord .predict_record_id ,
340357 ChatRecord .regenerate_record_id ,
@@ -400,7 +417,7 @@ def get_chat_with_records(session: SessionDep, chart_id: int, current_user: Curr
400417 finish_time = row .finish_time ,
401418 duration = duration ,
402419 total_tokens = total_tokens ,
403- question = row .question , sql_answer = row .sql_answer , sql = row .sql ,
420+ question = row .question , sql_answer = row .sql_answer , sql = row .sql , datasource = row . datasource ,
404421 chart_answer = row .chart_answer , chart = row .chart ,
405422 analysis = row .analysis , predict = row .predict ,
406423 datasource_select_answer = row .datasource_select_answer ,
@@ -419,7 +436,7 @@ def get_chat_with_records(session: SessionDep, chart_id: int, current_user: Curr
419436 finish_time = row .finish_time ,
420437 duration = duration ,
421438 total_tokens = total_tokens ,
422- question = row .question , sql_answer = row .sql_answer , sql = row .sql ,
439+ question = row .question , sql_answer = row .sql_answer , sql = row .sql , datasource = row . datasource ,
423440 chart_answer = row .chart_answer , chart = row .chart ,
424441 analysis = row .analysis , predict = row .predict ,
425442 datasource_select_answer = row .datasource_select_answer ,
0 commit comments