Skip to content

Commit 92a19a3

Browse files
authored
fix: Fix the issue of custom data source recommendation not displaying (#587)
1 parent 9e39a58 commit 92a19a3

File tree

6 files changed

+46
-2
lines changed

6 files changed

+46
-2
lines changed

backend/apps/datasource/api/recommended_problem.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from apps.datasource.crud.datasource import update_ds_recommended_config
44
from apps.datasource.crud.recommended_problem import get_datasource_recommended, \
5-
save_recommended_problem
5+
save_recommended_problem, get_datasource_recommended_base
66
from apps.datasource.models.datasource import RecommendedProblemBase
77
from common.core.deps import SessionDep, CurrentUser
88

@@ -13,6 +13,10 @@
1313
async def datasource_recommended(session: SessionDep, ds_id: int):
1414
return get_datasource_recommended(session, ds_id)
1515

16+
@router.get("/get_datasource_recommended_base/{ds_id}")
17+
async def datasource_recommended(session: SessionDep, ds_id: int):
18+
return get_datasource_recommended_base(session, ds_id)
19+
1620

1721
@router.post("/save_recommended_problem")
1822
async def datasource_recommended(session: SessionDep, user: CurrentUser, data_info: RecommendedProblemBase):

backend/apps/datasource/crud/recommended_problem.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
from sqlmodel import select
44

55
from common.core.deps import SessionDep, CurrentUser, Trans
6-
from ..models.datasource import DsRecommendedProblem, RecommendedProblemBase, RecommendedProblemBaseChat
6+
from ..models.datasource import DsRecommendedProblem, RecommendedProblemBase, CoreDatasource, RecommendedProblemResponse
7+
import orjson
78

89

910
def get_datasource_recommended(session: SessionDep, ds_id: int):
@@ -16,6 +17,18 @@ def get_datasource_recommended_chart(session: SessionDep, ds_id: int):
1617
dsRecommendedProblems = session.exec(statement).all()
1718
return dsRecommendedProblems
1819

20+
21+
def get_datasource_recommended_base(session: SessionDep, ds_id: int):
22+
statement = select(CoreDatasource.id,CoreDatasource.recommended_config).where(CoreDatasource.id == ds_id)
23+
datasourceBase = session.exec(statement).first()
24+
if datasourceBase is None:
25+
return RecommendedProblemResponse(ds_id,0,None)
26+
elif datasourceBase.recommended_config == 1:
27+
return RecommendedProblemResponse(ds_id,1,None)
28+
else:
29+
dsRecommendedProblems = session.exec(select(DsRecommendedProblem.question).where(DsRecommendedProblem.datasource_id == ds_id)).all()
30+
return RecommendedProblemResponse(ds_id,datasourceBase.recommended_config, orjson.dumps(dsRecommendedProblems).decode())
31+
1932
def save_recommended_problem(session: SessionDep,user: CurrentUser, data_info: RecommendedProblemBase):
2033
session.query(DsRecommendedProblem).filter(DsRecommendedProblem.datasource_id == data_info.datasource_id).delete(synchronize_session=False)
2134
problemInfo = data_info.problemInfo

backend/apps/datasource/models/datasource.py

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

77+
class RecommendedProblemResponse:
78+
def __init__(self, datasource_id,recommended_config,questions):
79+
self.datasource_id = datasource_id
80+
self.recommended_config = recommended_config
81+
self.questions = questions
82+
datasource_id: int = None
83+
recommended_config: int = None
84+
questions: str = None
85+
86+
7787
class RecommendedProblemBase(BaseModel):
7888
datasource_id: int = None
7989
recommended_config: int = None

frontend/src/api/recommendedApi.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,7 @@ export const recommendedApi = {
55
request.get(`/recommended_problem/get_datasource_recommended/${dsId}`),
66
save_recommended_problem: (data: any) =>
77
request.post(`/recommended_problem/save_recommended_problem`, data),
8+
get_datasource_recommended_base: (datasource_id?: number): Promise<any> => {
9+
return request.get(`/recommended_problem/get_datasource_recommended_base/${datasource_id}`)
10+
},
811
}

frontend/src/views/chat/QuickQuestion.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ const props = withDefaults(
104104
:current-chat="currentChat"
105105
:record-id="recordId"
106106
:questions="questions"
107+
:datasource="datasourceId"
107108
:disabled="disabled"
108109
:first-chat="firstChat"
109110
position="input"

frontend/src/views/chat/RecommendQuestionQuick.vue

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22
import { computed, nextTick, onBeforeUnmount, ref } from 'vue'
33
import { endsWith, startsWith } from 'lodash-es'
44
import { chatApi } from '@/api/chat.ts'
5+
import { recommendedApi } from '@/api/recommendedApi.ts'
56
67
const props = withDefaults(
78
defineProps<{
89
recordId?: number
910
disabled?: boolean
11+
datasource?: number
1012
}>(),
1113
{
1214
recordId: undefined,
1315
disabled: false,
16+
datasource: undefined,
1417
}
1518
)
1619
@@ -41,6 +44,16 @@ function clickQuestion(question: string): void {
4144
const stopFlag = ref(false)
4245
4346
async function getRecommendQuestions(articles_number: number) {
47+
recommendedApi.get_datasource_recommended_base(props.datasource).then((res) => {
48+
if (res.recommended_config === 2) {
49+
questions.value = res.questions
50+
} else {
51+
getRecommendQuestionsLLM(articles_number)
52+
}
53+
})
54+
}
55+
56+
async function getRecommendQuestionsLLM(articles_number: number) {
4457
stopFlag.value = false
4558
loading.value = true
4659
try {

0 commit comments

Comments
 (0)