Skip to content

Commit a5ba142

Browse files
authored
refactor:update recommended questions custom config. (#491)
1 parent 88c885a commit a5ba142

File tree

13 files changed

+155
-46
lines changed

13 files changed

+155
-46
lines changed

backend/apps/chat/curd/chat.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88

99
from apps.chat.models.chat_model import Chat, ChatRecord, CreateChat, ChatInfo, RenameChat, ChatQuestion, ChatLog, \
1010
TypeEnum, OperationEnum, ChatRecordResult
11-
from apps.datasource.models.datasource import CoreDatasource
11+
from apps.datasource.crud.recommended_problem import get_datasource_recommended, get_datasource_recommended_chart
12+
from apps.datasource.models.datasource import CoreDatasource, DsRecommendedProblem
1213
from apps.system.crud.assistant import AssistantOutDsFactory
1314
from common.core.deps import CurrentAssistant, SessionDep, CurrentUser
1415
from common.utils.utils import extract_nested_json
@@ -70,6 +71,7 @@ def get_chart_config(session: SessionDep, chart_record_id: int):
7071
pass
7172
return {}
7273

74+
7375
def format_chart_fields(chart_info: dict):
7476
fields = []
7577
if chart_info.get('columns') and len(chart_info.get('columns')) > 0:
@@ -88,6 +90,7 @@ def format_chart_fields(chart_info: dict):
8890
fields.append(column_str)
8991
return fields
9092

93+
9194
def get_last_execute_sql_error(session: SessionDep, chart_id: int):
9295
stmt = select(ChatRecord.error).where(and_(ChatRecord.chat_id == chart_id)).order_by(
9396
ChatRecord.create_time.desc()).limit(1)
@@ -396,6 +399,12 @@ def create_chat(session: SessionDep, current_user: CurrentUser, create_chat_obj:
396399
record.finish = True
397400
record.create_time = datetime.datetime.now()
398401
record.create_by = current_user.id
402+
if ds.recommended_config == 2:
403+
questions = get_datasource_recommended_chart(session, ds.id)
404+
record.recommended_question = orjson.dumps(questions).decode()
405+
record.recommended_question_answer = orjson.dumps({
406+
"content": questions
407+
}).decode()
399408

400409
_record = ChatRecord(**record.model_dump())
401410

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
from fastapi import APIRouter
22

3-
from apps.datasource.crud.recommended_problem import get_datasource_recommended
4-
from common.core.deps import SessionDep
3+
from apps.datasource.crud.datasource import update_ds_recommended_config
4+
from apps.datasource.crud.recommended_problem import get_datasource_recommended, \
5+
save_recommended_problem
6+
from apps.datasource.models.datasource import RecommendedProblemBase
7+
from common.core.deps import SessionDep, CurrentUser
58

69
router = APIRouter(tags=["recommended_problem"], prefix="/recommended_problem")
710

@@ -10,3 +13,8 @@
1013
async def datasource_recommended(session: SessionDep, ds_id: int):
1114
return get_datasource_recommended(session, ds_id)
1215

16+
17+
@router.post("/save_recommended_problem")
18+
async def datasource_recommended(session: SessionDep, user: CurrentUser, data_info: RecommendedProblemBase):
19+
update_ds_recommended_config(session, data_info.datasource_id, data_info.recommended_config)
20+
return save_recommended_problem(session, user, data_info)

backend/apps/datasource/crud/datasource.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ def update_ds(session: SessionDep, trans: Trans, user: CurrentUser, ds: CoreData
109109
run_save_ds_embeddings([ds.id])
110110
return ds
111111

112+
def update_ds_recommended_config(session: SessionDep,datasource_id: int, recommended_config:int):
113+
record = session.exec(select(CoreDatasource).where(CoreDatasource.id == datasource_id)).first()
114+
record.recommended_config = recommended_config
115+
session.add(record)
116+
session.commit()
112117

113118
def delete_ds(session: SessionDep, id: int):
114119
term = session.exec(select(CoreDatasource).where(CoreDatasource.id == id)).first()
Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,31 @@
1+
import datetime
2+
13
from sqlmodel import select
24

3-
from common.core.deps import SessionDep
4-
from ..models.datasource import DsRecommendedProblem
5+
from common.core.deps import SessionDep, CurrentUser, Trans
6+
from ..models.datasource import DsRecommendedProblem, RecommendedProblemBase, RecommendedProblemBaseChat
57

68

79
def get_datasource_recommended(session: SessionDep, ds_id: int):
810
statement = select(DsRecommendedProblem).where(DsRecommendedProblem.datasource_id == ds_id)
9-
dsRecommendedProblem = session.exec(statement)
11+
dsRecommendedProblem = session.exec(statement).all()
1012
return dsRecommendedProblem
1113

14+
def get_datasource_recommended_chart(session: SessionDep, ds_id: int):
15+
statement = select(DsRecommendedProblem.question).where(DsRecommendedProblem.datasource_id == ds_id)
16+
dsRecommendedProblems = session.exec(statement).all()
17+
return dsRecommendedProblems
18+
19+
def save_recommended_problem(session: SessionDep,user: CurrentUser, data_info: RecommendedProblemBase):
20+
session.query(DsRecommendedProblem).filter(DsRecommendedProblem.datasource_id == data_info.datasource_id).delete(synchronize_session=False)
21+
problemInfo = data_info.problemInfo
22+
if problemInfo is not None:
23+
for problemItem in problemInfo:
24+
problemItem.id = None
25+
problemItem.create_time = datetime.datetime.now()
26+
problemItem.create_by = user.id
27+
record = DsRecommendedProblem(**problemItem.model_dump())
28+
session.add(record)
29+
session.flush()
30+
session.refresh(record)
31+
session.commit()

backend/apps/datasource/models/datasource.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,18 @@ class CreateDatasource(BaseModel):
7474
tables: List[CoreTable] = []
7575
recommended_config: int = 1
7676

77+
class RecommendedProblemBase(BaseModel):
78+
datasource_id: int = None
79+
recommended_config: int = None
80+
problemInfo: List[DsRecommendedProblem] = []
81+
82+
83+
class RecommendedProblemBaseChat:
84+
def __init__(self, content):
85+
self.content = content
86+
87+
content: List[str] = []
88+
7789

7890
# edit local saved table and fields
7991
class TableObj(BaseModel):

frontend/src/api/recommendedApi.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@ import { request } from '@/utils/request'
33
export const recommendedApi = {
44
get_recommended_problem: (dsId: any) =>
55
request.get(`/recommended_problem/get_datasource_recommended/${dsId}`),
6-
save_recommended_problem: (data: any) => request.post(`/recommended_problem/save`, data),
6+
save_recommended_problem: (data: any) =>
7+
request.post(`/recommended_problem/save_recommended_problem`, data),
78
}

frontend/src/i18n/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,7 @@
309309
}
310310
},
311311
"datasource": {
312+
"recommended_problem_tips": "Custom configuration requires at least one problem, each problem should be 2-200 characters",
312313
"recommended_problem_configuration": "Recommended Problem Configuration",
313314
"problem_generation_method": "Problem Generation Method",
314315
"ai_automatic_generation": "AI Automatic Generation",

frontend/src/i18n/ko-KR.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,7 @@
309309
}
310310
},
311311
"datasource": {
312+
"recommended_problem_tips": "사용자 정의 구성으로 최소 한 개의 문제를 생성하세요, 각 문제는 2~200자로 작성",
312313
"recommended_problem_configuration": "추천 문제 구성",
313314
"problem_generation_method": "문제 생성 방식",
314315
"ai_automatic_generation": "AI 자동 생성",

frontend/src/i18n/zh-CN.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,7 @@
309309
}
310310
},
311311
"datasource": {
312+
"recommended_problem_tips": "自定义配置至少一个问题,每个问题2-200个字符",
312313
"recommended_problem_configuration": "推荐问题配置",
313314
"problem_generation_method": "问题生成方式",
314315
"ai_automatic_generation": "AI 自动生成",

frontend/src/views/chat/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -704,7 +704,7 @@ function onChatCreatedQuick(chat: ChatInfo) {
704704
}
705705
706706
function onChatCreated(chat: ChatInfo) {
707-
if (chat.records.length === 1) {
707+
if (chat.records.length === 1 && !chat.records[0].recommended_question) {
708708
getRecommendQuestions(chat.records[0].id)
709709
}
710710
}

0 commit comments

Comments
 (0)