Aggregated mode sent provider filters with no scan/date to /findings, which
the API rejects with 400, so requirement findings always rendered empty. Use
/findings/latest in aggregated mode (needs neither; scopes to the latest scan
per matching provider) and keep /findings for single-scan mode.
Also tidies the provider-filter helpers (review nits):
- Derive the filter keys/type from a FILTER_FIELD subset const
- Accept ReadonlyURLSearchParams so call sites drop the search-params wrap
Adds a regression test covering both aggregated and single-scan modes.
- Detail page resolves requirements/metadata across provider filters when
present; per-scan affordances (PDF, scan header, ThreatScore) degrade
- Requirement findings scope by provider filters instead of a single scan
in aggregated mode
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Mount provider type/account and provider group selectors in the
compliance filter bar; selecting a scan or provider filter clears the
other (XOR)
- Aggregate frameworks across the latest scan per matching provider;
hide the ThreatScore badge while provider filters are active
- Hide the per-scan CIS PDF and carry provider filters into the
card drill-down in aggregated mode
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- buildComplianceDetailPath carries provider filters instead of scanId
in aggregated mode, preserving the scan vs provider XOR on drill-down
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- getCompliancesOverview and getComplianceRequirements forward provider
filters and drop scan_id when present (backend XOR)
- getComplianceRequirements now accepts an optional scanId
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Detect and extract the provider-scope filter keys from search params
- Single source of truth for the scan vs provider-filter XOR
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add FILTER_FIELD field-name source and a generic FilterParam<Field> template
- Replace the FilterType enum with the same const dictionary
- Add per-view filter param types co-located with each view's action
- Tighten findings/resources filter maps and the findings display fn to their params
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Add the provider group selector to the Providers page filters
- Mock getAllProviderGroups in the providers page data tests
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Add the provider group selector to the Overview filters
- Scope risk plot, risk pipeline, and severity-over-time to the selected group
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Add getAllProviderGroups to fetch every group for filter dropdowns
- Add reusable ProviderGroupSelector with batch and instant modes
- Add provider group chip/label resolution and the provider_groups filter param
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>