Skip to content

Commit 3cb237d

Browse files
Msquittto陈潇文
andauthored
修改知识库配置应用问题 (#173)
* [app-platform] 修改知识库配置表单打包index.js文件 * [app-platform] 修复知识库功能测试用例 * [app-platform] 修改应用graph模版 * [app-platform] 修改knowledgeCenterServiceImpl测试用例 * [app-platform] 知识库配置增删改增加对isDefault的处理 * [app-platform] 检视意见修改 --------- Co-authored-by: 陈潇文 <chenxiaowen17@huawei.com>
1 parent 4994194 commit 3cb237d

File tree

8 files changed

+65
-20
lines changed

8 files changed

+65
-20
lines changed

app-builder/jane/jober/sql/jade/06_appbuilder_insert.sql

Lines changed: 2 additions & 2 deletions
Large diffs are not rendered by default.

app-knowledge/plugins/knowledge-manager/src/main/java/modelengine/jade/knowledge/service/KnowledgeCenterServiceImpl.java

Lines changed: 44 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,23 @@ public KnowledgeCenterServiceImpl(KnowledgeConfig knowledgeConfig, KnowledgeCent
6868
extensions = {@Attribute(key = "tags", value = "FIT"), @Attribute(key = "tags", value = "KNOWLEDGE")})
6969
@Property(description = "增加用户的知识库配置信息")
7070
public void add(KnowledgeConfigDto knowledgeConfigDto) {
71-
log.info("Start add user knowledge config.[userId={}]", knowledgeConfigDto.getUserId());
71+
log.info("Start add user knowledge config. [userId={}]", knowledgeConfigDto.getUserId());
7272
this.isConfigUnique(knowledgeConfigDto);
73+
List<KnowledgeConfigPo> result =
74+
this.knowledgeCenterRepo.listKnowledgeConfigByCondition(KnowledgeConfigQueryCondition.builder()
75+
.userId(knowledgeConfigDto.getUserId())
76+
.groupId(knowledgeConfigDto.getGroupId())
77+
.build());
78+
if (result.stream().noneMatch(config -> config.getIsDefault() == 1)) {
79+
knowledgeConfigDto.setIsDefault(true);
80+
} else if (knowledgeConfigDto.getIsDefault()) {
81+
// 需要保证一个知识库平台只能有一个默认使用的API key
82+
KnowledgeConfigQueryCondition condition = KnowledgeConfigQueryCondition.builder()
83+
.userId(knowledgeConfigDto.getUserId())
84+
.groupId(knowledgeConfigDto.getGroupId())
85+
.build();
86+
this.knowledgeCenterRepo.updateOthersIsDefaultFalse(condition);
87+
}
7388
this.knowledgeCenterRepo.insertKnowledgeConfig(this.getKnowledgeConfigPo(knowledgeConfigDto));
7489
}
7590

@@ -79,24 +94,39 @@ public void add(KnowledgeConfigDto knowledgeConfigDto) {
7994
extensions = {@Attribute(key = "tags", value = "FIT"), @Attribute(key = "tags", value = "KNOWLEDGE")})
8095
@Property(description = "修改用户的知识库配置信息")
8196
public void edit(KnowledgeConfigDto knowledgeConfigDto) {
82-
log.info("Start edit user knowledge config.[userId={}]", knowledgeConfigDto.getUserId());
83-
this.isConfigUnique(knowledgeConfigDto);
84-
this.knowledgeCenterRepo.updateKnowledgeConfig(this.getKnowledgeConfigPo(knowledgeConfigDto));
85-
if (!this.isUpdateOthersDefault(knowledgeConfigDto)) {
97+
log.info("Start edit user knowledge config. [userId={}]", knowledgeConfigDto.getUserId());
98+
if (!this.isUpdateValidate(knowledgeConfigDto)) {
99+
log.error("Edit user knowledge config failed. [id={}, groupId={}, userId={}]",
100+
knowledgeConfigDto.getId(),
101+
knowledgeConfigDto.getGroupId(),
102+
knowledgeConfigDto.getUserId());
86103
return;
87104
}
105+
this.isConfigUnique(knowledgeConfigDto);
106+
List<KnowledgeConfigPo> result =
107+
this.knowledgeCenterRepo.listKnowledgeConfigByCondition(KnowledgeConfigQueryCondition.builder()
108+
.userId(knowledgeConfigDto.getUserId())
109+
.groupId(knowledgeConfigDto.getGroupId())
110+
.build());
111+
if (result.size() == 1 && !knowledgeConfigDto.getIsDefault()) {
112+
throw new KnowledgeException(KnowledgeManagerRetCode.SHOULD_HAS_AT_LEAST_ONE_DEFAULT);
113+
}
114+
this.knowledgeCenterRepo.updateKnowledgeConfig(this.getKnowledgeConfigPo(knowledgeConfigDto));
88115
KnowledgeConfigQueryCondition condition = KnowledgeConfigQueryCondition.builder()
89116
.id(knowledgeConfigDto.getId())
90117
.userId(knowledgeConfigDto.getUserId())
91118
.groupId(knowledgeConfigDto.getGroupId())
92119
.build();
93-
this.knowledgeCenterRepo.updateOthersIsDefaultFalse(condition);
120+
if (knowledgeConfigDto.getIsDefault()) {
121+
this.knowledgeCenterRepo.updateOthersIsDefaultFalse(condition);
122+
} else {
123+
this.knowledgeCenterRepo.updateNewestIsDefaultTrue(condition);
124+
}
94125
}
95126

96-
private boolean isUpdateOthersDefault(KnowledgeConfigDto knowledgeConfigDto) {
97-
return knowledgeConfigDto.getIsDefault() && LongUtils.between(knowledgeConfigDto.getId(), 1, Long.MAX_VALUE)
98-
&& StringUtils.isNotBlank(knowledgeConfigDto.getUserId())
99-
&& StringUtils.isNotBlank(knowledgeConfigDto.getGroupId());
127+
private boolean isUpdateValidate(KnowledgeConfigDto knowledgeConfigDto) {
128+
return LongUtils.between(knowledgeConfigDto.getId(), 1, Long.MAX_VALUE) && StringUtils.isNotBlank(
129+
knowledgeConfigDto.getUserId()) && StringUtils.isNotBlank(knowledgeConfigDto.getGroupId());
100130
}
101131

102132
@Override
@@ -105,7 +135,7 @@ private boolean isUpdateOthersDefault(KnowledgeConfigDto knowledgeConfigDto) {
105135
extensions = {@Attribute(key = "tags", value = "FIT"), @Attribute(key = "tags", value = "KNOWLEDGE")})
106136
@Property(description = "删除用户的知识库配置信息")
107137
public void delete(Long id) {
108-
log.info("Start delete user knowledge config.[id={}]", id);
138+
log.info("Start delete user knowledge config. [id={}]", id);
109139
List<KnowledgeConfigPo> configPoList =
110140
this.knowledgeCenterRepo.listKnowledgeConfigByCondition(KnowledgeConfigQueryCondition.builder()
111141
.id(id)
@@ -116,7 +146,7 @@ public void delete(Long id) {
116146
}
117147
KnowledgeConfigPo configPo = configPoList.get(0);
118148
KnowledgeConfigDto knowledgeConfigDto = this.getKnowledgeConfigDto(configPo);
119-
if (this.isUpdateOthersDefault(knowledgeConfigDto)) {
149+
if (knowledgeConfigDto.getIsDefault()) {
120150
KnowledgeConfigQueryCondition condition = KnowledgeConfigQueryCondition.builder()
121151
.userId(knowledgeConfigDto.getUserId())
122152
.groupId(knowledgeConfigDto.getGroupId())
@@ -131,7 +161,7 @@ public void delete(Long id) {
131161
extensions = {@Attribute(key = "tags", value = "FIT"), @Attribute(key = "tags", value = "KNOWLEDGE")})
132162
@Property(description = "查询用户的知识库配置信息")
133163
public List<KnowledgeConfigDto> list(String userId) {
134-
log.info("Start get user knowledge configs.[userId={}]", userId);
164+
log.info("Start get user knowledge configs. [userId={}]", userId);
135165
return this.knowledgeCenterRepo.listKnowledgeConfigByCondition(KnowledgeConfigQueryCondition.builder()
136166
.userId(userId)
137167
.build()).stream().map(this::getKnowledgeConfigDto).toList();
@@ -153,7 +183,7 @@ public String getApiKey(String userId, String groupId, String defaultValue) {
153183
KnowledgeConfigQueryCondition.builder().userId(userId).groupId(groupId).isDefault(1).build();
154184
List<KnowledgeConfigPo> result = this.knowledgeCenterRepo.listKnowledgeConfigByCondition(cond);
155185
if (result.isEmpty()) {
156-
log.info("No available api key.[knowledge groupId={}, userId={}]", groupId, userId);
186+
log.info("No available api key. [knowledge groupId={}, userId={}]", groupId, userId);
157187
return defaultValue;
158188
}
159189
this.validateConfigNum(result);

app-knowledge/plugins/knowledge-manager/src/main/resources/mapper/KnowledgeConfigMapper.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,10 @@
6363
<set>
6464
is_default = 0
6565
</set>
66-
where id != #{id} and group_id = #{groupId} and user_id = #{userId}
66+
where group_id = #{groupId} and user_id = #{userId}
67+
<if test="id != null">
68+
and id != #{id}
69+
</if>
6770
</update>
6871

6972
<update id="updateNewestIsDefaultTrue" parameterType="modelengine.jade.knowledge.condition.KnowledgeConfigQueryCondition">
@@ -75,6 +78,9 @@
7578
select id
7679
from t_app_engine_user_knowledge
7780
where group_id = #{groupId} and user_id = #{userId}
81+
<if test="id !=null">
82+
and id != #{id}
83+
</if>
7884
order by updated_at desc
7985
limit 1
8086
)

app-knowledge/plugins/knowledge-manager/src/test/java/modelengine/jade/knowledge/service/KnowledgeCenterServiceImplTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import static org.junit.jupiter.api.Assertions.assertEquals;
1010
import static org.junit.jupiter.api.Assertions.assertThrows;
11+
import static org.mockito.ArgumentMatchers.anyString;
1112

1213
import modelengine.fit.security.Decryptor;
1314
import modelengine.fit.security.Encryptor;
@@ -142,7 +143,7 @@ void shouldListKnowledgeConfigsSuccessfully() {
142143

143144
Mockito.when(knowledgeCenterRepo.listKnowledgeConfigByCondition(ArgumentMatchers.any()))
144145
.thenReturn(Collections.singletonList(configPo));
145-
Mockito.when(encryptor.encrypt(apiKey)).thenReturn("encrypted_key");
146+
Mockito.when(decryptor.decrypt(apiKey)).thenReturn("encrypted_key");
146147

147148
List<KnowledgeConfigDto> result = knowledgeCenterService.list(userId);
148149
assertEquals(1, result.size());
@@ -173,6 +174,7 @@ void shouldGetApiKeySuccessfully() {
173174

174175
Mockito.when(knowledgeCenterRepo.listKnowledgeConfigByCondition(ArgumentMatchers.any()))
175176
.thenReturn(Collections.singletonList(configPo));
177+
Mockito.when(decryptor.decrypt(anyString())).thenReturn(apiKey);
176178

177179
String result = knowledgeCenterService.getApiKey(userId, groupId, defaultValue);
178180
assertEquals(apiKey, result);

app-knowledge/services/knowledge-service/src/main/java/modelengine/jade/knowledge/code/KnowledgeManagerRetCode.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,12 @@ public enum KnowledgeManagerRetCode implements RetCode {
5353
/**
5454
* 相同的知识库配置已存在,请修改配置重试。
5555
*/
56-
CONFIG_IS_EXISTED(130703009, "相同的知识库配置已存在,请修改配置重试。");
56+
CONFIG_IS_EXISTED(130703009, "相同的知识库配置已存在,请修改配置重试。"),
57+
58+
/**
59+
* 一个知识库平台至少需要有一个default apiKey。
60+
*/
61+
SHOULD_HAS_AT_LEAST_ONE_DEFAULT(130703010, "修改配置失败,一个知识库平台至少需要有一个默认的API Key。");
5762

5863
private final int code;
5964
private final String msg;

common/plugins/http-interceptor/src/main/resources/i18n/aipp_extension_en.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
130703007=Knowledge base platform interface does not exist, reason: {0}.
2121
130703008=Knowledge base retrieval failed, reason: {0}.
2222
130703009=The same knowledge base configuration already exists, please modify the configuration and try again.
23+
130703010=Configuration modification failed, a knowledge base platform requires at least one default API Key.
2324

2425
# 代码执行器
2526
131001001=Code node execution failed, failure information: {0}.

common/plugins/http-interceptor/src/main/resources/i18n/aipp_extension_zh.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
130703007=知识库平台接口不存在,原因:{0}。
2121
130703008=知识库检索失败,原因:{0}。
2222
130703009=相同的知识库配置已存在,请修改配置重试。
23+
130703010=修改配置失败,一个知识库平台至少需要有一个默认的API Key。
2324

2425
# 代码执行器
2526
131001001=代码节点执行失败,失败信息:{0}。

examples/app-demo/normal-form/17b732c9-5272-42a6-a79d-8d0334a8aa19/build/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)