mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
fix: Fix the issue of custom data source recommendation not displaying (#587)
This commit is contained in:
@@ -2,7 +2,7 @@ from fastapi import APIRouter
|
||||
|
||||
from apps.datasource.crud.datasource import update_ds_recommended_config
|
||||
from apps.datasource.crud.recommended_problem import get_datasource_recommended, \
|
||||
save_recommended_problem
|
||||
save_recommended_problem, get_datasource_recommended_base
|
||||
from apps.datasource.models.datasource import RecommendedProblemBase
|
||||
from common.core.deps import SessionDep, CurrentUser
|
||||
|
||||
@@ -13,6 +13,10 @@ router = APIRouter(tags=["recommended_problem"], prefix="/recommended_problem")
|
||||
async def datasource_recommended(session: SessionDep, ds_id: int):
|
||||
return get_datasource_recommended(session, ds_id)
|
||||
|
||||
@router.get("/get_datasource_recommended_base/{ds_id}")
|
||||
async def datasource_recommended(session: SessionDep, ds_id: int):
|
||||
return get_datasource_recommended_base(session, ds_id)
|
||||
|
||||
|
||||
@router.post("/save_recommended_problem")
|
||||
async def datasource_recommended(session: SessionDep, user: CurrentUser, data_info: RecommendedProblemBase):
|
||||
|
||||
@@ -3,7 +3,8 @@ import datetime
|
||||
from sqlmodel import select
|
||||
|
||||
from common.core.deps import SessionDep, CurrentUser, Trans
|
||||
from ..models.datasource import DsRecommendedProblem, RecommendedProblemBase, RecommendedProblemBaseChat
|
||||
from ..models.datasource import DsRecommendedProblem, RecommendedProblemBase, CoreDatasource, RecommendedProblemResponse
|
||||
import orjson
|
||||
|
||||
|
||||
def get_datasource_recommended(session: SessionDep, ds_id: int):
|
||||
@@ -16,6 +17,18 @@ def get_datasource_recommended_chart(session: SessionDep, ds_id: int):
|
||||
dsRecommendedProblems = session.exec(statement).all()
|
||||
return dsRecommendedProblems
|
||||
|
||||
|
||||
def get_datasource_recommended_base(session: SessionDep, ds_id: int):
|
||||
statement = select(CoreDatasource.id,CoreDatasource.recommended_config).where(CoreDatasource.id == ds_id)
|
||||
datasourceBase = session.exec(statement).first()
|
||||
if datasourceBase is None:
|
||||
return RecommendedProblemResponse(ds_id,0,None)
|
||||
elif datasourceBase.recommended_config == 1:
|
||||
return RecommendedProblemResponse(ds_id,1,None)
|
||||
else:
|
||||
dsRecommendedProblems = session.exec(select(DsRecommendedProblem.question).where(DsRecommendedProblem.datasource_id == ds_id)).all()
|
||||
return RecommendedProblemResponse(ds_id,datasourceBase.recommended_config, orjson.dumps(dsRecommendedProblems).decode())
|
||||
|
||||
def save_recommended_problem(session: SessionDep,user: CurrentUser, data_info: RecommendedProblemBase):
|
||||
session.query(DsRecommendedProblem).filter(DsRecommendedProblem.datasource_id == data_info.datasource_id).delete(synchronize_session=False)
|
||||
problemInfo = data_info.problemInfo
|
||||
|
||||
@@ -74,6 +74,16 @@ class CreateDatasource(BaseModel):
|
||||
tables: List[CoreTable] = []
|
||||
recommended_config: int = 1
|
||||
|
||||
class RecommendedProblemResponse:
|
||||
def __init__(self, datasource_id,recommended_config,questions):
|
||||
self.datasource_id = datasource_id
|
||||
self.recommended_config = recommended_config
|
||||
self.questions = questions
|
||||
datasource_id: int = None
|
||||
recommended_config: int = None
|
||||
questions: str = None
|
||||
|
||||
|
||||
class RecommendedProblemBase(BaseModel):
|
||||
datasource_id: int = None
|
||||
recommended_config: int = None
|
||||
|
||||
@@ -5,4 +5,7 @@ export const recommendedApi = {
|
||||
request.get(`/recommended_problem/get_datasource_recommended/${dsId}`),
|
||||
save_recommended_problem: (data: any) =>
|
||||
request.post(`/recommended_problem/save_recommended_problem`, data),
|
||||
get_datasource_recommended_base: (datasource_id?: number): Promise<any> => {
|
||||
return request.get(`/recommended_problem/get_datasource_recommended_base/${datasource_id}`)
|
||||
},
|
||||
}
|
||||
|
||||
@@ -104,6 +104,7 @@ const props = withDefaults(
|
||||
:current-chat="currentChat"
|
||||
:record-id="recordId"
|
||||
:questions="questions"
|
||||
:datasource="datasourceId"
|
||||
:disabled="disabled"
|
||||
:first-chat="firstChat"
|
||||
position="input"
|
||||
|
||||
@@ -2,15 +2,18 @@
|
||||
import { computed, nextTick, onBeforeUnmount, ref } from 'vue'
|
||||
import { endsWith, startsWith } from 'lodash-es'
|
||||
import { chatApi } from '@/api/chat.ts'
|
||||
import { recommendedApi } from '@/api/recommendedApi.ts'
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
recordId?: number
|
||||
disabled?: boolean
|
||||
datasource?: number
|
||||
}>(),
|
||||
{
|
||||
recordId: undefined,
|
||||
disabled: false,
|
||||
datasource: undefined,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -41,6 +44,16 @@ function clickQuestion(question: string): void {
|
||||
const stopFlag = ref(false)
|
||||
|
||||
async function getRecommendQuestions(articles_number: number) {
|
||||
recommendedApi.get_datasource_recommended_base(props.datasource).then((res) => {
|
||||
if (res.recommended_config === 2) {
|
||||
questions.value = res.questions
|
||||
} else {
|
||||
getRecommendQuestionsLLM(articles_number)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
async function getRecommendQuestionsLLM(articles_number: number) {
|
||||
stopFlag.value = false
|
||||
loading.value = true
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user