perf: Assistant uses workspace-level Q&A configuration

This commit is contained in:
ulleo
2026-01-30 17:06:29 +08:00
committed by ulleo
parent 041a0a3a9e
commit 9decb9189b
2 changed files with 22 additions and 46 deletions
@@ -162,10 +162,7 @@ def create_training(session: SessionDep, info: DataTrainingInfo, oid: int, trans
# 检查数据源和高级应用不能同时为空
if info.datasource is None and info.advanced_application is None:
if oid == 1:
raise Exception(trans("i18n_data_training.datasource_assistant_cannot_be_none"))
else:
raise Exception(trans("i18n_data_training.datasource_cannot_be_none"))
raise Exception(trans("i18n_data_training.datasource_assistant_cannot_be_none"))
# 检查重复记录
stmt = select(DataTraining.id).where(
@@ -221,10 +218,7 @@ def update_training(session: SessionDep, info: DataTrainingInfo, oid: int, trans
raise Exception(trans("i18n_data_training.description_cannot_be_empty"))
if info.datasource is None and info.advanced_application is None:
if oid == 1:
raise Exception(trans("i18n_data_training.datasource_assistant_cannot_be_none"))
else:
raise Exception(trans("i18n_data_training.datasource_cannot_be_none"))
raise Exception(trans("i18n_data_training.datasource_assistant_cannot_be_none"))
count = session.query(DataTraining).filter(
DataTraining.id == info.id
@@ -310,11 +304,11 @@ def batch_create_training(session: SessionDep, info_list: List[DataTrainingInfo]
datasource_name_to_id[ds.name.strip()] = ds.id
assistant_name_to_id = {}
if oid == 1:
assistant_stmt = select(AssistantModel.id, AssistantModel.name).where(AssistantModel.type == 1)
assistant_result = session.execute(assistant_stmt).all()
for assistant in assistant_result:
assistant_name_to_id[assistant.name.strip()] = assistant.id
assistant_stmt = select(AssistantModel.id, AssistantModel.name).where(and_(AssistantModel.type == 1, AssistantModel.oid == oid))
assistant_result = session.execute(assistant_stmt).all()
for assistant in assistant_result:
assistant_name_to_id[assistant.name.strip()] = assistant.id
# 验证和转换数据
valid_records = []
@@ -338,7 +332,7 @@ def batch_create_training(session: SessionDep, info_list: List[DataTrainingInfo]
# 高级应用验证和转换
advanced_application_id = None
if oid == 1 and info.advanced_application_name and info.advanced_application_name.strip():
if info.advanced_application_name and info.advanced_application_name.strip():
if info.advanced_application_name.strip() in assistant_name_to_id:
advanced_application_id = assistant_name_to_id[info.advanced_application_name.strip()]
else:
@@ -346,12 +340,8 @@ def batch_create_training(session: SessionDep, info_list: List[DataTrainingInfo]
trans("i18n_data_training.advanced_application_not_found").format(info.advanced_application_name))
# 检查数据源和高级应用不能同时为空
if oid == 1:
if not datasource_id and not advanced_application_id:
error_messages.append(trans("i18n_data_training.datasource_assistant_cannot_be_none"))
else:
if not datasource_id:
error_messages.append(trans("i18n_data_training.datasource_cannot_be_none"))
if not datasource_id and not advanced_application_id:
error_messages.append(trans("i18n_data_training.datasource_assistant_cannot_be_none"))
if error_messages:
failed_records.append({
+12 -26
View File
@@ -11,7 +11,6 @@ import IconOpeDelete from '@/assets/svg/icon_delete.svg'
import icon_searchOutline_outlined from '@/assets/svg/icon_search-outline_outlined.svg'
import EmptyBackground from '@/views/dashboard/common/EmptyBackground.vue'
import { useClipboard } from '@vueuse/core'
import { useUserStore } from '@/stores/user'
import { useI18n } from 'vue-i18n'
import { cloneDeep } from 'lodash-es'
import { getAdvancedApplicationList } from '@/api/embedded.ts'
@@ -26,7 +25,6 @@ interface Form {
advanced_application_name: string | null
description: string | null
}
const userStore = useUserStore()
const { t } = useI18n()
const multipleSelectionAll = ref<any[]>([])
const keywords = ref('')
@@ -42,10 +40,6 @@ onMounted(() => {
search()
})
const isDefaultOrg = computed(() => {
return userStore.oid === '1'
})
const dialogFormVisible = ref<boolean>(false)
const multipleTableRef = ref()
const isIndeterminate = ref(true)
@@ -261,14 +255,13 @@ const rules = computed(() => {
},
],
}
if (!isDefaultOrg.value) {
_list.datasource = [
{
required: true,
message: t('datasource.Please_select') + t('common.empty') + t('ds.title'),
},
]
}
// _list.datasource = [
// {
// required: true,
// message: t('datasource.Please_select') + t('common.empty') + t('ds.title'),
// },
// ]
return _list
})
@@ -276,11 +269,9 @@ const list = () => {
datasourceApi.list().then((res: any) => {
options.value = res || []
})
if (isDefaultOrg.value) {
getAdvancedApplicationList().then((res: any) => {
adv_options.value = res || []
})
}
getAdvancedApplicationList().then((res: any) => {
adv_options.value = res || []
})
}
const saveHandler = () => {
@@ -426,7 +417,6 @@ const onRowFormClose = () => {
</el-table-column>
<el-table-column prop="datasource_name" :label="$t('ds.title')" min-width="180" />
<el-table-column
v-if="isDefaultOrg"
prop="advanced_application_name"
:label="$t('embedded.advanced_application')"
min-width="180"
@@ -588,11 +578,7 @@ const onRowFormClose = () => {
</el-select>
</el-form-item>
<el-form-item
v-if="isDefaultOrg"
prop="advanced_application"
:label="t('embedded.advanced_application')"
>
<el-form-item prop="advanced_application" :label="t('embedded.advanced_application')">
<el-select
v-model="pageForm.advanced_application"
filterable
@@ -653,7 +639,7 @@ const onRowFormClose = () => {
{{ pageForm.datasource_name }}
</div>
</el-form-item>
<el-form-item v-if="isDefaultOrg" :label="t('embedded.advanced_application')">
<el-form-item :label="t('embedded.advanced_application')">
<div class="content">
{{ pageForm.advanced_application_name }}
</div>