mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-08-31 12:39:01 +00:00
FIX CL-1641 - Allow to search by descriptionSources (#21487)
* FIX CL-1641 - Allow to search by descriptionSources * Add new fields for advanced search filters * feat: added createdBy params * Move the tag label type options to constants * Add tier & tag source --------- Co-authored-by: Aniket Katkar <aniketkatkar97@gmail.com> Co-authored-by: Teddy Crepineau <teddy.crepineau@gmail.com> Co-authored-by: ulixius9 <mayursingal9@gmail.com>
This commit is contained in:
parent
9a5d02b2c7
commit
a51187d46b
@ -13,7 +13,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.glassfish.jersey.internal.util.ExceptionUtils;
|
||||
import org.openmetadata.common.utils.CommonUtil;
|
||||
@ -22,19 +21,16 @@ import org.openmetadata.schema.EntityInterface;
|
||||
import org.openmetadata.schema.entity.teams.User;
|
||||
import org.openmetadata.schema.system.IndexingError;
|
||||
import org.openmetadata.schema.system.StepStats;
|
||||
import org.openmetadata.schema.type.ChangeDescription;
|
||||
import org.openmetadata.schema.type.ChangeSummaryMap;
|
||||
import org.openmetadata.schema.type.Column;
|
||||
import org.openmetadata.schema.type.EntityReference;
|
||||
import org.openmetadata.schema.type.Include;
|
||||
import org.openmetadata.schema.type.TagLabel;
|
||||
import org.openmetadata.schema.type.change.ChangeSource;
|
||||
import org.openmetadata.schema.type.change.ChangeSummary;
|
||||
import org.openmetadata.service.Entity;
|
||||
import org.openmetadata.service.apps.bundles.insights.utils.TimestampUtils;
|
||||
import org.openmetadata.service.exception.EntityNotFoundException;
|
||||
import org.openmetadata.service.exception.SearchIndexException;
|
||||
import org.openmetadata.service.jdbi3.EntityRepository;
|
||||
import org.openmetadata.service.search.SearchIndexUtils;
|
||||
import org.openmetadata.service.util.JsonUtils;
|
||||
import org.openmetadata.service.util.ResultList;
|
||||
import org.openmetadata.service.workflows.interfaces.Processor;
|
||||
@ -152,11 +148,7 @@ public class DataInsightsEntityEnricherProcessor
|
||||
|
||||
String entityType = (String) contextData.get(ENTITY_TYPE_KEY);
|
||||
|
||||
Map<String, ChangeSummary> changeSummaryMap =
|
||||
Optional.ofNullable(entity.getChangeDescription())
|
||||
.map(ChangeDescription::getChangeSummary)
|
||||
.map(ChangeSummaryMap::getAdditionalProperties)
|
||||
.orElse(null);
|
||||
Map<String, ChangeSummary> changeSummaryMap = SearchIndexUtils.getChangeSummaryMap(entity);
|
||||
|
||||
// Enrich with EntityType
|
||||
if (CommonUtil.nullOrEmpty(entityType)) {
|
||||
@ -171,10 +163,12 @@ public class DataInsightsEntityEnricherProcessor
|
||||
entityMap.put("endTimestamp", endTimestamp);
|
||||
|
||||
// Process Description Source
|
||||
entityMap.put("descriptionSources", processDescriptionSources(entity, changeSummaryMap));
|
||||
entityMap.put(
|
||||
"descriptionSources", SearchIndexUtils.processDescriptionSources(entity, changeSummaryMap));
|
||||
|
||||
// Process Tag Source
|
||||
TagAndTierSources tagAndTierSources = processTagAndTierSources(entity);
|
||||
SearchIndexUtils.TagAndTierSources tagAndTierSources =
|
||||
SearchIndexUtils.processTagAndTierSources(entity);
|
||||
entityMap.put("tagSources", tagAndTierSources.getTagSources());
|
||||
entityMap.put("tierSources", tagAndTierSources.getTierSources());
|
||||
|
||||
@ -187,7 +181,7 @@ public class DataInsightsEntityEnricherProcessor
|
||||
// Enrich with Description Stats
|
||||
entityMap.put("hasDescription", CommonUtil.nullOrEmpty(entity.getDescription()) ? 0 : 1);
|
||||
|
||||
if (hasColumns(entity)) {
|
||||
if (SearchIndexUtils.hasColumns(entity)) {
|
||||
entityMap.put("numberOfColumns", ((ColumnsEntityInterface) entity).getColumns().size());
|
||||
entityMap.put(
|
||||
"numberOfColumnsWithDescription",
|
||||
@ -205,65 +199,6 @@ public class DataInsightsEntityEnricherProcessor
|
||||
return entityMap;
|
||||
}
|
||||
|
||||
private boolean hasColumns(EntityInterface entity) {
|
||||
return List.of(entity.getClass().getInterfaces()).contains(ColumnsEntityInterface.class);
|
||||
}
|
||||
|
||||
private String getDescriptionSource(
|
||||
String description, Map<String, ChangeSummary> changeSummaryMap, String changeSummaryKey) {
|
||||
if (description == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String descriptionSource = ChangeSource.INGESTED.value();
|
||||
|
||||
if (changeSummaryMap != null) {
|
||||
if (changeSummaryMap.containsKey(changeSummaryKey)
|
||||
&& changeSummaryMap.get(changeSummaryKey).getChangeSource() != null) {
|
||||
descriptionSource = changeSummaryMap.get(changeSummaryKey).getChangeSource().value();
|
||||
}
|
||||
}
|
||||
return descriptionSource;
|
||||
}
|
||||
|
||||
private void processDescriptionSource(
|
||||
EntityInterface entity,
|
||||
Map<String, ChangeSummary> changeSummaryMap,
|
||||
Map<String, Integer> descriptionSources) {
|
||||
Optional.ofNullable(
|
||||
getDescriptionSource(entity.getDescription(), changeSummaryMap, "description"))
|
||||
.ifPresent(
|
||||
source ->
|
||||
descriptionSources.put(source, descriptionSources.getOrDefault(source, 0) + 1));
|
||||
}
|
||||
|
||||
private void processColumnDescriptionSources(
|
||||
ColumnsEntityInterface entity,
|
||||
Map<String, ChangeSummary> changeSummaryMap,
|
||||
Map<String, Integer> descriptionSources) {
|
||||
for (Column column : entity.getColumns()) {
|
||||
Optional.ofNullable(
|
||||
getDescriptionSource(
|
||||
column.getDescription(),
|
||||
changeSummaryMap,
|
||||
String.format("columns.%s.description", column.getName())))
|
||||
.ifPresent(
|
||||
source ->
|
||||
descriptionSources.put(source, descriptionSources.getOrDefault(source, 0) + 1));
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, Integer> processDescriptionSources(
|
||||
EntityInterface entity, Map<String, ChangeSummary> changeSummaryMap) {
|
||||
Map<String, Integer> descriptionSources = new HashMap<>();
|
||||
processDescriptionSource(entity, changeSummaryMap, descriptionSources);
|
||||
if (hasColumns(entity)) {
|
||||
processColumnDescriptionSources(
|
||||
(ColumnsEntityInterface) entity, changeSummaryMap, descriptionSources);
|
||||
}
|
||||
return descriptionSources;
|
||||
}
|
||||
|
||||
private String processTeam(EntityInterface entity) {
|
||||
String team = null;
|
||||
Optional<List<EntityReference>> oEntityOwners = Optional.ofNullable(entity.getOwners());
|
||||
@ -303,52 +238,6 @@ public class DataInsightsEntityEnricherProcessor
|
||||
return team;
|
||||
}
|
||||
|
||||
private void processTagAndTierSources(
|
||||
List<TagLabel> tagList, TagAndTierSources tagAndTierSources) {
|
||||
Optional.ofNullable(tagList)
|
||||
.ifPresent(
|
||||
tags -> {
|
||||
tags.forEach(
|
||||
tag -> {
|
||||
String tagSource = tag.getLabelType().value();
|
||||
if (tag.getTagFQN().startsWith("Tier.")) {
|
||||
tagAndTierSources
|
||||
.getTierSources()
|
||||
.put(
|
||||
tagSource,
|
||||
tagAndTierSources.getTierSources().getOrDefault(tagSource, 0) + 1);
|
||||
} else {
|
||||
tagAndTierSources
|
||||
.getTagSources()
|
||||
.put(
|
||||
tagSource,
|
||||
tagAndTierSources.getTagSources().getOrDefault(tagSource, 0) + 1);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private void processEntityTagSources(
|
||||
EntityInterface entity, TagAndTierSources tagAndTierSources) {
|
||||
processTagAndTierSources(entity.getTags(), tagAndTierSources);
|
||||
}
|
||||
|
||||
private void processColumnTagSources(
|
||||
ColumnsEntityInterface entity, TagAndTierSources tagAndTierSources) {
|
||||
for (Column column : entity.getColumns()) {
|
||||
processTagAndTierSources(column.getTags(), tagAndTierSources);
|
||||
}
|
||||
}
|
||||
|
||||
private TagAndTierSources processTagAndTierSources(EntityInterface entity) {
|
||||
TagAndTierSources tagAndTierSources = new TagAndTierSources();
|
||||
processEntityTagSources(entity, tagAndTierSources);
|
||||
if (hasColumns(entity)) {
|
||||
processColumnTagSources((ColumnsEntityInterface) entity, tagAndTierSources);
|
||||
}
|
||||
return tagAndTierSources;
|
||||
}
|
||||
|
||||
private String processTier(EntityInterface entity) {
|
||||
String tier = null;
|
||||
|
||||
@ -412,15 +301,4 @@ public class DataInsightsEntityEnricherProcessor
|
||||
public StepStats getStats() {
|
||||
return stats;
|
||||
}
|
||||
|
||||
@Getter
|
||||
public static class TagAndTierSources {
|
||||
private final Map<String, Integer> tagSources;
|
||||
private final Map<String, Integer> tierSources;
|
||||
|
||||
public TagAndTierSources() {
|
||||
this.tagSources = new HashMap<>();
|
||||
this.tierSources = new HashMap<>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -46,6 +46,7 @@ public class ListFilter extends Filter<ListFilter> {
|
||||
conditions.add(getEntityFQNHashCondition());
|
||||
conditions.add(getTestCaseResolutionStatusType());
|
||||
conditions.add(getAssignee());
|
||||
conditions.add(getCreatedByCondition());
|
||||
conditions.add(getEventSubscriptionAlertType());
|
||||
conditions.add(getApiCollectionCondition(tableName));
|
||||
conditions.add(getWorkflowDefinitionIdCondition());
|
||||
@ -80,6 +81,16 @@ public class ListFilter extends Filter<ListFilter> {
|
||||
return assignee == null ? "" : String.format("assignee = '%s'", assignee);
|
||||
}
|
||||
|
||||
private String getCreatedByCondition() {
|
||||
if (Boolean.TRUE.equals(DatasourceConfig.getInstance().isMySQL())) {
|
||||
String createdBy = queryParams.get("createdBy");
|
||||
return createdBy == null ? "" : "json->>'$.createdBy' = :createdBy";
|
||||
} else {
|
||||
String createdBy = queryParams.get("createdBy");
|
||||
return createdBy == null ? "" : "json#>'{createdBy}' = :createdBy";
|
||||
}
|
||||
}
|
||||
|
||||
private String getWorkflowDefinitionIdCondition() {
|
||||
String workflowDefinitionId = queryParams.get("workflowDefinitionId");
|
||||
return workflowDefinitionId == null
|
||||
|
@ -217,14 +217,20 @@ public class TestCaseResource extends EntityResource<TestCase, TestCaseRepositor
|
||||
allowableValues = {"column", "table", "all"}))
|
||||
@QueryParam("testCaseType")
|
||||
@DefaultValue("all")
|
||||
String type) {
|
||||
String type,
|
||||
@Parameter(
|
||||
description = "Filter test cases by the user who created them",
|
||||
schema = @Schema(type = "string"))
|
||||
@QueryParam("createdBy")
|
||||
String createdBy) {
|
||||
ListFilter filter =
|
||||
new ListFilter(include)
|
||||
.addQueryParam("testSuiteId", testSuiteId)
|
||||
.addQueryParam("includeAllTests", includeAllTests.toString())
|
||||
.addQueryParam("testCaseStatus", status)
|
||||
.addQueryParam("testCaseType", type)
|
||||
.addQueryParam("entityFQN", entityFQN);
|
||||
.addQueryParam("entityFQN", entityFQN)
|
||||
.addQueryParam("createdBy", createdBy);
|
||||
ResourceContextInterface resourceContext = getResourceContext(entityLink, filter);
|
||||
|
||||
// Override OperationContext to change the entity to table and operation from VIEW_ALL to
|
||||
@ -406,7 +412,12 @@ public class TestCaseResource extends EntityResource<TestCase, TestCaseRepositor
|
||||
description = "raw elasticsearch query to use in list",
|
||||
schema = @Schema(type = "string"))
|
||||
@QueryParam("queryString")
|
||||
String queryString)
|
||||
String queryString,
|
||||
@Parameter(
|
||||
description = "Filter test cases by the user who created them",
|
||||
schema = @Schema(type = "string"))
|
||||
@QueryParam("createdBy")
|
||||
String createdBy)
|
||||
throws IOException {
|
||||
if ((startTimestamp == null && endTimestamp != null)
|
||||
|| (startTimestamp != null && endTimestamp == null)) {
|
||||
@ -428,6 +439,7 @@ public class TestCaseResource extends EntityResource<TestCase, TestCaseRepositor
|
||||
searchListFilter.addQueryParam("tags", tags);
|
||||
searchListFilter.addQueryParam("tier", tier);
|
||||
searchListFilter.addQueryParam("serviceName", serviceName);
|
||||
searchListFilter.addQueryParam("createdBy", createdBy);
|
||||
if (!nullOrEmpty(owner)) {
|
||||
EntityInterface entity;
|
||||
StringBuilder owners = new StringBuilder();
|
||||
|
@ -17,16 +17,28 @@ import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.Getter;
|
||||
import org.openmetadata.schema.ColumnsEntityInterface;
|
||||
import org.openmetadata.schema.EntityInterface;
|
||||
import org.openmetadata.schema.tests.DataQualityReport;
|
||||
import org.openmetadata.schema.tests.Datum;
|
||||
import org.openmetadata.schema.tests.type.DataQualityReportMetadata;
|
||||
import org.openmetadata.schema.type.ChangeDescription;
|
||||
import org.openmetadata.schema.type.ChangeSummaryMap;
|
||||
import org.openmetadata.schema.type.Column;
|
||||
import org.openmetadata.schema.type.EntityReference;
|
||||
import org.openmetadata.schema.type.TagLabel;
|
||||
import org.openmetadata.schema.type.change.ChangeSource;
|
||||
import org.openmetadata.schema.type.change.ChangeSummary;
|
||||
import org.openmetadata.service.util.JsonUtils;
|
||||
import org.openmetadata.service.util.Utilities;
|
||||
|
||||
public final class SearchIndexUtils {
|
||||
|
||||
// Keeping the bots list static so we can call this from anywhere in the codebase
|
||||
public static final List<String> AI_BOTS =
|
||||
List.of("collateaiapplicationbot", "collateaiqualityagentapplicationbot");
|
||||
|
||||
private SearchIndexUtils() {}
|
||||
|
||||
public static List<String> parseFollowers(List<EntityReference> followersRef) {
|
||||
@ -286,4 +298,134 @@ public final class SearchIndexUtils {
|
||||
}
|
||||
return new SearchAggregation(root, aggregationsMetadata);
|
||||
}
|
||||
|
||||
public static String getDescriptionSource(
|
||||
String description, Map<String, ChangeSummary> changeSummaryMap, String changeSummaryKey) {
|
||||
if (description == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String descriptionSource = ChangeSource.INGESTED.value();
|
||||
|
||||
if (changeSummaryMap != null) {
|
||||
if (changeSummaryMap.containsKey(changeSummaryKey)
|
||||
&& changeSummaryMap.get(changeSummaryKey).getChangeSource() != null) {
|
||||
if (AI_BOTS.contains(changeSummaryMap.get(changeSummaryKey).getChangedBy())) {
|
||||
// If bot is directly PATCHing and not suggesting, we need to still consider it's a
|
||||
// suggested change
|
||||
descriptionSource = ChangeSource.SUGGESTED.value();
|
||||
} else {
|
||||
// Otherwise, use the change summary source
|
||||
descriptionSource = changeSummaryMap.get(changeSummaryKey).getChangeSource().value();
|
||||
}
|
||||
}
|
||||
}
|
||||
return descriptionSource;
|
||||
}
|
||||
|
||||
private static void processTagAndTierSources(
|
||||
List<TagLabel> tagList, TagAndTierSources tagAndTierSources) {
|
||||
Optional.ofNullable(tagList)
|
||||
.ifPresent(
|
||||
tags -> {
|
||||
tags.forEach(
|
||||
tag -> {
|
||||
String tagSource = tag.getLabelType().value();
|
||||
if (tag.getTagFQN().startsWith("Tier.")) {
|
||||
tagAndTierSources
|
||||
.getTierSources()
|
||||
.put(
|
||||
tagSource,
|
||||
tagAndTierSources.getTierSources().getOrDefault(tagSource, 0) + 1);
|
||||
} else {
|
||||
tagAndTierSources
|
||||
.getTagSources()
|
||||
.put(
|
||||
tagSource,
|
||||
tagAndTierSources.getTagSources().getOrDefault(tagSource, 0) + 1);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private static void processEntityTagSources(
|
||||
EntityInterface entity, TagAndTierSources tagAndTierSources) {
|
||||
processTagAndTierSources(entity.getTags(), tagAndTierSources);
|
||||
}
|
||||
|
||||
private static void processColumnTagSources(
|
||||
ColumnsEntityInterface entity, TagAndTierSources tagAndTierSources) {
|
||||
for (Column column : entity.getColumns()) {
|
||||
processTagAndTierSources(column.getTags(), tagAndTierSources);
|
||||
}
|
||||
}
|
||||
|
||||
public static TagAndTierSources processTagAndTierSources(EntityInterface entity) {
|
||||
TagAndTierSources tagAndTierSources = new TagAndTierSources();
|
||||
processEntityTagSources(entity, tagAndTierSources);
|
||||
if (SearchIndexUtils.hasColumns(entity)) {
|
||||
processColumnTagSources((ColumnsEntityInterface) entity, tagAndTierSources);
|
||||
}
|
||||
return tagAndTierSources;
|
||||
}
|
||||
|
||||
public static void processDescriptionSource(
|
||||
EntityInterface entity,
|
||||
Map<String, ChangeSummary> changeSummaryMap,
|
||||
Map<String, Integer> descriptionSources) {
|
||||
Optional.ofNullable(
|
||||
getDescriptionSource(entity.getDescription(), changeSummaryMap, "description"))
|
||||
.ifPresent(
|
||||
source ->
|
||||
descriptionSources.put(source, descriptionSources.getOrDefault(source, 0) + 1));
|
||||
}
|
||||
|
||||
public static void processColumnDescriptionSources(
|
||||
ColumnsEntityInterface entity,
|
||||
Map<String, ChangeSummary> changeSummaryMap,
|
||||
Map<String, Integer> descriptionSources) {
|
||||
for (Column column : entity.getColumns()) {
|
||||
Optional.ofNullable(
|
||||
getDescriptionSource(
|
||||
column.getDescription(),
|
||||
changeSummaryMap,
|
||||
String.format("columns.%s.description", column.getName())))
|
||||
.ifPresent(
|
||||
source ->
|
||||
descriptionSources.put(source, descriptionSources.getOrDefault(source, 0) + 1));
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean hasColumns(EntityInterface entity) {
|
||||
return List.of(entity.getClass().getInterfaces()).contains(ColumnsEntityInterface.class);
|
||||
}
|
||||
|
||||
public static Map<String, Integer> processDescriptionSources(
|
||||
EntityInterface entity, Map<String, ChangeSummary> changeSummaryMap) {
|
||||
Map<String, Integer> descriptionSources = new HashMap<>();
|
||||
processDescriptionSource(entity, changeSummaryMap, descriptionSources);
|
||||
if (hasColumns(entity)) {
|
||||
processColumnDescriptionSources(
|
||||
(ColumnsEntityInterface) entity, changeSummaryMap, descriptionSources);
|
||||
}
|
||||
return descriptionSources;
|
||||
}
|
||||
|
||||
public static Map<String, ChangeSummary> getChangeSummaryMap(EntityInterface entity) {
|
||||
return Optional.ofNullable(entity.getChangeDescription())
|
||||
.map(ChangeDescription::getChangeSummary)
|
||||
.map(ChangeSummaryMap::getAdditionalProperties)
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
@Getter
|
||||
public static class TagAndTierSources {
|
||||
private final Map<String, Integer> tagSources;
|
||||
private final Map<String, Integer> tierSources;
|
||||
|
||||
public TagAndTierSources() {
|
||||
this.tagSources = new HashMap<>();
|
||||
this.tierSources = new HashMap<>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ public class SearchListFilter extends Filter<SearchListFilter> {
|
||||
conditions.add(getIncludeCondition(entityType));
|
||||
conditions.add(getDomainCondition());
|
||||
conditions.add(getOwnerCondition());
|
||||
conditions.add(getCreatedByCondition());
|
||||
|
||||
if (entityType != null) {
|
||||
conditions.add(entityType.equals(Entity.TEST_CASE) ? getTestCaseCondition() : null);
|
||||
@ -122,6 +123,14 @@ public class SearchListFilter extends Filter<SearchListFilter> {
|
||||
return "";
|
||||
}
|
||||
|
||||
private String getCreatedByCondition() {
|
||||
String createdBy = getQueryParam("createdBy");
|
||||
if (!nullOrEmpty(createdBy)) {
|
||||
return String.format("{\"term\": {\"createdBy\": \"%s\"}}", escapeDoubleQuotes(createdBy));
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private String buildQueryFilter(String conditionFilter, String sourceFilter) {
|
||||
String q = queryParams.get("q");
|
||||
boolean isQEmpty = nullOrEmpty(q);
|
||||
|
@ -34,6 +34,7 @@ import org.openmetadata.schema.type.LineageDetails;
|
||||
import org.openmetadata.schema.type.Relationship;
|
||||
import org.openmetadata.schema.type.TableConstraint;
|
||||
import org.openmetadata.schema.type.TagLabel;
|
||||
import org.openmetadata.schema.type.change.ChangeSummary;
|
||||
import org.openmetadata.service.Entity;
|
||||
import org.openmetadata.service.exception.EntityNotFoundException;
|
||||
import org.openmetadata.service.jdbi3.CollectionDAO;
|
||||
@ -108,6 +109,15 @@ public interface SearchIndex {
|
||||
: Math.max(entity.getVotes().getUpVotes() - entity.getVotes().getDownVotes(), 0);
|
||||
map.put("totalVotes", totalVotes);
|
||||
map.put("descriptionStatus", getDescriptionStatus(entity));
|
||||
|
||||
Map<String, ChangeSummary> changeSummaryMap = SearchIndexUtils.getChangeSummaryMap(entity);
|
||||
map.put(
|
||||
"descriptionSources", SearchIndexUtils.processDescriptionSources(entity, changeSummaryMap));
|
||||
SearchIndexUtils.TagAndTierSources tagAndTierSources =
|
||||
SearchIndexUtils.processTagAndTierSources(entity);
|
||||
map.put("tagSources", tagAndTierSources.getTagSources());
|
||||
map.put("tierSources", tagAndTierSources.getTierSources());
|
||||
|
||||
map.put("fqnParts", getFQNParts(entity.getFullyQualifiedName()));
|
||||
map.put("deleted", entity.getDeleted() != null && entity.getDeleted());
|
||||
TagLabel tierTag = new ParseTags(Entity.getEntityTags(entityType, entity)).getTierTag();
|
||||
|
@ -420,6 +420,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"certification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -645,6 +645,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"certification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -385,6 +385,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"dashboards": {
|
||||
"properties": {
|
||||
"id": {
|
||||
|
@ -124,6 +124,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"domain" : {
|
||||
"properties": {
|
||||
"id": {
|
||||
|
@ -585,6 +585,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"certification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -448,6 +448,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"certification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -524,6 +524,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"certification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -495,6 +495,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"certification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -460,6 +460,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"certification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -275,6 +275,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"extension": {
|
||||
"type": "object"
|
||||
}
|
||||
|
@ -446,6 +446,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"childrenCount": {
|
||||
"type": "integer"
|
||||
}
|
||||
|
@ -347,6 +347,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"applicationType": {
|
||||
"type": "keyword",
|
||||
"normalizer": "lowercase_normalizer"
|
||||
|
@ -345,6 +345,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"certification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -521,6 +521,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"certification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -435,6 +435,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"certification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -477,6 +477,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"certification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -494,6 +494,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"certification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -650,6 +650,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"columnDescriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
|
@ -511,6 +511,15 @@
|
||||
"descriptionStatus": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"descriptionSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tagSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"tierSources": {
|
||||
"type": "object"
|
||||
},
|
||||
"certification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -41,6 +41,8 @@ import static org.openmetadata.service.security.SecurityUtil.getPrincipalName;
|
||||
import static org.openmetadata.service.security.mask.PIIMasker.MASKED_VALUE;
|
||||
import static org.openmetadata.service.util.EntityUtil.fieldUpdated;
|
||||
import static org.openmetadata.service.util.TestUtils.ADMIN_AUTH_HEADERS;
|
||||
import static org.openmetadata.service.util.TestUtils.INGESTION_BOT;
|
||||
import static org.openmetadata.service.util.TestUtils.INGESTION_BOT_AUTH_HEADERS;
|
||||
import static org.openmetadata.service.util.TestUtils.TEST_AUTH_HEADERS;
|
||||
import static org.openmetadata.service.util.TestUtils.TEST_USER_NAME;
|
||||
import static org.openmetadata.service.util.TestUtils.UpdateType.MINOR_UPDATE;
|
||||
@ -3822,4 +3824,64 @@ public class TestCaseResourceTest extends EntityResourceTest<TestCase, CreateTes
|
||||
WebTarget target = getResource(testCaseId).path("/failedRowsSample");
|
||||
return TestUtils.get(target, TableData.class, authHeaders);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_listTestCasesFilterByCreatedBy(TestInfo testInfo) throws IOException {
|
||||
if (supportsSearchIndex) {
|
||||
// Create test case with admin user
|
||||
CreateTestCase adminTestCaseReq =
|
||||
createRequest(testInfo)
|
||||
.withName("adminTestCase")
|
||||
.withEntityLink(TABLE_LINK)
|
||||
.withTestSuite(TEST_SUITE1.getFullyQualifiedName())
|
||||
.withTestDefinition(TEST_DEFINITION1.getFullyQualifiedName());
|
||||
TestCase adminTestCase = createAndCheckEntity(adminTestCaseReq, ADMIN_AUTH_HEADERS);
|
||||
|
||||
// Create test case with test user
|
||||
CreateTestCase testUserTestCaseReq =
|
||||
createRequest(testInfo)
|
||||
.withName("testUserTestCase")
|
||||
.withEntityLink(TABLE_LINK)
|
||||
.withTestSuite(TEST_SUITE1.getFullyQualifiedName())
|
||||
.withTestDefinition(TEST_DEFINITION1.getFullyQualifiedName());
|
||||
TestCase testUserTestCase =
|
||||
createAndCheckEntity(testUserTestCaseReq, INGESTION_BOT_AUTH_HEADERS);
|
||||
|
||||
// Test filtering by admin user (by name) in search endpoint
|
||||
Map<String, String> queryParams = new HashMap<>();
|
||||
queryParams.put("createdBy", ADMIN_USER_NAME);
|
||||
ResultList<TestCase> adminTestCases =
|
||||
listEntitiesFromSearch(queryParams, 10, 0, ADMIN_AUTH_HEADERS);
|
||||
assertTrue(
|
||||
adminTestCases.getData().stream()
|
||||
.allMatch(tc -> tc.getCreatedBy().equals(ADMIN_USER_NAME)),
|
||||
"Should find test case created by admin user");
|
||||
|
||||
// Test filtering by test user (by name) in search endpoint
|
||||
queryParams.clear();
|
||||
queryParams.put("createdBy", INGESTION_BOT);
|
||||
ResultList<TestCase> testUserTestCases =
|
||||
listEntitiesFromSearch(queryParams, 10, 0, ADMIN_AUTH_HEADERS);
|
||||
assertTrue(
|
||||
testUserTestCases.getData().stream()
|
||||
.allMatch(tc -> tc.getCreatedBy().equals(INGESTION_BOT)),
|
||||
"Should find test case created by test user");
|
||||
|
||||
// Test with list endpoint (non-search)
|
||||
Map<String, String> listParams = new HashMap<>();
|
||||
listParams.put("createdBy", ADMIN_USER_NAME);
|
||||
ResultList<TestCase> listResults = listEntities(listParams, ADMIN_AUTH_HEADERS);
|
||||
assertTrue(
|
||||
listResults.getData().stream().allMatch(tc -> tc.getCreatedBy().equals(ADMIN_USER_NAME)),
|
||||
"List endpoint should also filter by createdBy");
|
||||
|
||||
// Test with list endpoint (non-search)
|
||||
listParams.clear();
|
||||
listParams.put("createdBy", INGESTION_BOT);
|
||||
listResults = listEntities(listParams, ADMIN_AUTH_HEADERS);
|
||||
assertTrue(
|
||||
listResults.getData().stream().allMatch(tc -> tc.getCreatedBy().equals(INGESTION_BOT)),
|
||||
"List endpoint should also filter by createdBy");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -14,6 +14,7 @@
|
||||
import { t } from 'i18next';
|
||||
import { EntityFields } from '../enums/AdvancedSearch.enum';
|
||||
import { SearchIndex } from '../enums/search.enum';
|
||||
import { LabelType } from '../generated/type/tagLabel';
|
||||
|
||||
export const COMMON_DROPDOWN_ITEMS = [
|
||||
{
|
||||
@ -303,6 +304,8 @@ export const RANGE_FIELD_OPERATORS = ['between', 'not_between'];
|
||||
|
||||
export const LIST_VALUE_OPERATORS = ['select_equals', 'select_not_equals'];
|
||||
|
||||
export const NULL_CHECK_OPERATORS = ['is_null', 'is_not_null'];
|
||||
|
||||
export const MISC_FIELDS = ['owner.displayName', 'tags.tagFQN'];
|
||||
|
||||
export const OWNER_QUICK_FILTER_DEFAULT_OPTIONS_KEY = 'displayName.keyword';
|
||||
@ -315,3 +318,11 @@ export const SEARCH_INDICES_WITH_COLUMNS_FIELD = [
|
||||
SearchIndex.DATA_ASSET,
|
||||
SearchIndex.ALL,
|
||||
];
|
||||
|
||||
export const TAG_LABEL_TYPE_LIST_VALUES = {
|
||||
[LabelType.Manual]: t('label.manual'),
|
||||
[LabelType.Derived]: t('label.derived'),
|
||||
[LabelType.Propagated]: t('label.propagated'),
|
||||
[LabelType.Automated]: t('label.automated'),
|
||||
[LabelType.Generated]: t('label.generated'),
|
||||
};
|
||||
|
@ -71,6 +71,8 @@ export enum EntityFields {
|
||||
REQUEST_SCHEMA_FIELD = 'requestSchema.schemaFields.name.keyword',
|
||||
RESPONSE_SCHEMA_FIELD = 'responseSchema.schemaFields.name.keyword',
|
||||
SERVICE_NAME = 'service.name.keyword',
|
||||
SUGGESTED_DESCRIPTION = 'descriptionSources.Suggested',
|
||||
TAGS_LABEL_TYPE = 'tags.labelType',
|
||||
}
|
||||
|
||||
export const EntitySourceFields: Partial<Record<EntityFields, string[]>> = {
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "Automatische Klassifizierung",
|
||||
"auto-pii-confidence-score": "Auto PII-Vertrauensscore",
|
||||
"auto-tag-pii-uppercase": "Auto PII-Tag",
|
||||
"automated": "Automatisiert",
|
||||
"automatically-generate": "Automatisch generieren",
|
||||
"average-daily-active-users-on-the-platform": "Durchschnittliche aktive Nutzer auf der Plattoform",
|
||||
"average-entity": "Durchschnittlicher {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "Bereitgestellt",
|
||||
"deployed-lowercase": "bereitgestellt",
|
||||
"deploying-lowercase": "am bereitstellen",
|
||||
"derived": "Abgeleitet",
|
||||
"description": "Beschreibung",
|
||||
"description-kpi": "Beschreibung KPI",
|
||||
"description-lowercase": "beschreibung",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "GCS-Anmeldeinformation-Wert",
|
||||
"generate": "Generieren",
|
||||
"generate-new-token": "Neuen Token generieren",
|
||||
"generated": "Generiert",
|
||||
"generated-by": "Erstellt von",
|
||||
"get-app-support": "Get App Support",
|
||||
"global-setting-plural": "Globale Einstellungen",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "{{entity}} verwalten",
|
||||
"manage-rule": "Regeln verwalten",
|
||||
"mandatory": "Obligatorisch",
|
||||
"manual": "Manuell",
|
||||
"many-to-many": "Many to Many",
|
||||
"many-to-one": "Many to One",
|
||||
"march": "März",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "Projekt",
|
||||
"project-id": "Projekt-ID",
|
||||
"project-lowercase": "projekt",
|
||||
"propagated": "Weitergeleitet",
|
||||
"property": "Eigenschaft",
|
||||
"public-team": "Öffentliches Team",
|
||||
"quality": "Qualität",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "Tag",
|
||||
"tag-boost-plural": "Tag-Boosts",
|
||||
"tag-category-lowercase": "Tag-Kategorie",
|
||||
"tag-label-type": "Tag-Beschriftungstyp",
|
||||
"tag-lowercase": "tag",
|
||||
"tag-lowercase-plural": "tags",
|
||||
"tag-plural": "Tags",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "Auto Classification",
|
||||
"auto-pii-confidence-score": "Auto PII Confidence Score",
|
||||
"auto-tag-pii-uppercase": "Auto Tag PII",
|
||||
"automated": "Automated",
|
||||
"automatically-generate": "Automatically Generate",
|
||||
"average-daily-active-users-on-the-platform": "Average Daily Active Users on the Platform",
|
||||
"average-entity": "Avg. {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "Deployed",
|
||||
"deployed-lowercase": "deployed",
|
||||
"deploying-lowercase": "deploying",
|
||||
"derived": "Derived",
|
||||
"description": "Description",
|
||||
"description-kpi": "Description KPI",
|
||||
"description-lowercase": "description",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "GCS Credentials Values",
|
||||
"generate": "Generate",
|
||||
"generate-new-token": "Generate New Token",
|
||||
"generated": "Generated",
|
||||
"generated-by": "Generated by",
|
||||
"get-app-support": "Get App Support",
|
||||
"global-setting-plural": "Global Settings",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "Manage {{entity}}",
|
||||
"manage-rule": "Manage Rule",
|
||||
"mandatory": "Mandatory",
|
||||
"manual": "Manual",
|
||||
"many-to-many": "Many to Many",
|
||||
"many-to-one": "Many to One",
|
||||
"march": "March",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "Project",
|
||||
"project-id": "Project ID",
|
||||
"project-lowercase": "project",
|
||||
"propagated": "Propagated",
|
||||
"property": "Property",
|
||||
"public-team": "Public Team",
|
||||
"quality": "Quality",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "Tag",
|
||||
"tag-boost-plural": "Tag Boosts",
|
||||
"tag-category-lowercase": "tag category",
|
||||
"tag-label-type": "Tag Label Type",
|
||||
"tag-lowercase": "tag",
|
||||
"tag-lowercase-plural": "tags",
|
||||
"tag-plural": "Tags",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "Clasificación automática",
|
||||
"auto-pii-confidence-score": "Nivel de Confianza de Auto PII",
|
||||
"auto-tag-pii-uppercase": "Etiqueta de información personal identificable automática",
|
||||
"automated": "Automatizado",
|
||||
"automatically-generate": "Generar automáticamente",
|
||||
"average-daily-active-users-on-the-platform": "Average Daily Active Users on the Platform",
|
||||
"average-entity": "Media {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "Desplegado",
|
||||
"deployed-lowercase": "deployed",
|
||||
"deploying-lowercase": "deploying",
|
||||
"derived": "Derivado",
|
||||
"description": "Descripción",
|
||||
"description-kpi": "Description KPI",
|
||||
"description-lowercase": "descripción",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "Valores de credenciales de GCS",
|
||||
"generate": "Generar",
|
||||
"generate-new-token": "Generar un nuevo token",
|
||||
"generated": "Generado",
|
||||
"generated-by": "Generado por",
|
||||
"get-app-support": "Soporte para la aplicación",
|
||||
"global-setting-plural": "Configuración global",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "Administrar {{entity}}",
|
||||
"manage-rule": "Administrar regla",
|
||||
"mandatory": "Obligatorio",
|
||||
"manual": "Manual",
|
||||
"many-to-many": "Many to Many",
|
||||
"many-to-one": "Many to One",
|
||||
"march": "Marzo",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "Proyecto",
|
||||
"project-id": "ID del proyecto",
|
||||
"project-lowercase": "proyecto",
|
||||
"propagated": "Propagado",
|
||||
"property": "Propiedad",
|
||||
"public-team": "Equipo público",
|
||||
"quality": "Calidad",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "Etiqueta",
|
||||
"tag-boost-plural": "Impulsos de etiquetas",
|
||||
"tag-category-lowercase": "categoría de etiqueta",
|
||||
"tag-label-type": "Tipo de etiqueta",
|
||||
"tag-lowercase": "etiqueta",
|
||||
"tag-lowercase-plural": "etiquetas",
|
||||
"tag-plural": "Etiquetas",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "Classification Automatique",
|
||||
"auto-pii-confidence-score": "Score de Confiance Auto PII",
|
||||
"auto-tag-pii-uppercase": "Balise Auto PII",
|
||||
"automated": "Automatique",
|
||||
"automatically-generate": "Générer Automatiquement",
|
||||
"average-daily-active-users-on-the-platform": "Average Daily Active Users on the Platform",
|
||||
"average-entity": "Moyenne {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "Déployé",
|
||||
"deployed-lowercase": "deployed",
|
||||
"deploying-lowercase": "deploying",
|
||||
"derived": "Dérivé",
|
||||
"description": "Description",
|
||||
"description-kpi": "Description KPI",
|
||||
"description-lowercase": "description",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "Valeur des Identifiants GCS",
|
||||
"generate": "Générer",
|
||||
"generate-new-token": "Générer un Nouveau Jeton",
|
||||
"generated": "Généré",
|
||||
"generated-by": "Generated by",
|
||||
"get-app-support": "Get App Support",
|
||||
"global-setting-plural": "Paramètres globaux",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "Gérer {{entity}}",
|
||||
"manage-rule": "Gérer les Règles",
|
||||
"mandatory": "Obligatoire",
|
||||
"manual": "Manuel",
|
||||
"many-to-many": "Many to Many",
|
||||
"many-to-one": "Many to One",
|
||||
"march": "Mars",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "Projet",
|
||||
"project-id": "ID du Projet",
|
||||
"project-lowercase": "projet",
|
||||
"propagated": "Propagé",
|
||||
"property": "Propriété",
|
||||
"public-team": "Équipe Publique",
|
||||
"quality": "Qualité",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "Tag",
|
||||
"tag-boost-plural": "Boosts de tags",
|
||||
"tag-category-lowercase": "catégorie de tag",
|
||||
"tag-label-type": "Type de balise",
|
||||
"tag-lowercase": "tag",
|
||||
"tag-lowercase-plural": "tags",
|
||||
"tag-plural": "Tags",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "auto clasificación",
|
||||
"auto-pii-confidence-score": "Puntuación de confianza automática de PII",
|
||||
"auto-tag-pii-uppercase": "Etiquetado automático de PII",
|
||||
"automated": "Automático",
|
||||
"automatically-generate": "Xerar automaticamente",
|
||||
"average-daily-active-users-on-the-platform": "Media Usuarios Activos Diarios na Plataforma",
|
||||
"average-entity": "Media {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "Despregado",
|
||||
"deployed-lowercase": "despregado",
|
||||
"deploying-lowercase": "despregando",
|
||||
"derived": "Derivado",
|
||||
"description": "Descrición",
|
||||
"description-kpi": "Descrición KPI",
|
||||
"description-lowercase": "descrición",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "Valor das credenciais de GCS",
|
||||
"generate": "Xerar",
|
||||
"generate-new-token": "Xerar novo token",
|
||||
"generated": "Xerado",
|
||||
"generated-by": "Xerado por",
|
||||
"get-app-support": "Obter soporte de aplicación",
|
||||
"global-setting-plural": "Configuración global",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "Xestionar {{entity}}",
|
||||
"manage-rule": "Xestionar regra",
|
||||
"mandatory": "Obrigatorio",
|
||||
"manual": "Manual",
|
||||
"many-to-many": "Moitos a Moitos",
|
||||
"many-to-one": "Moitos a Un",
|
||||
"march": "Marzo",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "Proxecto",
|
||||
"project-id": "ID do proxecto",
|
||||
"project-lowercase": "proxecto",
|
||||
"propagated": "Propagado",
|
||||
"property": "Propiedade",
|
||||
"public-team": "Equipo público",
|
||||
"quality": "Calidade",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "Etiqueta",
|
||||
"tag-boost-plural": "Impulsos de etiquetas",
|
||||
"tag-category-lowercase": "categoría de etiqueta",
|
||||
"tag-label-type": "Tipo de etiqueta",
|
||||
"tag-lowercase": "etiqueta",
|
||||
"tag-lowercase-plural": "etiquetas",
|
||||
"tag-plural": "Etiquetas",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "סיווג אוטומטי",
|
||||
"auto-pii-confidence-score": "ציון ביטחון PII אוטומטי",
|
||||
"auto-tag-pii-uppercase": "תיוג PII אוטומטי",
|
||||
"automated": "אוטומטי",
|
||||
"automatically-generate": "צור באופן אוטומטי",
|
||||
"average-daily-active-users-on-the-platform": "Average Daily Active Users on the Platform",
|
||||
"average-entity": "ממוצע {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "נפרס",
|
||||
"deployed-lowercase": "deployed",
|
||||
"deploying-lowercase": "deploying",
|
||||
"derived": "מושך",
|
||||
"description": "תיאור",
|
||||
"description-kpi": "Description KPI",
|
||||
"description-lowercase": "תיאור",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "ערכי אישור GCS",
|
||||
"generate": "צור",
|
||||
"generate-new-token": "צור טוקן חדש",
|
||||
"generated": "מושך",
|
||||
"generated-by": "Generated by",
|
||||
"get-app-support": "קבל תמיכת אפליקציה",
|
||||
"global-setting-plural": "הגדרות גלובליות",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "נהל {{entity}}",
|
||||
"manage-rule": "נהל כלל",
|
||||
"mandatory": "חובה",
|
||||
"manual": "ידני",
|
||||
"many-to-many": "Many to Many",
|
||||
"many-to-one": "Many to One",
|
||||
"march": "מרץ",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "פרויקט",
|
||||
"project-id": "מזהה הפרויקט",
|
||||
"project-lowercase": "פרויקט",
|
||||
"propagated": "מושך",
|
||||
"property": "מאפיין",
|
||||
"public-team": "צוות ציבורי",
|
||||
"quality": "איכות",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "תג",
|
||||
"tag-boost-plural": "הגברות תגיות",
|
||||
"tag-category-lowercase": "קטגוריית תג",
|
||||
"tag-label-type": "סוג תגיות",
|
||||
"tag-lowercase": "תג",
|
||||
"tag-lowercase-plural": "תגיות",
|
||||
"tag-plural": "תגיות",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "自動分類",
|
||||
"auto-pii-confidence-score": "Auto PII Confidence Score",
|
||||
"auto-tag-pii-uppercase": "自動PIIタグ",
|
||||
"automated": "自動",
|
||||
"automatically-generate": "自動生成",
|
||||
"average-daily-active-users-on-the-platform": "Average Daily Active Users on the Platform",
|
||||
"average-entity": "平均 {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "デプロイされた",
|
||||
"deployed-lowercase": "deployed",
|
||||
"deploying-lowercase": "deploying",
|
||||
"derived": "派生",
|
||||
"description": "説明",
|
||||
"description-kpi": "Description KPI",
|
||||
"description-lowercase": "説明",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "GCS Credentials Values",
|
||||
"generate": "生成",
|
||||
"generate-new-token": "新しいトークンを生成",
|
||||
"generated": "生成",
|
||||
"generated-by": "Generated by",
|
||||
"get-app-support": "Get App Support",
|
||||
"global-setting-plural": "グローバル設定",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "{{entity}}の管理",
|
||||
"manage-rule": "ルールの管理",
|
||||
"mandatory": "Mandatory",
|
||||
"manual": "手動",
|
||||
"many-to-many": "Many to Many",
|
||||
"many-to-one": "Many to One",
|
||||
"march": "3月",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "Project",
|
||||
"project-id": "プロジェクトID",
|
||||
"project-lowercase": "プロジェクト",
|
||||
"propagated": "伝播",
|
||||
"property": "プロパティ",
|
||||
"public-team": "Public Team",
|
||||
"quality": "品質",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "タグ",
|
||||
"tag-boost-plural": "タグブースト",
|
||||
"tag-category-lowercase": "タグのカテゴリ",
|
||||
"tag-label-type": "タグラベルタイプ",
|
||||
"tag-lowercase": "タグ",
|
||||
"tag-lowercase-plural": "tags",
|
||||
"tag-plural": "タグ",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "자동 분류",
|
||||
"auto-pii-confidence-score": "자동 PII 신뢰도 점수",
|
||||
"auto-tag-pii-uppercase": "PII 자동 태그",
|
||||
"automated": "자동",
|
||||
"automatically-generate": "자동 생성",
|
||||
"average-daily-active-users-on-the-platform": "플랫폼의 일일 평균 활성 사용자 수",
|
||||
"average-entity": "평균 {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "배포됨",
|
||||
"deployed-lowercase": "배포됨",
|
||||
"deploying-lowercase": "배포 중",
|
||||
"derived": "유도됨",
|
||||
"description": "설명",
|
||||
"description-kpi": "설명 KPI",
|
||||
"description-lowercase": "설명",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "GCS 자격 증명 값",
|
||||
"generate": "생성",
|
||||
"generate-new-token": "새 토큰 생성",
|
||||
"generated": "생성됨",
|
||||
"generated-by": "생성자",
|
||||
"get-app-support": "앱 지원 받기",
|
||||
"global-setting-plural": "전역 설정",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "{{entity}} 관리",
|
||||
"manage-rule": "규칙 관리",
|
||||
"mandatory": "필수",
|
||||
"manual": "수동",
|
||||
"many-to-many": "다대다",
|
||||
"many-to-one": "다대일",
|
||||
"march": "3월",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "프로젝트",
|
||||
"project-id": "프로젝트 ID",
|
||||
"project-lowercase": "프로젝트",
|
||||
"propagated": "전파됨",
|
||||
"property": "속성",
|
||||
"public-team": "공개 팀",
|
||||
"quality": "품질",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "태그",
|
||||
"tag-boost-plural": "태그 부스트들",
|
||||
"tag-category-lowercase": "태그 카테고리",
|
||||
"tag-label-type": "태그 라벨 유형",
|
||||
"tag-lowercase": "태그",
|
||||
"tag-lowercase-plural": "태그들",
|
||||
"tag-plural": "태그들",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "Auto Classification",
|
||||
"auto-pii-confidence-score": "ऑटो PII आत्मविश्वास स्कोअर",
|
||||
"auto-tag-pii-uppercase": "ऑटो टॅग PII",
|
||||
"automated": "स्वयंचलित",
|
||||
"automatically-generate": "स्वयंचलितपणे व्युत्पन्न करा",
|
||||
"average-daily-active-users-on-the-platform": "प्लॅटफॉर्मवरील सरासरी दैनिक सक्रिय वापरकर्ते",
|
||||
"average-entity": "सरासरी {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "उपयोजित केले",
|
||||
"deployed-lowercase": "उपयोजित केले",
|
||||
"deploying-lowercase": "उपयोजित करत आहे",
|
||||
"derived": "व्युत्पन्न",
|
||||
"description": "वर्णन",
|
||||
"description-kpi": "वर्णन KPI",
|
||||
"description-lowercase": "वर्णन",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "जीसीएस क्रेडेन्शियल मूल्ये",
|
||||
"generate": "व्युत्पन्न करा",
|
||||
"generate-new-token": "नवीन टोकन व्युत्पन्न करा",
|
||||
"generated": "उत्पन्न",
|
||||
"generated-by": "द्वारे व्युत्पन्न",
|
||||
"get-app-support": "ॲप समर्थन मिळवा",
|
||||
"global-setting-plural": "वैश्विक सेटिंग्ज",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "व्यवस्थापित करा {{entity}}",
|
||||
"manage-rule": "नियम व्यवस्थापित करा",
|
||||
"mandatory": "अनिवार्य",
|
||||
"manual": "मॅन्युअल",
|
||||
"many-to-many": "अनेक ते अनेक",
|
||||
"many-to-one": "अनेक ते एक",
|
||||
"march": "मार्च",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "प्रकल्प",
|
||||
"project-id": "प्रकल्प आयडी",
|
||||
"project-lowercase": "प्रकल्प",
|
||||
"propagated": "प्रसारित",
|
||||
"property": "गुणधर्म",
|
||||
"public-team": "सार्वजनिक टीम",
|
||||
"quality": "गुणवत्ता",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "टॅग",
|
||||
"tag-boost-plural": "टॅग बूस्ट",
|
||||
"tag-category-lowercase": "टॅग श्रेणी",
|
||||
"tag-label-type": "टॅग लेबल प्रकार",
|
||||
"tag-lowercase": "टॅग",
|
||||
"tag-lowercase-plural": "टॅग्ज",
|
||||
"tag-plural": "टॅग्ज",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "Automatische classificatie",
|
||||
"auto-pii-confidence-score": "Automatische PII-vertrouwensscore",
|
||||
"auto-tag-pii-uppercase": "Automatisch taggen van PII",
|
||||
"automated": "Automatisch",
|
||||
"automatically-generate": "Automatisch genereren",
|
||||
"average-daily-active-users-on-the-platform": "Average Daily Active Users on the Platform",
|
||||
"average-entity": "Gemiddeld {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "Gedeployed",
|
||||
"deployed-lowercase": "deployed",
|
||||
"deploying-lowercase": "deploying",
|
||||
"derived": "Afgeleid",
|
||||
"description": "Beschrijving",
|
||||
"description-kpi": "Description KPI",
|
||||
"description-lowercase": "beschrijving",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "Waarden van GCS-verificatiegegevens",
|
||||
"generate": "Genereren",
|
||||
"generate-new-token": "Nieuw token genereren",
|
||||
"generated": "Gegenereerd",
|
||||
"generated-by": "Gegenereerd door",
|
||||
"get-app-support": "App-ondersteuning krijgen",
|
||||
"global-setting-plural": "Globale instellingen",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "Beheer {{entity}}",
|
||||
"manage-rule": "Beheer regel",
|
||||
"mandatory": "Verplicht",
|
||||
"manual": "Handmatig",
|
||||
"many-to-many": "Many to Many",
|
||||
"many-to-one": "Many to One",
|
||||
"march": "maart",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "Project",
|
||||
"project-id": "Project-ID",
|
||||
"project-lowercase": "project",
|
||||
"propagated": "Geëxtend",
|
||||
"property": "Eigenschap",
|
||||
"public-team": "Openbaar team",
|
||||
"quality": "Kwaliteit",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "Tag",
|
||||
"tag-boost-plural": "Tag boosts",
|
||||
"tag-category-lowercase": "tagcategorie",
|
||||
"tag-label-type": "Tag Label Soort",
|
||||
"tag-lowercase": "tag",
|
||||
"tag-lowercase-plural": "tags",
|
||||
"tag-plural": "Tags",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "طبقهبندی خودکار",
|
||||
"auto-pii-confidence-score": "امتیاز اعتماد PII خودکار",
|
||||
"auto-tag-pii-uppercase": "برچسب PII خودکار",
|
||||
"automated": "خودکار",
|
||||
"automatically-generate": "تولید خودکار",
|
||||
"average-daily-active-users-on-the-platform": "Average Daily Active Users on the Platform",
|
||||
"average-entity": "متوسط {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "مستقر شد",
|
||||
"deployed-lowercase": "مستقر شد",
|
||||
"deploying-lowercase": "در حال استقرار",
|
||||
"derived": "اشتقاقی",
|
||||
"description": "توضیحات",
|
||||
"description-kpi": "توضیحات KPI",
|
||||
"description-lowercase": "توضیحات",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "مقادیر اعتبارنامههای GCS",
|
||||
"generate": "تولید",
|
||||
"generate-new-token": "تولید توکن جدید",
|
||||
"generated": "تولید شده",
|
||||
"generated-by": "تولید شده توسط",
|
||||
"get-app-support": "دریافت پشتیبانی برنامه",
|
||||
"global-setting-plural": "تنظیمات سراسری",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "مدیریت {{entity}}",
|
||||
"manage-rule": "مدیریت قانون",
|
||||
"mandatory": "اجباری",
|
||||
"manual": "مندرج",
|
||||
"many-to-many": "Many to Many",
|
||||
"many-to-one": "Many to One",
|
||||
"march": "مارس",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "پروژه",
|
||||
"project-id": "شناسه پروژه",
|
||||
"project-lowercase": "پروژه",
|
||||
"propagated": "پراگت",
|
||||
"property": "ویژگی",
|
||||
"public-team": "تیم عمومی",
|
||||
"quality": "کیفیت",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "برچسب",
|
||||
"tag-boost-plural": "تقویت برچسبها",
|
||||
"tag-category-lowercase": "دستهبندی برچسب",
|
||||
"tag-label-type": "نوع برچسب",
|
||||
"tag-lowercase": "برچسب",
|
||||
"tag-lowercase-plural": "برچسبها",
|
||||
"tag-plural": "برچسبها",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "Classificação Automática",
|
||||
"auto-pii-confidence-score": "Pontuação de Confiança Automática PII",
|
||||
"auto-tag-pii-uppercase": "Tag automática de PII",
|
||||
"automated": "Automático",
|
||||
"automatically-generate": "Gerar Automaticamente",
|
||||
"average-daily-active-users-on-the-platform": "Média de usuários ativos diários na plataforma",
|
||||
"average-entity": "Média {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "Implementado",
|
||||
"deployed-lowercase": "implantado",
|
||||
"deploying-lowercase": "implantando",
|
||||
"derived": "Derivado",
|
||||
"description": "Descrição",
|
||||
"description-kpi": "Descrição KPI",
|
||||
"description-lowercase": "descrição",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "Valores das Credenciais GCS",
|
||||
"generate": "Gerar",
|
||||
"generate-new-token": "Gerar Novo Token",
|
||||
"generated": "Gerado",
|
||||
"generated-by": "Gerado por",
|
||||
"get-app-support": "Obter Suporte do Aplicativo",
|
||||
"global-setting-plural": "Configurações globais",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "Gerenciar {{entity}}",
|
||||
"manage-rule": "Gerenciar Regra",
|
||||
"mandatory": "Obrigatório",
|
||||
"manual": "Manual",
|
||||
"many-to-many": "Muitos para muitos",
|
||||
"many-to-one": "Muitos para um",
|
||||
"march": "Março",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "Projeto",
|
||||
"project-id": "ID do Projeto",
|
||||
"project-lowercase": "projeto",
|
||||
"propagated": "Propagado",
|
||||
"property": "Propriedade",
|
||||
"public-team": "Equipe Pública",
|
||||
"quality": "Qualidade",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "Tag",
|
||||
"tag-boost-plural": "Impulsos de tags",
|
||||
"tag-category-lowercase": "categoria de tag",
|
||||
"tag-label-type": "Tipo de rótulo de tag",
|
||||
"tag-lowercase": "tag",
|
||||
"tag-lowercase-plural": "tags",
|
||||
"tag-plural": "Tags",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "Classificação Automática",
|
||||
"auto-pii-confidence-score": "Pontuação de Confiança Automática PII",
|
||||
"auto-tag-pii-uppercase": "Etiqueta Automática PII",
|
||||
"automated": "Automático",
|
||||
"automatically-generate": "Gerar Automaticamente",
|
||||
"average-daily-active-users-on-the-platform": "Average Daily Active Users on the Platform",
|
||||
"average-entity": "Média {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "Implementado",
|
||||
"deployed-lowercase": "deployed",
|
||||
"deploying-lowercase": "deploying",
|
||||
"derived": "Derivado",
|
||||
"description": "Descrição",
|
||||
"description-kpi": "Description KPI",
|
||||
"description-lowercase": "descrição",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "Valores das Credenciais GCS",
|
||||
"generate": "Gerar",
|
||||
"generate-new-token": "Gerar Novo Token",
|
||||
"generated": "Gerado",
|
||||
"generated-by": "Generated by",
|
||||
"get-app-support": "Obter Suporte do Aplicativo",
|
||||
"global-setting-plural": "Definições globais",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "Gerenciar {{entity}}",
|
||||
"manage-rule": "Gerenciar Regra",
|
||||
"mandatory": "Obrigatório",
|
||||
"manual": "Manual",
|
||||
"many-to-many": "Many to Many",
|
||||
"many-to-one": "Many to One",
|
||||
"march": "Março",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "Projeto",
|
||||
"project-id": "ID do Projeto",
|
||||
"project-lowercase": "projeto",
|
||||
"propagated": "Propagado",
|
||||
"property": "Propriedade",
|
||||
"public-team": "Equipa Pública",
|
||||
"quality": "Qualidade",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "Etiqueta",
|
||||
"tag-boost-plural": "Impulsos de etiquetas",
|
||||
"tag-category-lowercase": "categoria de tag",
|
||||
"tag-label-type": "Tipo de rótulo de tag",
|
||||
"tag-lowercase": "tag",
|
||||
"tag-lowercase-plural": "tags",
|
||||
"tag-plural": "Etiquetas",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "Автоклассификация",
|
||||
"auto-pii-confidence-score": "Оценка достоверности Auto PII",
|
||||
"auto-tag-pii-uppercase": "Автотег PII",
|
||||
"automated": "Автоматический",
|
||||
"automatically-generate": "Автоматически генерировать",
|
||||
"average-daily-active-users-on-the-platform": "Average Daily Active Users on the Platform",
|
||||
"average-entity": "Среднее {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "Развернуто",
|
||||
"deployed-lowercase": "deployed",
|
||||
"deploying-lowercase": "deploying",
|
||||
"derived": "Производный",
|
||||
"description": "Описание",
|
||||
"description-kpi": "Description KPI",
|
||||
"description-lowercase": "описание",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "Значения учетных данных GCS",
|
||||
"generate": "Сгенерировать",
|
||||
"generate-new-token": "Сгенерировать новый токен",
|
||||
"generated": "Сгенерированный",
|
||||
"generated-by": "Generated by",
|
||||
"get-app-support": "Get App Support",
|
||||
"global-setting-plural": "Глобальные настройки",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "Управление {{entity}}",
|
||||
"manage-rule": "Правила управления",
|
||||
"mandatory": "Обязательный",
|
||||
"manual": "Ручной",
|
||||
"many-to-many": "Many to Many",
|
||||
"many-to-one": "Many to One",
|
||||
"march": "Март",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "Проект",
|
||||
"project-id": "ID проекта",
|
||||
"project-lowercase": "проект",
|
||||
"propagated": "Распространяется",
|
||||
"property": "Свойство",
|
||||
"public-team": "Открытая команда",
|
||||
"quality": "Качество",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "Тег",
|
||||
"tag-boost-plural": "Усиления тегов",
|
||||
"tag-category-lowercase": "тег категории",
|
||||
"tag-label-type": "Тип метки тега",
|
||||
"tag-lowercase": "тег",
|
||||
"tag-lowercase-plural": "теги",
|
||||
"tag-plural": "Теги",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "การจำแนกประเภทอัตโนมัติ",
|
||||
"auto-pii-confidence-score": "คะแนนความมั่นใจ PII อัตโนมัติ",
|
||||
"auto-tag-pii-uppercase": "แท็ก PII อัตโนมัติ",
|
||||
"automated": "อัตโนมัติ",
|
||||
"automatically-generate": "สร้างโดยอัตโนมัติ",
|
||||
"average-daily-active-users-on-the-platform": "Average Daily Active Users on the Platform",
|
||||
"average-entity": "ค่าเฉลี่ย {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "เรียกใช้แล้ว",
|
||||
"deployed-lowercase": "ถูกเรียกใช้",
|
||||
"deploying-lowercase": "กำลังเรียกใช้",
|
||||
"derived": "ออกมาจาก",
|
||||
"description": "คำอธิบาย",
|
||||
"description-kpi": "คำอธิบาย KPI",
|
||||
"description-lowercase": "คำอธิบาย",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "ค่าเครดิตเชียล GCS",
|
||||
"generate": "สร้าง",
|
||||
"generate-new-token": "สร้างโทเค็นใหม่",
|
||||
"generated": "สร้างขึ้น",
|
||||
"generated-by": "สร้างโดย",
|
||||
"get-app-support": "ขอความช่วยเหลือจากแอป",
|
||||
"global-setting-plural": "การตั้งค่าทั่วไป",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "จัดการ {{entity}}",
|
||||
"manage-rule": "จัดการกฎ",
|
||||
"mandatory": "บังคับ",
|
||||
"manual": "มืออาชีพ",
|
||||
"many-to-many": "หลายต่อหลาย",
|
||||
"many-to-one": "หลายต่อหนึ่ง",
|
||||
"march": "มีนาคม",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "โปรเจค",
|
||||
"project-id": "รหัสโปรเจค",
|
||||
"project-lowercase": "โปรเจค",
|
||||
"propagated": "กระจาย",
|
||||
"property": "คุณสมบัติ",
|
||||
"public-team": "ทีมสาธารณะ",
|
||||
"quality": "คุณภาพ",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "แท็ก",
|
||||
"tag-boost-plural": "การเพิ่มประสิทธิภาพแท็ก",
|
||||
"tag-category-lowercase": "หมวดหมู่แท็ก",
|
||||
"tag-label-type": "ประเภทป้ายกำกับ",
|
||||
"tag-lowercase": "แท็ก",
|
||||
"tag-lowercase-plural": "แท็กหลายรายการ",
|
||||
"tag-plural": "แท็กหลายรายการ",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "Otomatik Sınıflandırma",
|
||||
"auto-pii-confidence-score": "Otomatik KVT Güven Skoru",
|
||||
"auto-tag-pii-uppercase": "KVT'yi Otomatik Etiketle",
|
||||
"automated": "Otomatik",
|
||||
"automatically-generate": "Otomatik Oluştur",
|
||||
"average-daily-active-users-on-the-platform": "Platformdaki Ortalama Günlük Aktif Kullanıcı Sayısı",
|
||||
"average-entity": "Ort. {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "Dağıtıldı",
|
||||
"deployed-lowercase": "dağıtıldı",
|
||||
"deploying-lowercase": "dağıtılıyor",
|
||||
"derived": "Türetilmiş",
|
||||
"description": "Açıklama",
|
||||
"description-kpi": "Açıklama KPI'ı",
|
||||
"description-lowercase": "açıklama",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "GCS Kimlik Bilgileri Değerleri",
|
||||
"generate": "Oluştur",
|
||||
"generate-new-token": "Yeni Anahtar Oluştur",
|
||||
"generated": "Oluşturuldu",
|
||||
"generated-by": "Oluşturan",
|
||||
"get-app-support": "Uygulama Desteği Al",
|
||||
"global-setting-plural": "Global Ayarlar",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "{{entity}} Yönet",
|
||||
"manage-rule": "Kuralı Yönet",
|
||||
"mandatory": "Zorunlu",
|
||||
"manual": "El ile",
|
||||
"many-to-many": "Çoka Çok",
|
||||
"many-to-one": "Çoka Bir",
|
||||
"march": "Mart",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "Proje",
|
||||
"project-id": "Proje Kimliği",
|
||||
"project-lowercase": "proje",
|
||||
"propagated": "Yayılır",
|
||||
"property": "Özellik",
|
||||
"public-team": "Herkese Açık Takım",
|
||||
"quality": "Kalite",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "Etiket",
|
||||
"tag-boost-plural": "Etiket Destekleri",
|
||||
"tag-category-lowercase": "etiket kategorisi",
|
||||
"tag-label-type": "Etiket Etiket Türü",
|
||||
"tag-lowercase": "etiket",
|
||||
"tag-lowercase-plural": "etiketler",
|
||||
"tag-plural": "Etiketler",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"auto-classification": "自动分类",
|
||||
"auto-pii-confidence-score": "自动计算 PII 信任值",
|
||||
"auto-tag-pii-uppercase": "自动标记 PII",
|
||||
"automated": "自动",
|
||||
"automatically-generate": "自动生成",
|
||||
"average-daily-active-users-on-the-platform": "Average Daily Active Users on the Platform",
|
||||
"average-entity": "平均 {{entity}}",
|
||||
@ -403,6 +404,7 @@
|
||||
"deployed": "已部署",
|
||||
"deployed-lowercase": "deployed",
|
||||
"deploying-lowercase": "deploying",
|
||||
"derived": "衍生",
|
||||
"description": "描述",
|
||||
"description-kpi": "Description KPI",
|
||||
"description-lowercase": "描述",
|
||||
@ -612,6 +614,7 @@
|
||||
"gcs-credential-value": "GCS 凭证值",
|
||||
"generate": "生成",
|
||||
"generate-new-token": "生成新令牌",
|
||||
"generated": "生成",
|
||||
"generated-by": "生成自",
|
||||
"get-app-support": "Get App Support",
|
||||
"global-setting-plural": "全局设置",
|
||||
@ -792,6 +795,7 @@
|
||||
"manage-entity": "管理{{entity}}",
|
||||
"manage-rule": "管理规则",
|
||||
"mandatory": "必填",
|
||||
"manual": "手动",
|
||||
"many-to-many": "Many to Many",
|
||||
"many-to-one": "Many to One",
|
||||
"march": "三月",
|
||||
@ -1048,6 +1052,7 @@
|
||||
"project": "项目",
|
||||
"project-id": "项目 ID",
|
||||
"project-lowercase": "项目",
|
||||
"propagated": "传播",
|
||||
"property": "属性",
|
||||
"public-team": "公开的团队",
|
||||
"quality": "质控",
|
||||
@ -1355,6 +1360,7 @@
|
||||
"tag": "标签",
|
||||
"tag-boost-plural": "标签提升",
|
||||
"tag-category-lowercase": "标签分类",
|
||||
"tag-label-type": "标签类型",
|
||||
"tag-lowercase": "标签",
|
||||
"tag-lowercase-plural": "标签",
|
||||
"tag-plural": "标签",
|
||||
|
@ -50,6 +50,8 @@ describe('AdvancedSearchClassBase', () => {
|
||||
'extension',
|
||||
'descriptionStatus',
|
||||
'entityType',
|
||||
'descriptionSources.Suggested',
|
||||
'tags.labelType',
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
@ -25,8 +25,10 @@ import AntdConfig from 'react-awesome-query-builder/lib/config/antd';
|
||||
import { CustomPropertyEnumConfig } from '../components/Explore/AdvanceSearchProvider/AdvanceSearchProvider.interface';
|
||||
import {
|
||||
LIST_VALUE_OPERATORS,
|
||||
NULL_CHECK_OPERATORS,
|
||||
RANGE_FIELD_OPERATORS,
|
||||
SEARCH_INDICES_WITH_COLUMNS_FIELD,
|
||||
TAG_LABEL_TYPE_LIST_VALUES,
|
||||
TEXT_FIELD_OPERATORS,
|
||||
} from '../constants/AdvancedSearch.constants';
|
||||
import {
|
||||
@ -724,6 +726,22 @@ class AdvancedSearchClassBase {
|
||||
useAsyncSearch: true,
|
||||
},
|
||||
},
|
||||
[EntityFields.SUGGESTED_DESCRIPTION]: {
|
||||
label: t('label.suggested-description'),
|
||||
type: 'select',
|
||||
operators: NULL_CHECK_OPERATORS,
|
||||
mainWidgetProps: this.mainWidgetProps,
|
||||
valueSources: ['value'],
|
||||
},
|
||||
[EntityFields.TAGS_LABEL_TYPE]: {
|
||||
label: t('label.tag-label-type'),
|
||||
type: 'select',
|
||||
mainWidgetProps: this.mainWidgetProps,
|
||||
valueSources: ['value'],
|
||||
fieldSettings: {
|
||||
listValues: TAG_LABEL_TYPE_LIST_VALUES,
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user