feat: 完善知识库批量导入与公共 API

- 新增批量异步导入、状态查询、失败重试与中断恢复链路

- 拆分知识库读取、导入、维护权限并完善 Public API 契约

- 补充数据库迁移、管理端交互、接口说明与相关测试
This commit is contained in:
2026-08-03 11:13:48 +08:00
parent 6df3dd9981
commit 51dbfd41b6
99 changed files with 16274 additions and 480 deletions

View File

@@ -284,7 +284,8 @@ const actions: ActionButton[] = [
text: $t('button.offline'),
permission: '/api/v1/documentCollection/save',
placement: 'menu',
visible: (row) => canAiResourceOffline(row.displayPublishStatus, row.publishStatus),
visible: (row) =>
canAiResourceOffline(row.displayPublishStatus, row.publishStatus),
onClick(row) {
if (!ensureManageKnowledgeItem(row)) {
return;
@@ -298,7 +299,8 @@ const actions: ActionButton[] = [
tone: 'danger',
permission: '/api/v1/documentCollection/remove',
placement: 'menu',
visible: (row) => canAiResourceDelete(row.displayPublishStatus, row.publishStatus),
visible: (row) =>
canAiResourceDelete(row.displayPublishStatus, row.publishStatus),
onClick(row) {
if (!ensureManageKnowledgeItem(row)) {
return;
@@ -325,8 +327,8 @@ const submitPublishAction = async (item: any) => {
const confirmation = await confirmPublishSubmission({
api,
confirmMessage: isRepublishAction(item)
? $t('documentCollection.submitRepublishApprovalConfirm')
: $t('documentCollection.submitPublishApprovalConfirm'),
? $t('documentCollection.submitRepublishApprovalConfirm')
: $t('documentCollection.submitPublishApprovalConfirm'),
id: item.id,
resourcePath: '/api/v1/documentCollection',
title: $t('message.noticeTitle'),
@@ -356,12 +358,9 @@ const submitOfflineAction = async (item: any) => {
const impactRes = await api.get<{
data: OfflineImpactCheck;
errorCode: number;
}>(
'/api/v1/documentCollection/offlineImpactCheck',
{
params: { id: item.id },
},
);
}>('/api/v1/documentCollection/offlineImpactCheck', {
params: { id: item.id },
});
if (impactRes.errorCode !== 0) {
return;
}
@@ -399,9 +398,12 @@ const submitOfflineAction = async (item: any) => {
} catch {
return;
}
const res = await api.post('/api/v1/documentCollection/submitOfflineApproval', {
id: item.id,
});
const res = await api.post(
'/api/v1/documentCollection/submitOfflineApproval',
{
id: item.id,
},
);
if (res.errorCode === 0) {
ElMessage.success(res.message || $t('message.saveOkMessage'));
reloadKnowledgeList();