save progress
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# Sprint Completion Summary - 2026-01-03
|
||||
|
||||
## SPRINT_20260103_001_FE - Filter Presets & Patch Map Explorer
|
||||
|
||||
**Status:** ✅ COMPLETE (All 11 tasks)
|
||||
|
||||
### Overview
|
||||
Implemented two UX polish features for the vulnerability explorer:
|
||||
1. **Filter Preset Pills** - Always-visible filter chips with URL synchronization for shareable filter states
|
||||
2. **Patch Map Explorer** - Interactive heatmap showing vendor backport coverage across fleet
|
||||
|
||||
### Key Deliverables
|
||||
|
||||
#### Filter Presets (4 tasks)
|
||||
- Extended `TriageFilters` with noise-gating fields (runtimeExecuted, environment, backportProved, semverMismatch)
|
||||
- Created 7 standard presets: actionable, prod-runtime, backport-verified, critical-only, needs-review, vex-applied, all-findings
|
||||
- `FilterUrlSyncService` for bidirectional URL synchronization
|
||||
- `FilterPresetPillsComponent` with horizontal scrolling and copy URL
|
||||
|
||||
#### Patch Coverage Backend (3 tasks)
|
||||
- Added 3 interface methods to `IDeltaSignatureRepository`
|
||||
- Implemented PostgreSQL aggregation queries with CTEs
|
||||
- Created `PatchCoverageController` with 3 REST endpoints:
|
||||
- `GET /api/v1/stats/patch-coverage` - Aggregated coverage by CVE
|
||||
- `GET /api/v1/stats/patch-coverage/{cveId}/details` - Function-level breakdown
|
||||
- `GET /api/v1/stats/patch-coverage/{cveId}/matches` - Paginated affected images
|
||||
|
||||
#### Patch Map Frontend (4 tasks)
|
||||
- Created `patch-coverage.models.ts` and `patch-coverage.client.ts`
|
||||
- Created `PatchMapComponent` with heatmap, details, and matches views
|
||||
- Added route `/analyze/patch-map` and navigation entry
|
||||
- Linked from `binary-evidence-panel` header
|
||||
|
||||
### Files Created
|
||||
| Location | Files |
|
||||
|----------|-------|
|
||||
| Frontend | `filter-preset.models.ts`, `filter-preset-pills.component.ts`, `filter-url-sync.service.ts`, `patch-coverage.models.ts`, `patch-coverage.client.ts`, `patch-map.component.ts` |
|
||||
| Backend | `PatchCoverageController.cs` |
|
||||
|
||||
### Files Modified
|
||||
| File | Change |
|
||||
|------|--------|
|
||||
| `evidence-subgraph.models.ts` | Added noise-gating fields |
|
||||
| `app.routes.ts` | Added patch-map route |
|
||||
| `navigation.config.ts` | Added Patch Map nav entry |
|
||||
| `binary-evidence-panel.component.ts` | Added Patch Map link |
|
||||
| `IDeltaSignatureRepository.cs` | Added 3 methods + 6 DTOs |
|
||||
| `DeltaSignatureRepository.cs` | Implemented aggregation queries |
|
||||
| `BinaryIndex.WebService.csproj` | Added Persistence project reference |
|
||||
|
||||
### Decisions
|
||||
- CSS Grid for heatmap (accessibility compliance)
|
||||
- Severity-based color coding (critical=red, high=orange, medium=yellow, low=blue, safe=green)
|
||||
|
||||
### Build Status
|
||||
- Backend: ✅ Builds successfully (0 errors)
|
||||
- Frontend: ⚠️ Pre-existing errors in other components (not sprint-related)
|
||||
Reference in New Issue
Block a user