fix: match both milestoneId and sliceId when filtering duplicate blocker cards

The high-risk card filter in buildBlockersSection only compared sliceId,
causing false positives when different milestones had slices with the
same ID (e.g. M001/S01 and M002/S01). Now matches on both milestoneId
and sliceId to correctly deduplicate.
This commit is contained in:
Jeremy McSpadden 2026-03-17 23:19:42 -05:00
parent c1bc65bcca
commit 2d8fdcc0ab

View file

@ -241,7 +241,7 @@ function buildBlockersSection(data: VisualizerData): string {
</div>`).join('');
const riskCards = highRisk
.filter(hr => !blockers.some(b => b.sliceId === hr.slId))
.filter(hr => !blockers.some(b => b.milestoneId === hr.msId && b.sliceId === hr.slId))
.map(hr => `
<div class="blocker-card">
<div class="blocker-id">${esc(hr.msId)}/${esc(hr.slId)}</div>