Skip to content

Commit dd69e3f

Browse files
authored
Merge pull request #194 from PublicisSapient/DTS-49841_compute_benchmark_kpi_targets_kk
DTS-49841: fixed missing kpis benchmark
2 parents ad207ba + 7347cc9 commit dd69e3f

File tree

3 files changed

+27
-11
lines changed

3 files changed

+27
-11
lines changed

ai-data-processor/src/main/java/com/publicissapient/kpidashboard/job/kpibenchmarkcalculation/parser/KpiParserStrategy.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ public KpiDataCountParser getParser(String kpiFilter) {
5858
case "radiobutton_line", "radiobutton_grouped_column_plus_line" -> lineRadioFilterGraphParser;
5959
case "multitypefilters_line", "multitypefilters_grouped_column_plus_line" ->
6060
lineMultiFilterParser;
61-
case "_cumulativemultilinechart" -> cumulativeMultilineChartParser;
61+
case "_cumulativemultilinechart", "multiselectdropdown_cumulativemultilinechart" ->
62+
cumulativeMultilineChartParser;
6263
case "radiobutton_cumulativemultilinechart" -> cumulativeMultilineChartRadioButtonParser;
6364
default -> lineGraphParser;
6465
};

ai-data-processor/src/main/java/com/publicissapient/kpidashboard/job/kpibenchmarkcalculation/parser/LineFilterGraphParser.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,15 @@ public Map<String, List<Double>> getKpiDataPoints(List<?> kpiDataList) {
5555
((List<DataCountGroup>) kpiDataList)
5656
.stream()
5757
.filter(
58-
dataCountGroup ->
59-
dataCountGroup.getFilter() != null
60-
&& dataCountGroup.getFilter().equalsIgnoreCase("Overall"))
58+
dataCountGroup -> {
59+
if (dataCountGroup.getFilter() != null
60+
&& (dataCountGroup.getFilter().equalsIgnoreCase("Overall")
61+
|| dataCountGroup.getFilter().equalsIgnoreCase("Average Coverage")))
62+
return true;
63+
else
64+
return dataCountGroup.getFilter2() != null
65+
&& dataCountGroup.getFilter2().equalsIgnoreCase("Overall");
66+
})
6167
.map(DataCountGroup::getValue)
6268
.findFirst();
6369

ai-data-processor/src/main/java/com/publicissapient/kpidashboard/job/kpibenchmarkcalculation/service/KpiBenchmarkCalculationService.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@ public KpiBenchmarkValues getKpiWiseBenchmarkValues(KpiDataDTO kpiDataDTO) {
9595
* @param kpiDataDTO KPI data to fetch
9696
* @return list of KPI elements from all projects
9797
*/
98-
private List<KpiElement> fetchKpiElements(KpiDataDTO kpiDataDTO) {
98+
private synchronized List<KpiElement> fetchKpiElements(KpiDataDTO kpiDataDTO) {
9999
return projectBasicConfigRepository
100100
.findByKanbanAndProjectOnHold(kpiDataDTO.kanban(), false)
101101
.stream()
102102
.map(
103103
config -> {
104-
if (kpiDataDTO.kanban())
104+
if (kpiDataDTO.kanban() || "Developer".equalsIgnoreCase(kpiDataDTO.kpiCategory()))
105105
return constructKanbanKpiRequest(kpiDataDTO, config.getProjectNodeId());
106106
else
107107
return constructKpiRequest(kpiDataDTO, config.getProjectNodeId(), config.getId());
@@ -111,11 +111,15 @@ private List<KpiElement> fetchKpiElements(KpiDataDTO kpiDataDTO) {
111111
.flatMap(
112112
request -> {
113113
try {
114+
List<KpiElement> result;
114115
if (kpiDataDTO.kanban())
115-
return knowHOWClient.getKpiIntegrationValuesKanbanSync(request).stream();
116-
else return knowHOWClient.getKpiIntegrationValuesSync(request).stream();
116+
result = knowHOWClient.getKpiIntegrationValuesKanbanSync(request);
117+
else result = knowHOWClient.getKpiIntegrationValuesSync(request);
118+
return result != null ? result.stream() : java.util.stream.Stream.empty();
117119
} catch (Exception ex) {
118-
return null;
120+
log.warn(
121+
"Failed to fetch KPI data for KPI {}: {}", kpiDataDTO.kpiId(), ex.getMessage());
122+
return java.util.stream.Stream.empty();
119123
}
120124
})
121125
.toList();
@@ -146,16 +150,21 @@ private KpiBenchmarkValues createKpiBenchmarkValues(
146150
Collectors.flatMapping(
147151
entry -> entry.getValue().stream(), Collectors.toList())));
148152

149-
List<BenchmarkPercentiles> filterWiseBenchmark =
153+
List<BenchmarkPercentiles> benchmarkByFilter =
150154
allDataPoints.entrySet().stream()
151155
.map(
152156
entry ->
153157
createBenchmarkPercentiles(entry.getValue(), entry.getKey(), isPositiveTrend))
154158
.toList();
155159

160+
log.info(
161+
"{} Generated Benchmark for KPI ID: {} with count {}",
162+
JobConstants.LOG_PREFIX_KPI_BENCHMARK_CALCULATION,
163+
kpiId,
164+
benchmarkByFilter.size());
156165
return KpiBenchmarkValues.builder()
157166
.kpiId(kpiId)
158-
.filterWiseBenchmarkValues(filterWiseBenchmark)
167+
.filterWiseBenchmarkValues(benchmarkByFilter)
159168
.calculationDate(Instant.now())
160169
.build();
161170
} catch (ClassCastException e) {

0 commit comments

Comments
 (0)