fix(FEAT-009-FIX-002): correct MilestoneValidationRollup field names and tooltip

The dashboard used incorrect field names (passedCount/failedCount/blockedCount/pendingCount)
that don't exist on the type. The backend returns passedAssertions/failedAssertions etc.
Fixed MissionManager.tsx to use correct field names with ?? 0 fallback for tooltip text.
This commit is contained in:
gsxdsm
2026-04-12 10:12:45 -07:00
parent 5815a0e820
commit d71c0bbdcf
3 changed files with 14 additions and 14 deletions

View File

@@ -3594,10 +3594,10 @@ export function fetchFeaturesForAssertion(assertionId: string, projectId?: strin
export interface MilestoneValidationRollup {
milestoneId: string;
totalAssertions: number;
passedCount: number;
failedCount: number;
blockedCount: number;
pendingCount: number;
passedAssertions: number;
failedAssertions: number;
blockedAssertions: number;
pendingAssertions: number;
state: "not_started" | "needs_coverage" | "ready" | "passed" | "failed" | "blocked";
}

View File

@@ -2012,13 +2012,13 @@ export function MissionManager({ isOpen, isInline = false, onClose, addToast, pr
{validationRollupByMilestone.get(milestone.id)!.totalAssertions > 0 && (
<div
className="mission-milestone__coverage-bar"
title={`${validationRollupByMilestone.get(milestone.id)!.passedCount} of ${validationRollupByMilestone.get(milestone.id)!.totalAssertions} assertions passing`}
title={`${(validationRollupByMilestone.get(milestone.id)!.passedAssertions ?? 0)} of ${validationRollupByMilestone.get(milestone.id)!.totalAssertions} assertions passing`}
>
<div
className="mission-milestone__coverage-bar-fill"
style={{
width: `${(validationRollupByMilestone.get(milestone.id)!.passedCount / validationRollupByMilestone.get(milestone.id)!.totalAssertions) * 100}%`,
backgroundColor: validationRollupByMilestone.get(milestone.id)!.passedCount === validationRollupByMilestone.get(milestone.id)!.totalAssertions
width: `${((validationRollupByMilestone.get(milestone.id)!.passedAssertions ?? 0) / validationRollupByMilestone.get(milestone.id)!.totalAssertions) * 100}%`,
backgroundColor: (validationRollupByMilestone.get(milestone.id)!.passedAssertions ?? 0) === validationRollupByMilestone.get(milestone.id)!.totalAssertions
? "var(--color-success)"
: "var(--color-warning)",
}}
@@ -2636,12 +2636,12 @@ export function MissionManager({ isOpen, isInline = false, onClose, addToast, pr
)}
{/* Assertion coverage bar */}
{validationRollupByMilestone.get(milestone.id) && validationRollupByMilestone.get(milestone.id)!.totalAssertions > 0 && (
<div className="mission-assertions__coverage-bar" title={`${validationRollupByMilestone.get(milestone.id)!.passedCount} of ${validationRollupByMilestone.get(milestone.id)!.totalAssertions} assertions passing`}>
<div className="mission-assertions__coverage-bar" title={`${(validationRollupByMilestone.get(milestone.id)!.passedAssertions ?? 0)} of ${validationRollupByMilestone.get(milestone.id)!.totalAssertions} assertions passing`}>
<div
className="mission-assertions__coverage-bar-fill"
style={{
width: `${(validationRollupByMilestone.get(milestone.id)!.passedCount / validationRollupByMilestone.get(milestone.id)!.totalAssertions) * 100}%`,
backgroundColor: validationRollupByMilestone.get(milestone.id)!.passedCount === validationRollupByMilestone.get(milestone.id)!.totalAssertions
width: `${((validationRollupByMilestone.get(milestone.id)!.passedAssertions ?? 0) / validationRollupByMilestone.get(milestone.id)!.totalAssertions) * 100}%`,
backgroundColor: (validationRollupByMilestone.get(milestone.id)!.passedAssertions ?? 0) === validationRollupByMilestone.get(milestone.id)!.totalAssertions
? "var(--color-success)"
: "var(--color-warning)",
}}

View File

@@ -113,10 +113,10 @@ export interface FeatureAssertionLink {
export interface MilestoneValidationRollup {
milestoneId: string;
totalAssertions: number;
passedCount: number;
failedCount: number;
blockedCount: number;
pendingCount: number;
passedAssertions: number;
failedAssertions: number;
blockedAssertions: number;
pendingAssertions: number;
state: MilestoneValidationState;
}