吸收数字员工管理端记忆合并候选预览
This commit is contained in:
@@ -5,6 +5,7 @@ import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
@@ -100,6 +101,18 @@ public class DigitalEmployeeAdminWorkbenchRowDto {
|
||||
private String memoryId;
|
||||
@JsonProperty("memory_key")
|
||||
private String memoryKey;
|
||||
@JsonProperty("governance_status")
|
||||
private String governanceStatus;
|
||||
@JsonProperty("merge_candidate_count")
|
||||
private Long mergeCandidateCount;
|
||||
@JsonProperty("duplicate_memory_ids")
|
||||
private List<String> duplicateMemoryIds;
|
||||
@JsonProperty("latest_memory_id")
|
||||
private String latestMemoryId;
|
||||
@JsonProperty("last_governance_action")
|
||||
private String lastGovernanceAction;
|
||||
@JsonProperty("last_reviewed_at")
|
||||
private String lastReviewedAt;
|
||||
@JsonProperty("skill_id")
|
||||
private String skillId;
|
||||
@JsonProperty("skill_version")
|
||||
|
||||
@@ -46,6 +46,7 @@ import org.springframework.stereotype.Service;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
@@ -1092,6 +1093,12 @@ public class DigitalEmployeeSyncApplicationServiceImpl implements DigitalEmploye
|
||||
.autoRecoveryStatus(firstString(businessView.get("auto_recovery_status"), businessView.get("autoRecoveryStatus"), payload.get("auto_recovery_status"), payload.get("autoRecoveryStatus")))
|
||||
.memoryId(firstString(businessView.get("memory_id"), businessView.get("memoryId"), payload.get("memory_id"), payload.get("memoryId"), "memory".equals(record.getEntityType()) ? record.getEntityId() : null))
|
||||
.memoryKey(firstString(businessView.get("memory_key"), businessView.get("memoryKey"), businessView.get("key"), payload.get("memory_key"), payload.get("memoryKey"), payload.get("key")))
|
||||
.governanceStatus(firstString(businessView.get("governance_status"), businessView.get("governanceStatus"), payload.get("governance_status"), payload.get("governanceStatus")))
|
||||
.mergeCandidateCount(numberValue(firstPresent(businessView.get("merge_candidate_count"), businessView.get("mergeCandidateCount"), payload.get("merge_candidate_count"), payload.get("mergeCandidateCount"))))
|
||||
.duplicateMemoryIds(stringListValue(firstPresent(businessView.get("duplicate_memory_ids"), businessView.get("duplicateMemoryIds"), payload.get("duplicate_memory_ids"), payload.get("duplicateMemoryIds"))))
|
||||
.latestMemoryId(firstString(businessView.get("latest_memory_id"), businessView.get("latestMemoryId"), payload.get("latest_memory_id"), payload.get("latestMemoryId")))
|
||||
.lastGovernanceAction(firstString(businessView.get("last_governance_action"), businessView.get("lastGovernanceAction"), payload.get("last_governance_action"), payload.get("lastGovernanceAction")))
|
||||
.lastReviewedAt(firstString(businessView.get("last_reviewed_at"), businessView.get("lastReviewedAt"), payload.get("last_reviewed_at"), payload.get("lastReviewedAt")))
|
||||
.skillId(firstString(businessView.get("skill_id"), businessView.get("skillId"), payload.get("skill_id"), payload.get("skillId")))
|
||||
.skillVersion(firstString(businessView.get("skill_version"), businessView.get("skillVersion"), businessView.get("version"), payload.get("skill_version"), payload.get("skillVersion"), payload.get("version")))
|
||||
.installStatus(firstString(businessView.get("install_status"), businessView.get("installStatus"), payload.get("install_status"), payload.get("installStatus")))
|
||||
@@ -1233,7 +1240,10 @@ public class DigitalEmployeeSyncApplicationServiceImpl implements DigitalEmploye
|
||||
|| StringUtils.equals(category, "memory_governance")
|
||||
|| startsWithAny(kind, "memory_")
|
||||
|| StringUtils.isNotBlank(row.getMemoryId())
|
||||
|| StringUtils.isNotBlank(row.getMemoryKey());
|
||||
|| StringUtils.isNotBlank(row.getMemoryKey())
|
||||
|| StringUtils.isNotBlank(row.getLatestMemoryId())
|
||||
|| StringUtils.isNotBlank(row.getGovernanceStatus())
|
||||
|| row.getMergeCandidateCount() != null;
|
||||
}
|
||||
|
||||
private boolean isSkillAuditRow(DigitalEmployeeAdminWorkbenchRowDto row) {
|
||||
@@ -1607,6 +1617,21 @@ public class DigitalEmployeeSyncApplicationServiceImpl implements DigitalEmploye
|
||||
return null;
|
||||
}
|
||||
|
||||
private List<String> stringListValue(Object value) {
|
||||
if (value instanceof List<?> list) {
|
||||
return list.stream()
|
||||
.map(item -> stringValue(item, null))
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.toList();
|
||||
}
|
||||
String text = stringValue(value, null);
|
||||
if (StringUtils.isBlank(text)) return List.of();
|
||||
return Arrays.stream(text.split(","))
|
||||
.map(String::trim)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.toList();
|
||||
}
|
||||
|
||||
private String stringValue(Object value, String fallback) {
|
||||
if (value == null) return fallback;
|
||||
String text = Objects.toString(value, "").trim();
|
||||
|
||||
@@ -395,8 +395,11 @@ class DigitalEmployeeSyncApplicationServiceImplTest {
|
||||
assertThat(result.getRecords().get(0).getView()).isEqualTo("memory_governance");
|
||||
assertThat(result.getRecords().get(0).getMemoryId()).isEqualTo("memory-1");
|
||||
assertThat(result.getRecords().get(0).getMemoryKey()).isEqualTo("customer.preference");
|
||||
assertThat(result.getRecords().get(0).getBusinessView()).containsEntry("merge_candidate_count", 2);
|
||||
assertThat(result.getRecords().get(0).getGovernanceStatus()).isEqualTo("active");
|
||||
assertThat(result.getRecords().get(0).getMergeCandidateCount()).isEqualTo(2L);
|
||||
assertThat(result.getRecords().get(0).getDuplicateMemoryIds()).containsExactly("memory-2");
|
||||
assertThat(result.getRecords().get(1).getCategory()).isEqualTo("memory_governance");
|
||||
assertThat(result.getRecords().get(1).getLastGovernanceAction()).isEqualTo("archive");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user