@elisra-devops/docgen-data-provider 1.80.0 → 1.81.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import type { MewpBugLink, MewpExternalFileRef, MewpL3L4Link } from '../models/mewp-reporting';
1
+ import type { MewpBugLink, MewpExternalFileRef, MewpL3L4Pair } from '../models/mewp-reporting';
2
2
  import MewpExternalTableUtils from './mewpExternalTableUtils';
3
3
  export interface MewpExternalIngestionAdapters {
4
4
  toComparableText: (value: any) => string;
@@ -12,6 +12,6 @@ export default class MewpExternalIngestionUtils {
12
12
  private externalTableUtils;
13
13
  constructor(externalTableUtils: MewpExternalTableUtils);
14
14
  loadExternalBugsByTestCase(externalBugsFile: MewpExternalFileRef | null | undefined, adapters: MewpExternalIngestionAdapters): Promise<Map<number, MewpBugLink[]>>;
15
- loadExternalL3L4ByBaseKey(externalL3L4File: MewpExternalFileRef | null | undefined, adapters: MewpExternalIngestionAdapters): Promise<Map<string, MewpL3L4Link[]>>;
15
+ loadExternalL3L4ByBaseKey(externalL3L4File: MewpExternalFileRef | null | undefined, adapters: MewpExternalIngestionAdapters): Promise<Map<string, MewpL3L4Pair[]>>;
16
16
  private toPositiveNumber;
17
17
  }
@@ -127,19 +127,32 @@ class MewpExternalIngestionUtils {
127
127
  return new Map();
128
128
  }
129
129
  logger_1.default.info(`MEWP external L3/L4 ingestion: start source='${sourceName || 'unknown'}' rows=${rows.length}`);
130
- const linksByBaseKey = new Map();
131
- const addLink = (baseKey, level, id, title) => {
132
- if (!baseKey || !id)
130
+ const pairsByBaseKey = new Map();
131
+ const addPair = (baseKey, pair) => {
132
+ const l3Id = String((pair === null || pair === void 0 ? void 0 : pair.l3Id) || '').trim();
133
+ const l4Id = String((pair === null || pair === void 0 ? void 0 : pair.l4Id) || '').trim();
134
+ if (!baseKey || (!l3Id && !l4Id))
133
135
  return;
134
- if (!linksByBaseKey.has(baseKey)) {
135
- linksByBaseKey.set(baseKey, new Map());
136
+ if (!pairsByBaseKey.has(baseKey)) {
137
+ pairsByBaseKey.set(baseKey, new Map());
136
138
  }
137
- const idKey = String(id).trim();
138
- const dedupeKey = `${level}:${idKey}`;
139
- linksByBaseKey.get(baseKey).set(dedupeKey, {
140
- id: idKey,
141
- title: String(title || '').trim(),
142
- level,
139
+ const key = `${l3Id}|${l4Id}`;
140
+ const byPair = pairsByBaseKey.get(baseKey);
141
+ const existing = byPair.get(key);
142
+ if (!existing) {
143
+ byPair.set(key, {
144
+ l3Id,
145
+ l3Title: String((pair === null || pair === void 0 ? void 0 : pair.l3Title) || '').trim(),
146
+ l4Id,
147
+ l4Title: String((pair === null || pair === void 0 ? void 0 : pair.l4Title) || '').trim(),
148
+ });
149
+ return;
150
+ }
151
+ byPair.set(key, {
152
+ l3Id: existing.l3Id || l3Id,
153
+ l3Title: existing.l3Title || String((pair === null || pair === void 0 ? void 0 : pair.l3Title) || '').trim(),
154
+ l4Id: existing.l4Id || l4Id,
155
+ l4Title: existing.l4Title || String((pair === null || pair === void 0 ? void 0 : pair.l4Title) || '').trim(),
143
156
  });
144
157
  };
145
158
  let parsedRows = 0;
@@ -192,26 +205,57 @@ class MewpExternalIngestionUtils {
192
205
  'TargetSapWbs Level 4',
193
206
  ]));
194
207
  if (area.includes('level 4')) {
208
+ // AREA 34 = Level 4 supports two modes:
209
+ // 1) Direct L2->L4: only Level-3 target column is populated; treat it as L4.
210
+ // 2) Paired L3+L4 in same row: Level-3 and Level-4 columns are both populated.
195
211
  const effectiveSapWbsLevel3 = targetSapWbsLevel3 || requirementSapWbsFallback;
196
- if (!targetIdLevel3) {
197
- parsedRows += 1;
198
- continue;
199
- }
200
- if (!adapters.isExternalStateInScope(targetStateLevel3, 'requirement')) {
201
- filteredByState += 1;
202
- parsedRows += 1;
203
- continue;
204
- }
205
- if (adapters.isExcludedL3L4BySapWbs(effectiveSapWbsLevel3)) {
206
- filteredBySapWbs += 1;
207
- parsedRows += 1;
208
- continue;
212
+ const effectiveSapWbsLevel4 = targetSapWbsLevel4 || requirementSapWbsFallback;
213
+ const allowLevel3State = adapters.isExternalStateInScope(targetStateLevel3, 'requirement');
214
+ const allowLevel3SapWbs = !adapters.isExcludedL3L4BySapWbs(effectiveSapWbsLevel3);
215
+ const allowLevel4State = adapters.isExternalStateInScope(targetStateLevel4, 'requirement');
216
+ const allowLevel4SapWbs = !adapters.isExcludedL3L4BySapWbs(effectiveSapWbsLevel4);
217
+ const hasLevel4Columns = !!targetIdLevel4;
218
+ if (hasLevel4Columns) {
219
+ if (!allowLevel3State)
220
+ filteredByState += 1;
221
+ if (!allowLevel3SapWbs)
222
+ filteredBySapWbs += 1;
223
+ if (!allowLevel4State)
224
+ filteredByState += 1;
225
+ if (!allowLevel4SapWbs)
226
+ filteredBySapWbs += 1;
227
+ const includeL3 = !!(targetIdLevel3 && allowLevel3State && allowLevel3SapWbs);
228
+ const includeL4 = !!(targetIdLevel4 && allowLevel4State && allowLevel4SapWbs);
229
+ if (includeL3 || includeL4) {
230
+ addPair(baseKey, {
231
+ l3Id: includeL3 ? String(targetIdLevel3) : '',
232
+ l3Title: includeL3 ? targetTitleLevel3 : '',
233
+ l4Id: includeL4 ? String(targetIdLevel4) : '',
234
+ l4Title: includeL4 ? targetTitleLevel4 : '',
235
+ });
236
+ }
237
+ if (includeL3)
238
+ acceptedL3 += 1;
239
+ if (includeL4)
240
+ acceptedL4 += 1;
209
241
  }
210
- if (targetIdLevel3 &&
211
- adapters.isExternalStateInScope(targetStateLevel3, 'requirement') &&
212
- !adapters.isExcludedL3L4BySapWbs(effectiveSapWbsLevel3)) {
213
- addLink(baseKey, 'L4', targetIdLevel3, targetTitleLevel3);
214
- acceptedL4 += 1;
242
+ else {
243
+ // Direct L2->L4 mode (legacy file semantics): Level-3 target column carries L4 ID/title.
244
+ const allowDirectL4State = adapters.isExternalStateInScope(targetStateLevel3, 'requirement');
245
+ const allowDirectL4SapWbs = !adapters.isExcludedL3L4BySapWbs(effectiveSapWbsLevel3);
246
+ if (!allowDirectL4State)
247
+ filteredByState += 1;
248
+ if (!allowDirectL4SapWbs)
249
+ filteredBySapWbs += 1;
250
+ if (targetIdLevel3 && allowDirectL4State && allowDirectL4SapWbs) {
251
+ addPair(baseKey, {
252
+ l3Id: '',
253
+ l3Title: '',
254
+ l4Id: String(targetIdLevel3),
255
+ l4Title: targetTitleLevel3,
256
+ });
257
+ acceptedL4 += 1;
258
+ }
215
259
  }
216
260
  parsedRows += 1;
217
261
  continue;
@@ -223,10 +267,6 @@ class MewpExternalIngestionUtils {
223
267
  filteredByState += 1;
224
268
  if (!allowLevel3SapWbs)
225
269
  filteredBySapWbs += 1;
226
- if (targetIdLevel3 && allowLevel3State && allowLevel3SapWbs) {
227
- addLink(baseKey, 'L3', targetIdLevel3, targetTitleLevel3);
228
- acceptedL3 += 1;
229
- }
230
270
  const effectiveSapWbsLevel4 = targetSapWbsLevel4 || requirementSapWbsFallback;
231
271
  const allowLevel4State = adapters.isExternalStateInScope(targetStateLevel4, 'requirement');
232
272
  const allowLevel4SapWbs = !adapters.isExcludedL3L4BySapWbs(effectiveSapWbsLevel4);
@@ -234,18 +274,33 @@ class MewpExternalIngestionUtils {
234
274
  filteredByState += 1;
235
275
  if (!allowLevel4SapWbs)
236
276
  filteredBySapWbs += 1;
237
- if (targetIdLevel4 && allowLevel4State && allowLevel4SapWbs) {
238
- addLink(baseKey, 'L4', targetIdLevel4, targetTitleLevel4);
239
- acceptedL4 += 1;
277
+ const includeL3 = !!(targetIdLevel3 && allowLevel3State && allowLevel3SapWbs);
278
+ const includeL4 = !!(targetIdLevel4 && allowLevel4State && allowLevel4SapWbs);
279
+ if (includeL3 || includeL4) {
280
+ addPair(baseKey, {
281
+ l3Id: includeL3 ? String(targetIdLevel3) : '',
282
+ l3Title: includeL3 ? targetTitleLevel3 : '',
283
+ l4Id: includeL4 ? String(targetIdLevel4) : '',
284
+ l4Title: includeL4 ? targetTitleLevel4 : '',
285
+ });
240
286
  }
287
+ if (includeL3)
288
+ acceptedL3 += 1;
289
+ if (includeL4)
290
+ acceptedL4 += 1;
241
291
  parsedRows += 1;
242
292
  }
243
293
  const out = new Map();
244
- for (const [baseKey, linksById] of linksByBaseKey.entries()) {
245
- out.set(baseKey, [...linksById.values()].sort((a, b) => {
246
- if (a.level !== b.level)
247
- return a.level === 'L3' ? -1 : 1;
248
- return a.id.localeCompare(b.id);
294
+ for (const [baseKey, byPair] of pairsByBaseKey.entries()) {
295
+ out.set(baseKey, [...byPair.values()].sort((a, b) => {
296
+ const aL3 = String((a === null || a === void 0 ? void 0 : a.l3Id) || '');
297
+ const bL3 = String((b === null || b === void 0 ? void 0 : b.l3Id) || '');
298
+ const l3Compare = aL3.localeCompare(bL3);
299
+ if (l3Compare !== 0)
300
+ return l3Compare;
301
+ const aL4 = String((a === null || a === void 0 ? void 0 : a.l4Id) || '');
302
+ const bL4 = String((b === null || b === void 0 ? void 0 : b.l4Id) || '');
303
+ return aL4.localeCompare(bL4);
249
304
  }));
250
305
  }
251
306
  if (parsedRows === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"mewpExternalIngestionUtils.js","sourceRoot":"","sources":["../../src/utils/mewpExternalIngestionUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mewpExternalIngestionUtils.js","sourceRoot":"","sources":["../../src/utils/mewpExternalIngestionUtils.ts"],"names":[],"mappings":";;AAKA,qCAA8B;AAY9B,MAAqB,0BAA0B;IAG7C,YAAY,kBAA0C;QACpD,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,0BAA0B,CACrC,gBAAwD,EACxD,QAAuC;;QAEvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC3F,MAAM,UAAU,GAAG,MAAM,CACvB,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,MAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,UAAU,CAAA,KAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,CAAA,KAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,GAAG,CAAA,IAAI,EAAE,CAChH,CAAC,IAAI,EAAE,CAAC;QACT,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,UAAU,EAAE,CAAC;gBACf,gBAAM,CAAC,IAAI,CAAC,yCAAyC,UAAU,4BAA4B,CAAC,CAAC;YAC/F,CAAC;YACD,OAAO,IAAI,GAAG,EAAyB,CAAC;QAC1C,CAAC;QACD,gBAAM,CAAC,IAAI,CAAC,+CAA+C,UAAU,IAAI,SAAS,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAE3G,IAAI,wBAAwB,GAAG,CAAC,CAAC;QACjC,IAAI,yBAAyB,GAAG,CAAC,CAAC;QAClC,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,sBAAsB,GAAG,CAAC,CAAC;QAE/B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAyB,CAAC;QAC7C,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CACtC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE;gBAC5C,kBAAkB;gBAClB,kBAAkB;gBAClB,iBAAiB;aAClB,CAAC,CACH,CAAC;YACF,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,wBAAwB,IAAI,CAAC,CAAC;gBAC9B,SAAS;YACX,CAAC;YACD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,gBAAgB,CAClD,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CACjF,CAAC;YACF,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,yBAAyB,IAAI,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GACT,IAAI,CAAC,gBAAgB,CACnB,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE;gBAC5C,kBAAkB;gBAClB,QAAQ;gBACR,OAAO;gBACP,iCAAiC;gBACjC,iCAAiC;aAClC,CAAC,CACH,IAAI,CAAC,CAAC;YACT,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,mBAAmB,IAAI,CAAC,CAAC;gBACzB,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CACxC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CACxE,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;gBACtD,sBAAsB,IAAI,CAAC,CAAC;gBAC5B,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CACxC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,4BAA4B,CAAC,CAAC,CACpG,CAAC;YACF,MAAM,oBAAoB,GAAG,QAAQ,CAAC,gBAAgB,CACpD,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE;gBAC5C,gBAAgB;gBAChB,UAAU;gBACV,QAAQ;gBACR,cAAc;aACf,CAAC,CACH,CAAC;YAEF,MAAM,GAAG,GAAgB;gBACvB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,QAAQ;gBACf,cAAc,EAAE,QAAQ,CAAC,wBAAwB,CAAC;oBAChD,eAAe,EAAE,oBAAoB;iBACtC,CAAC;gBACF,kBAAkB;aACnB,CAAC;YAEF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAClD,GAAG,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,UAAU,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;QACjD,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,KAAK,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAuB,CAAC;YAC5C,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,EAAE,KAAI,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;oBAAE,SAAS;gBACpD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,kBAAkB,KAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7D,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;oBAC5B,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;oBACrB,EAAE,EAAE,KAAK;oBACT,kBAAkB,EAAE,OAAO;oBAC3B,KAAK,EAAE,MAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,MAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,CAAA,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;oBACzD,cAAc,EAAE,MAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,MAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,cAAc,CAAA,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;iBACrF,CAAC,CAAC;YACL,CAAC;YACD,OAAO,CAAC,GAAG,CACT,UAAU,EACV,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC9C,IAAI,SAAS,KAAK,CAAC;oBAAE,OAAO,SAAS,CAAC;gBACtC,OAAO,MAAM,CAAC,CAAC,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9F,CAAC,CAAC,CACH,CAAC;YACF,WAAW,IAAI,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,0CAAE,MAAM,KAAI,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,gBAAM,CAAC,IAAI,CACT,iEAAiE;gBAC/D,kEAAkE,CACrE,CAAC;QACJ,CAAC;QACD,gBAAM,CAAC,IAAI,CACT,8CAA8C,UAAU,IAAI,SAAS,IAAI;YACvE,QAAQ,IAAI,CAAC,MAAM,WAAW,UAAU,YAAY,WAAW,GAAG;YAClE,aAAa,OAAO,CAAC,IAAI,GAAG;YAC5B,4BAA4B,wBAAwB,GAAG;YACvD,6BAA6B,yBAAyB,GAAG;YACzD,uBAAuB,mBAAmB,GAAG;YAC7C,0BAA0B,sBAAsB,EAAE,CACrD,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,yBAAyB,CACpC,gBAAwD,EACxD,QAAuC;;QAEvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC3F,MAAM,UAAU,GAAG,MAAM,CACvB,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,MAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,UAAU,CAAA,KAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,CAAA,KAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,GAAG,CAAA,IAAI,EAAE,CAChH,CAAC,IAAI,EAAE,CAAC;QACT,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,UAAU,EAAE,CAAC;gBACf,gBAAM,CAAC,IAAI,CAAC,0CAA0C,UAAU,4BAA4B,CAAC,CAAC;YAChG,CAAC;YACD,OAAO,IAAI,GAAG,EAA0B,CAAC;QAC3C,CAAC;QACD,gBAAM,CAAC,IAAI,CAAC,gDAAgD,UAAU,IAAI,SAAS,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAE5G,MAAM,cAAc,GAAG,IAAI,GAAG,EAAqC,CAAC;QACpE,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,IAAkB,EAAE,EAAE;YACtD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,KAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,KAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO;YACzC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAwB,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;oBACd,IAAI;oBACJ,OAAO,EAAE,MAAM,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,KAAI,EAAE,CAAC,CAAC,IAAI,EAAE;oBAC3C,IAAI;oBACJ,OAAO,EAAE,MAAM,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,KAAI,EAAE,CAAC,CAAC,IAAI,EAAE;iBAC5C,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;gBACd,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,IAAI;gBAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,KAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBAC/D,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,IAAI;gBAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,KAAI,EAAE,CAAC,CAAC,IAAI,EAAE;aAChE,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,yBAAyB,GAAG,CAAC,CAAC;QAClC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/F,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,yBAAyB,IAAI,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,MAAM,yBAAyB,GAAG,CAAA,MAAA,QAAQ,CAAC,iCAAiC,yDAAG,OAAO,CAAC,KAAI,EAAE,CAAC;YAE9F,MAAM,IAAI,GAAG,QAAQ;iBAClB,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;iBACtF,WAAW,EAAE,CAAC;YACjB,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAC1C,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE;gBAC5C,0BAA0B;gBAC1B,yBAAyB;gBACzB,wBAAwB;aACzB,CAAC,CACH,CAAC;YACF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,gBAAgB,CACjD,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE;gBAC5C,mBAAmB;gBACnB,oBAAoB;gBACpB,qBAAqB;aACtB,CAAC,CACH,CAAC;YACF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,gBAAgB,CACjD,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAC,CAC3F,CAAC;YACF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,gBAAgB,CAClD,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE;gBAC5C,qBAAqB;gBACrB,oBAAoB;gBACpB,sBAAsB;aACvB,CAAC,CACH,CAAC;YACF,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAC1C,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE;gBAC5C,yBAAyB;gBACzB,0BAA0B;gBAC1B,wBAAwB;aACzB,CAAC,CACH,CAAC;YACF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,gBAAgB,CACjD,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE;gBAC5C,mBAAmB;gBACnB,oBAAoB;gBACpB,qBAAqB;aACtB,CAAC,CACH,CAAC;YACF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,gBAAgB,CACjD,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAC,CAC3F,CAAC;YACF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,gBAAgB,CAClD,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE;gBAC5C,qBAAqB;gBACrB,oBAAoB;gBACpB,sBAAsB;aACvB,CAAC,CACH,CAAC;YAEF,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,wCAAwC;gBACxC,6EAA6E;gBAC7E,+EAA+E;gBAC/E,MAAM,qBAAqB,GAAG,kBAAkB,IAAI,yBAAyB,CAAC;gBAC9E,MAAM,qBAAqB,GAAG,kBAAkB,IAAI,yBAAyB,CAAC;gBAC9E,MAAM,gBAAgB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;gBAC3F,MAAM,iBAAiB,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;gBAClF,MAAM,gBAAgB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;gBAC3F,MAAM,iBAAiB,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;gBAElF,MAAM,gBAAgB,GAAG,CAAC,CAAC,cAAc,CAAC;gBAC1C,IAAI,gBAAgB,EAAE,CAAC;oBACrB,IAAI,CAAC,gBAAgB;wBAAE,eAAe,IAAI,CAAC,CAAC;oBAC5C,IAAI,CAAC,iBAAiB;wBAAE,gBAAgB,IAAI,CAAC,CAAC;oBAC9C,IAAI,CAAC,gBAAgB;wBAAE,eAAe,IAAI,CAAC,CAAC;oBAC5C,IAAI,CAAC,iBAAiB;wBAAE,gBAAgB,IAAI,CAAC,CAAC;oBAE9C,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,cAAc,IAAI,gBAAgB,IAAI,iBAAiB,CAAC,CAAC;oBAC9E,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,cAAc,IAAI,gBAAgB,IAAI,iBAAiB,CAAC,CAAC;oBAC9E,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;wBAC3B,OAAO,CAAC,OAAO,EAAE;4BACf,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE;4BAC7C,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;4BAC3C,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE;4BAC7C,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;yBAC5C,CAAC,CAAC;oBACL,CAAC;oBACD,IAAI,SAAS;wBAAE,UAAU,IAAI,CAAC,CAAC;oBAC/B,IAAI,SAAS;wBAAE,UAAU,IAAI,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,yFAAyF;oBACzF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;oBAC7F,MAAM,mBAAmB,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;oBACpF,IAAI,CAAC,kBAAkB;wBAAE,eAAe,IAAI,CAAC,CAAC;oBAC9C,IAAI,CAAC,mBAAmB;wBAAE,gBAAgB,IAAI,CAAC,CAAC;oBAChD,IAAI,cAAc,IAAI,kBAAkB,IAAI,mBAAmB,EAAE,CAAC;wBAChE,OAAO,CAAC,OAAO,EAAE;4BACf,IAAI,EAAE,EAAE;4BACR,OAAO,EAAE,EAAE;4BACX,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC;4BAC5B,OAAO,EAAE,iBAAiB;yBAC3B,CAAC,CAAC;wBACH,UAAU,IAAI,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;gBACD,UAAU,IAAI,CAAC,CAAC;gBAChB,SAAS;YACX,CAAC;YAED,MAAM,qBAAqB,GAAG,kBAAkB,IAAI,yBAAyB,CAAC;YAC9E,MAAM,gBAAgB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;YAC3F,MAAM,iBAAiB,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;YAClF,IAAI,CAAC,gBAAgB;gBAAE,eAAe,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,iBAAiB;gBAAE,gBAAgB,IAAI,CAAC,CAAC;YAE9C,MAAM,qBAAqB,GAAG,kBAAkB,IAAI,yBAAyB,CAAC;YAC9E,MAAM,gBAAgB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;YAC3F,MAAM,iBAAiB,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;YAClF,IAAI,CAAC,gBAAgB;gBAAE,eAAe,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,iBAAiB;gBAAE,gBAAgB,IAAI,CAAC,CAAC;YAE9C,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,cAAc,IAAI,gBAAgB,IAAI,iBAAiB,CAAC,CAAC;YAC9E,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,cAAc,IAAI,gBAAgB,IAAI,iBAAiB,CAAC,CAAC;YAC9E,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;gBAC3B,OAAO,CAAC,OAAO,EAAE;oBACf,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC7C,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;oBAC3C,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC7C,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;iBAC5C,CAAC,CAAC;YACL,CAAC;YACD,IAAI,SAAS;gBAAE,UAAU,IAAI,CAAC,CAAC;YAC/B,IAAI,SAAS;gBAAE,UAAU,IAAI,CAAC,CAAC;YAC/B,UAAU,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC9C,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;YACzD,GAAG,CAAC,GAAG,CACL,OAAO,EACP,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,KAAI,EAAE,CAAC,CAAC;gBAClC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,KAAI,EAAE,CAAC,CAAC;gBAClC,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACzC,IAAI,SAAS,KAAK,CAAC;oBAAE,OAAO,SAAS,CAAC;gBAEtC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,KAAI,EAAE,CAAC,CAAC;gBAClC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,KAAI,EAAE,CAAC,CAAC;gBAClC,OAAO,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,gBAAM,CAAC,IAAI,CACT,kEAAkE;gBAChE,iEAAiE,CACpE,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,KAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3F,gBAAM,CAAC,IAAI,CACT,+CAA+C,UAAU,IAAI,SAAS,IAAI;YACxE,QAAQ,IAAI,CAAC,MAAM,WAAW,UAAU,aAAa,GAAG,CAAC,IAAI,UAAU,UAAU,GAAG;YACpF,cAAc,UAAU,eAAe,UAAU,GAAG;YACpD,6BAA6B,yBAAyB,GAAG;YACzD,mBAAmB,eAAe,qBAAqB,gBAAgB,EAAE,CAC5E,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,gBAAgB,CAAC,KAAU;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;CACF;AA3XD,6CA2XC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elisra-devops/docgen-data-provider",
3
- "version": "1.80.0",
3
+ "version": "1.81.0",
4
4
  "description": "A document generator data provider, aimed to retrive data from azure devops",
5
5
  "repository": {
6
6
  "type": "git",
@@ -73,18 +73,20 @@ export interface MewpL3L4Link {
73
73
  level: 'L3' | 'L4';
74
74
  }
75
75
 
76
+ export interface MewpL3L4Pair {
77
+ l3Id: string;
78
+ l3Title: string;
79
+ l4Id: string;
80
+ l4Title: string;
81
+ }
82
+
76
83
  export interface MewpCoverageBugCell {
77
84
  id: number | '';
78
85
  title: string;
79
86
  responsibility: string;
80
87
  }
81
88
 
82
- export interface MewpCoverageL3L4Cell {
83
- l3Id: string;
84
- l3Title: string;
85
- l4Id: string;
86
- l4Title: string;
87
- }
89
+ export type MewpCoverageL3L4Cell = MewpL3L4Pair;
88
90
 
89
91
  export interface MewpCoverageRow {
90
92
  'L2 REQ ID': string;
@@ -17,7 +17,7 @@ import type {
17
17
  MewpInternalValidationRow,
18
18
  MewpL2RequirementFamily,
19
19
  MewpL2RequirementWorkItem,
20
- MewpL3L4Link,
20
+ MewpL3L4Pair,
21
21
  MewpLinkedRequirementsByTestCase,
22
22
  MewpRequirementIndex,
23
23
  MewpRunStatus,
@@ -1090,37 +1090,35 @@ export default class ResultDataProvider {
1090
1090
  return { l3Id: '', l3Title: '', l4Id: '', l4Title: '' };
1091
1091
  }
1092
1092
 
1093
- private buildMewpCoverageL3L4Rows(links: MewpL3L4Link[]): MewpCoverageL3L4Cell[] {
1094
- const deduped = new Map<string, MewpL3L4Link>();
1095
- for (const item of links || []) {
1096
- const level = item?.level === 'L4' ? 'L4' : 'L3';
1097
- const id = String(item?.id || '').trim();
1098
- if (!id) continue;
1099
- const key = `${level}:${id}`;
1100
- if (!deduped.has(key)) {
1101
- deduped.set(key, {
1102
- id,
1103
- level,
1104
- title: String(item?.title || '').trim(),
1105
- });
1093
+ private buildMewpCoverageL3L4Rows(pairs: MewpL3L4Pair[]): MewpCoverageL3L4Cell[] {
1094
+ const deduped = new Map<string, MewpCoverageL3L4Cell>();
1095
+ for (const pair of pairs || []) {
1096
+ const l3Id = String(pair?.l3Id || '').trim();
1097
+ const l3Title = String(pair?.l3Title || '').trim();
1098
+ const l4Id = String(pair?.l4Id || '').trim();
1099
+ const l4Title = String(pair?.l4Title || '').trim();
1100
+ if (!l3Id && !l4Id) continue;
1101
+
1102
+ const key = `${l3Id}|${l4Id}`;
1103
+ const existing = deduped.get(key);
1104
+ if (!existing) {
1105
+ deduped.set(key, { l3Id, l3Title, l4Id, l4Title });
1106
+ continue;
1106
1107
  }
1107
- }
1108
- const sorted = [...deduped.values()].sort((a, b) => {
1109
- if (a.level !== b.level) return a.level === 'L3' ? -1 : 1;
1110
- return String(a.id || '').localeCompare(String(b.id || ''));
1111
- });
1112
1108
 
1113
- const rows: MewpCoverageL3L4Cell[] = [];
1114
- for (const item of sorted) {
1115
- const isL3 = item.level === 'L3';
1116
- rows.push({
1117
- l3Id: isL3 ? String(item?.id || '').trim() : '',
1118
- l3Title: isL3 ? String(item?.title || '').trim() : '',
1119
- l4Id: isL3 ? '' : String(item?.id || '').trim(),
1120
- l4Title: isL3 ? '' : String(item?.title || '').trim(),
1109
+ deduped.set(key, {
1110
+ l3Id: existing.l3Id || l3Id,
1111
+ l3Title: existing.l3Title || l3Title,
1112
+ l4Id: existing.l4Id || l4Id,
1113
+ l4Title: existing.l4Title || l4Title,
1121
1114
  });
1122
1115
  }
1123
- return rows;
1116
+
1117
+ return [...deduped.values()].sort((a, b) => {
1118
+ const l3Compare = String(a?.l3Id || '').localeCompare(String(b?.l3Id || ''));
1119
+ if (l3Compare !== 0) return l3Compare;
1120
+ return String(a?.l4Id || '').localeCompare(String(b?.l4Id || ''));
1121
+ });
1124
1122
  }
1125
1123
 
1126
1124
  private buildMewpCoverageRows(
@@ -1128,7 +1126,7 @@ export default class ResultDataProvider {
1128
1126
  requirementIndex: MewpRequirementIndex,
1129
1127
  observedTestCaseIdsByRequirement: Map<string, Set<number>>,
1130
1128
  linkedRequirementsByTestCase: MewpLinkedRequirementsByTestCase,
1131
- l3l4ByBaseKey: Map<string, MewpL3L4Link[]>,
1129
+ l3l4ByBaseKey: Map<string, MewpL3L4Pair[]>,
1132
1130
  externalBugsByTestCase: Map<number, MewpBugLink[]>,
1133
1131
  externalJoinKeysByL2?: Map<string, Set<string>>
1134
1132
  ): MewpCoverageRow[] {
@@ -1194,42 +1192,20 @@ export default class ResultDataProvider {
1194
1192
  : [];
1195
1193
  const l3l4ForRows = [...externalJoinKeys].flatMap((joinKey) => l3l4ByBaseKey.get(joinKey) || []);
1196
1194
 
1197
- const bugRows: MewpCoverageBugCell[] =
1198
- bugsForRows.length > 0
1199
- ? bugsForRows
1200
- : [];
1195
+ const bugRows: MewpCoverageBugCell[] = bugsForRows.map((bug) => ({
1196
+ id: Number.isFinite(Number(bug?.id)) && Number(bug?.id) > 0 ? Number(bug?.id) : '',
1197
+ title: String(bug?.title || '').trim(),
1198
+ responsibility: String(bug?.responsibility || '').trim(),
1199
+ }));
1201
1200
  const l3l4Rows: MewpCoverageL3L4Cell[] = this.buildMewpCoverageL3L4Rows(l3l4ForRows);
1202
-
1203
- if (bugRows.length === 0 && l3l4Rows.length === 0) {
1204
- rows.push(
1205
- this.createMewpCoverageRow(
1206
- requirement,
1207
- runStatus,
1208
- this.createEmptyMewpCoverageBugCell(),
1209
- this.createEmptyMewpCoverageL3L4Cell()
1210
- )
1211
- );
1212
- continue;
1213
- }
1214
-
1215
- for (const bug of bugRows) {
1216
- rows.push(
1217
- this.createMewpCoverageRow(
1218
- requirement,
1219
- runStatus,
1220
- bug,
1221
- this.createEmptyMewpCoverageL3L4Cell()
1222
- )
1223
- );
1224
- }
1225
-
1226
- for (const linkedL3L4 of l3l4Rows) {
1201
+ const rowCount = Math.max(bugRows.length, l3l4Rows.length, 1);
1202
+ for (let index = 0; index < rowCount; index += 1) {
1227
1203
  rows.push(
1228
1204
  this.createMewpCoverageRow(
1229
1205
  requirement,
1230
1206
  runStatus,
1231
- this.createEmptyMewpCoverageBugCell(),
1232
- linkedL3L4
1207
+ bugRows[index] || this.createEmptyMewpCoverageBugCell(),
1208
+ l3l4Rows[index] || this.createEmptyMewpCoverageL3L4Cell()
1233
1209
  )
1234
1210
  );
1235
1211
  }
@@ -1420,7 +1396,7 @@ export default class ResultDataProvider {
1420
1396
  private async loadExternalL3L4ByBaseKey(
1421
1397
  externalL3L4File: MewpExternalFileRef | null | undefined,
1422
1398
  requirementSapWbsByBaseKey: Map<string, string> = new Map<string, string>()
1423
- ): Promise<Map<string, MewpL3L4Link[]>> {
1399
+ ): Promise<Map<string, MewpL3L4Pair[]>> {
1424
1400
  return this.mewpExternalIngestionUtils.loadExternalL3L4ByBaseKey(externalL3L4File, {
1425
1401
  toComparableText: (value) => this.toMewpComparableText(value),
1426
1402
  toRequirementKey: (value) => this.toRequirementKey(value),
@@ -1341,7 +1341,7 @@ describe('ResultDataProvider', () => {
1341
1341
  expect(il).toBe('IL');
1342
1342
  });
1343
1343
 
1344
- it('should emit additive rows for bugs and L3/L4 links without bug duplication', () => {
1344
+ it('should zip bug rows with L3/L4 pairs and avoid cross-product duplication', () => {
1345
1345
  const requirements = [
1346
1346
  {
1347
1347
  requirementId: 'SR5303',
@@ -1398,8 +1398,7 @@ describe('ResultDataProvider', () => {
1398
1398
  [
1399
1399
  'SR5303',
1400
1400
  [
1401
- { id: '9003', title: 'L3 9003', level: 'L3' as const },
1402
- { id: '9103', title: 'L4 9103', level: 'L4' as const },
1401
+ { l3Id: '9003', l3Title: 'L3 9003', l4Id: '9103', l4Title: 'L4 9103' },
1403
1402
  ],
1404
1403
  ],
1405
1404
  ]);
@@ -1413,18 +1412,18 @@ describe('ResultDataProvider', () => {
1413
1412
  externalBugsByTestCase
1414
1413
  );
1415
1414
 
1416
- expect(rows).toHaveLength(4);
1417
- expect(rows.map((row: any) => row['Bug ID'])).toEqual([10003, 20003, '', '']);
1418
- expect(rows[2]).toEqual(
1415
+ expect(rows).toHaveLength(2);
1416
+ expect(rows.map((row: any) => row['Bug ID'])).toEqual([10003, 20003]);
1417
+ expect(rows[0]).toEqual(
1419
1418
  expect.objectContaining({
1420
1419
  'L3 REQ ID': '9003',
1421
- 'L4 REQ ID': '',
1420
+ 'L4 REQ ID': '9103',
1422
1421
  })
1423
1422
  );
1424
- expect(rows[3]).toEqual(
1423
+ expect(rows[1]).toEqual(
1425
1424
  expect.objectContaining({
1426
1425
  'L3 REQ ID': '',
1427
- 'L4 REQ ID': '9103',
1426
+ 'L4 REQ ID': '',
1428
1427
  })
1429
1428
  );
1430
1429
  });
@@ -2561,8 +2560,29 @@ describe('ResultDataProvider', () => {
2561
2560
 
2562
2561
  const map = await (resultDataProvider as any).loadExternalL3L4ByBaseKey(validL3L4Source);
2563
2562
  expect(map.get('SR0001')).toEqual([
2564
- { id: '7002', title: 'L3 Requirement', level: 'L3' },
2565
- { id: '7001', title: 'L4 From Level3 Column', level: 'L4' },
2563
+ { l3Id: '', l3Title: '', l4Id: '7001', l4Title: 'L4 From Level3 Column' },
2564
+ { l3Id: '7002', l3Title: 'L3 Requirement', l4Id: '', l4Title: '' },
2565
+ ]);
2566
+ });
2567
+
2568
+ it('should emit paired L3+L4 when AREA 34 is Level 4 and both level columns are present', async () => {
2569
+ const mewpExternalTableUtils = (resultDataProvider as any).mewpExternalTableUtils;
2570
+ jest.spyOn(mewpExternalTableUtils, 'loadExternalTableRows').mockResolvedValueOnce([
2571
+ {
2572
+ SR: 'SR0001',
2573
+ 'AREA 34': 'Level 4',
2574
+ 'TargetWorkItemId Level 3': '7401',
2575
+ TargetTitleLevel3: 'L3 In Level4 Row',
2576
+ 'TargetStateLevel 3': 'Active',
2577
+ 'TargetWorkItemIdLevel 4': '8401',
2578
+ TargetTitleLevel4: 'L4 In Level4 Row',
2579
+ 'TargetStateLevel 4': 'Active',
2580
+ },
2581
+ ]);
2582
+
2583
+ const map = await (resultDataProvider as any).loadExternalL3L4ByBaseKey(validL3L4Source);
2584
+ expect(map.get('SR0001')).toEqual([
2585
+ { l3Id: '7401', l3Title: 'L3 In Level4 Row', l4Id: '8401', l4Title: 'L4 In Level4 Row' },
2566
2586
  ]);
2567
2587
  });
2568
2588
 
@@ -2593,8 +2613,8 @@ describe('ResultDataProvider', () => {
2593
2613
 
2594
2614
  const map = await (resultDataProvider as any).loadExternalL3L4ByBaseKey(validL3L4Source);
2595
2615
  expect(map.get('SR0001')).toEqual([
2596
- { id: '7102', title: 'L3 IL', level: 'L3' },
2597
- { id: '7201', title: 'L4 IL', level: 'L4' },
2616
+ { l3Id: '', l3Title: '', l4Id: '7201', l4Title: 'L4 IL' },
2617
+ { l3Id: '7102', l3Title: 'L3 IL', l4Id: '', l4Title: '' },
2598
2618
  ]);
2599
2619
  });
2600
2620
 
@@ -2628,7 +2648,9 @@ describe('ResultDataProvider', () => {
2628
2648
  );
2629
2649
 
2630
2650
  expect(map.has('SR0001')).toBe(false);
2631
- expect(map.get('SR0002')).toEqual([{ id: '7302', title: 'L3 From IL Requirement', level: 'L3' }]);
2651
+ expect(map.get('SR0002')).toEqual([
2652
+ { l3Id: '7302', l3Title: 'L3 From IL Requirement', l4Id: '', l4Title: '' },
2653
+ ]);
2632
2654
  });
2633
2655
 
2634
2656
  it('should resolve bug responsibility from AreaPath when SAPWBS is empty', () => {