refactor: 优化组件和API的空值处理逻辑

- 在KnowledgeGraphSection和QuerySection组件中添加事件声明
- 移除mindmap_router和knowledge_router中不必要的404异常抛出
- 在SearchConfigModal中增加databaseId为空时的处理逻辑
- 在KnowledgeBaseCard中优化描述显示和样式调整
This commit is contained in:
Wenjie Zhang 2025-12-10 19:42:58 +08:00
parent 6f630782e1
commit 19cb293024
6 changed files with 35 additions and 12 deletions

View File

@ -1132,9 +1132,6 @@ async def get_sample_questions(db_id: str, current_user: User = Depends(get_admi
db_meta = knowledge_base.global_databases_meta[db_id]
questions = db_meta.get("sample_questions", [])
if not questions:
raise HTTPException(status_code=404, detail="该知识库还没有生成测试问题")
return {
"message": "success",
"questions": questions,

View File

@ -347,9 +347,6 @@ async def get_database_mindmap(db_id: str, current_user: User = Depends(get_admi
db_meta = knowledge_base.global_databases_meta[db_id]
mindmap_data = db_meta.get("mindmap")
if not mindmap_data:
raise HTTPException(status_code=404, detail="该知识库还没有生成思维导图")
return {
"message": "success",
"mindmap": mindmap_data,

View File

@ -5,6 +5,7 @@
<div class="header-left">
<a-button
@click="backToDatabase"
class="back-button"
shape="circle"
:icon="h(LeftOutlined)"
type="text"
@ -33,8 +34,8 @@
<!-- 卡片内容 -->
<div class="card-content">
<!-- 描述文本 -->
<div class="description" v-if="database.description">
<p class="description-text">{{ database.description }}</p>
<div class="description">
<p class="description-text">{{ database.description || '暂无描述' }}</p>
</div>
<!-- Tags -->
@ -66,7 +67,7 @@
<a-form-item label="知识库描述" name="description">
<a-textarea v-model:value="editForm.description" placeholder="请输入知识库描述" :rows="4" />
</a-form-item>
<a-form-item label="自动生成问题" name="auto_generate_questions">
<a-switch v-model:checked="editForm.auto_generate_questions" checked-children="开启" un-checked-children="关闭" />
<span style="margin-left: 8px; font-size: 12px; color: var(--gray-500);">上传文件后自动生成测试问题</span>
@ -165,7 +166,7 @@ const showEditModal = () => {
editForm.name = database.value.name || '';
editForm.description = database.value.description || '';
editForm.auto_generate_questions = database.value.additional_params?.auto_generate_questions || false;
// LightRAG LLM
if (database.value.kb_type === 'lightrag') {
const llmInfo = database.value.llm_info || {};
@ -244,9 +245,14 @@ const deleteDatabase = () => {
.header-left {
display: flex;
align-items: center;
gap: 8px;
gap: 4px;
flex: 1;
min-width: 0;
button.back-button {
margin-left: -5px;
font-size: 10px;
}
}
.card-title {
@ -267,10 +273,12 @@ const deleteDatabase = () => {
flex-shrink: 0;
button {
color: var(--gray-500);
height: 100%;
}
button:hover {
color: var(--gray-700);
background-color: var(--gray-100);
}
}

View File

@ -95,6 +95,9 @@ const props = defineProps({
},
});
//
const emit = defineEmits(['toggleVisible']);
const store = useDatabaseStore();
const databaseId = computed(() => store.databaseId);

View File

@ -183,6 +183,9 @@ const props = defineProps({
},
});
//
const emit = defineEmits(['toggleVisible']);
const searchLoading = computed(() => store.state.searchLoading);
const queryResult = ref('');
const showRawData = ref(true);

View File

@ -83,7 +83,7 @@ const props = defineProps({
},
databaseId: {
type: String,
required: true
default: ''
}
});
@ -129,6 +129,13 @@ const loadQueryParams = async () => {
loading.value = true;
error.value = '';
// databaseId
if (!props.databaseId) {
queryParams.value = [];
loading.value = false;
return;
}
const response = await queryApi.getKnowledgeBaseQueryParams(props.databaseId);
queryParams.value = response.params?.options || [];
@ -163,6 +170,8 @@ const loadQueryParams = async () => {
//
const loadSavedConfig = () => {
if (!props.databaseId) return;
const saved = localStorage.getItem(`search-config-${props.databaseId}`);
if (saved) {
try {
@ -201,6 +210,12 @@ const resetToDefaults = () => {
//
const handleSave = async () => {
// databaseId
if (!props.databaseId) {
message.error('无法保存配置缺少知识库ID');
return;
}
// include_distances true
meta['include_distances'] = true;