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

@@ -26,6 +26,15 @@ public class SysApiKey extends SysApiKeyBase {
@Column(ignore = true)
private Boolean knowledgeShareEnabled;
@Column(ignore = true)
private Boolean knowledgeReadEnabled;
@Column(ignore = true)
private Boolean knowledgeImportEnabled;
@Column(ignore = true)
private Boolean knowledgeMaintenanceEnabled;
@Column(ignore = true)
private Boolean workflowApiEnabled;
@@ -56,6 +65,60 @@ public class SysApiKey extends SysApiKeyBase {
this.knowledgeShareEnabled = knowledgeShareEnabled;
}
/**
* 获取知识库读取权限开关。
*
* @return 是否开启读取权限
*/
public Boolean getKnowledgeReadEnabled() {
return knowledgeReadEnabled;
}
/**
* 设置知识库读取权限开关。
*
* @param knowledgeReadEnabled 是否开启读取权限
*/
public void setKnowledgeReadEnabled(Boolean knowledgeReadEnabled) {
this.knowledgeReadEnabled = knowledgeReadEnabled;
}
/**
* 获取知识库导入权限开关。
*
* @return 是否开启导入权限
*/
public Boolean getKnowledgeImportEnabled() {
return knowledgeImportEnabled;
}
/**
* 设置知识库导入权限开关。
*
* @param knowledgeImportEnabled 是否开启导入权限
*/
public void setKnowledgeImportEnabled(Boolean knowledgeImportEnabled) {
this.knowledgeImportEnabled = knowledgeImportEnabled;
}
/**
* 获取知识库维护权限开关。
*
* @return 是否开启维护权限
*/
public Boolean getKnowledgeMaintenanceEnabled() {
return knowledgeMaintenanceEnabled;
}
/**
* 设置知识库维护权限开关。
*
* @param knowledgeMaintenanceEnabled 是否开启维护权限
*/
public void setKnowledgeMaintenanceEnabled(Boolean knowledgeMaintenanceEnabled) {
this.knowledgeMaintenanceEnabled = knowledgeMaintenanceEnabled;
}
public Boolean getWorkflowApiEnabled() {
return workflowApiEnabled;
}

View File

@@ -13,7 +13,14 @@ import java.math.BigInteger;
*/
public interface SysApiKeyService extends IService<SysApiKey> {
void checkApikeyPermission(String apiKey, String requestURI);
/**
* 校验访问令牌是否具有接口权限。
*
* @param apiKey 访问令牌明文
* @param requestURI 请求 URI
* @return 已通过身份和接口权限校验的访问令牌
*/
SysApiKey checkApikeyPermission(String apiKey, String requestURI);
SysApiKey getSysApiKey(String apiKey);

View File

@@ -36,7 +36,7 @@ public class SysApiKeyServiceImpl extends ServiceImpl<SysApiKeyMapper, SysApiKey
private SysApiKeyResourceService resourceService;
@Override
public void checkApikeyPermission(String apiKey, String requestURI) {
public SysApiKey checkApikeyPermission(String apiKey, String requestURI) {
SysApiKey sysApiKey = getSysApiKey(apiKey);
List<String> candidateRequestUris = getCandidateRequestUris(requestURI);
QueryWrapper w = QueryWrapper.create();
@@ -55,6 +55,7 @@ public class SysApiKeyServiceImpl extends ServiceImpl<SysApiKeyMapper, SysApiKey
if (count == 0) {
throw new BusinessException(403, 403, "该apiKey无权限访问该接口");
}
return sysApiKey;
}
private List<String> getCandidateRequestUris(String requestURI) {