feat: add knowledge directory management for documents and FAQs

- Implemented directory validation in Create and Update knowledge document services.
- Added directory selection in document and FAQ edit dialogs with a new KnowledgeDirectoryPanel component.
- Enhanced API to support fetching, creating, updating, and deleting knowledge directories.
- Updated data models to include directory information for knowledge documents and FAQs.
- Added translations for directory-related messages in English and Chinese.
This commit is contained in:
mlogclub
2026-06-02 15:37:50 +08:00
parent 32af090ab8
commit 853ae71b3d
26 changed files with 1442 additions and 19 deletions
+62
View File
@@ -1321,6 +1321,9 @@ export type KnowledgeDocument = {
id: number
knowledgeBaseId: number
knowledgeBaseName?: string
directoryId: number
directoryName?: string
directoryPath?: string
title: string
contentType: string
content: string
@@ -1343,6 +1346,9 @@ export type KnowledgeFAQ = {
id: number
knowledgeBaseId: number
knowledgeBaseName?: string
directoryId: number
directoryName?: string
directoryPath?: string
question: string
answer: string
similarQuestions: string[]
@@ -1503,6 +1509,7 @@ export type KnowledgeAnswerPayload = KnowledgeSearchPayload & {
export type CreateKnowledgeDocumentPayload = {
knowledgeBaseId: number
directoryId: number
title: string
contentType: string
content: string
@@ -1514,6 +1521,7 @@ export type UpdateKnowledgeDocumentPayload = CreateKnowledgeDocumentPayload & {
export type CreateKnowledgeFAQPayload = {
knowledgeBaseId: number
directoryId: number
question: string
answer: string
similarQuestions: string[]
@@ -1524,6 +1532,33 @@ export type UpdateKnowledgeFAQPayload = CreateKnowledgeFAQPayload & {
id: number
}
export type KnowledgeDirectory = {
id: number
knowledgeBaseId: number
parentId: number
name: string
sortNo: number
status: number
statusName: string
remark: string
createdAt: string
updatedAt: string
createUserName: string
updateUserName: string
children: KnowledgeDirectory[]
}
export type CreateKnowledgeDirectoryPayload = {
knowledgeBaseId: number
parentId: number
name: string
remark: string
}
export type UpdateKnowledgeDirectoryPayload = CreateKnowledgeDirectoryPayload & {
id: number
}
export type KnowledgeFAQImportMode = "append" | "overwrite"
export type KnowledgeFAQImportError = {
@@ -1595,6 +1630,33 @@ export function rebuildKnowledgeBaseIndex(id: number) {
})
}
export function fetchKnowledgeDirectories(knowledgeBaseId: number) {
return request<KnowledgeDirectory[]>(
`/api/dashboard/knowledge-directory/list_all${toQueryString({ knowledgeBaseId })}`
)
}
export function createKnowledgeDirectory(payload: CreateKnowledgeDirectoryPayload) {
return request<KnowledgeDirectory>("/api/dashboard/knowledge-directory/create", {
method: "POST",
body: JSON.stringify(payload),
})
}
export function updateKnowledgeDirectory(payload: UpdateKnowledgeDirectoryPayload) {
return request<void>("/api/dashboard/knowledge-directory/update", {
method: "POST",
body: JSON.stringify(payload),
})
}
export function deleteKnowledgeDirectory(id: number) {
return request<void>("/api/dashboard/knowledge-directory/delete", {
method: "POST",
body: JSON.stringify({ id }),
})
}
export function fetchKnowledgeDocuments(
query?: Record<string, string | number | undefined>
) {