Skip to content

feat(remediations): Remediations page — resolve a solution family in one action (RFC-015 Phase 2) - #231

Merged
0xmanhnv merged 1 commit into
developfrom
feat/remediation-groups-ui
Jul 10, 2026
Merged

feat(remediations): Remediations page — resolve a solution family in one action (RFC-015 Phase 2)#231
0xmanhnv merged 1 commit into
developfrom
feat/remediation-groups-ui

Conversation

@0xmanhnv

Copy link
Copy Markdown
Contributor

Summary

Frontend for the remediation-groups backend (api #288). A single patch that fixes many findings (Tenable's "solution" family, an SCA upgrade) can now be resolved in one click instead of done-ing each finding.

What it adds

  • /remediations page (under Mobilization): a table of remediation groups — the fix (title), findings + assets counts, and a severity breakdown (reusing the shared SeverityBadge), with a per-row Resolve all button gated by findings:remediation:write.
  • ResolveGroupDialog: choose the outcome — Fix applied (default; pending rescan verification) or Resolved (close now) — an optional note, and a confirm checkbox for very large bulks (mirrors the backend abuse-guard ceiling).
  • src/features/remediation-groups/: types + SWR hooks (useRemediationGroups, useResolveRemediationGroup) hitting /api/v1/findings/remediation-groups.
  • Sidebar entry + route-permission entries.

Conventions

Reuses shared primitives (PageHeader, DataTable, SeverityBadge) and the CSRF-safe API client — no hand-rolled severity color map, no new permission. Memoized columns (React Compiler off). Default outcome fix_applied so the existing auto-resolve confirms the fix on the next scan.

Tests

Hook URL construction incl. key URL-encoding (vitest). type-check + lint clean; next build green (/remediations route registered).

Backend: api #288 (RFC-015 Phase 1). This is Phase 2.

…one action (RFC-015 Phase 2)

Frontend for the backend remediation-groups API (api#288). A single patch that
fixes many findings can now be resolved in one click instead of closing each
finding.

- src/features/remediation-groups/: types, SWR hooks (useRemediationGroups +
  useResolveRemediationGroup), and the ResolveGroupDialog (outcome fix_applied
  default / resolved, optional note, large-bulk confirm).
- /remediations page: DataTable of groups (fix title, finding/asset counts,
  severity breakdown reusing the shared SeverityBadge), per-row 'Resolve all'
  gated by findings:remediation:write.
- Sidebar entry under Mobilization + route-permission entries.

Reuses shared primitives (PageHeader, DataTable, SeverityBadge) and the API
client (CSRF-safe post). Default outcome fix_applied → the next rescan verifies.

Tests: hook URL construction (incl. key URL-encoding). type-check + lint clean;
next build green (/remediations route registered).
@0xmanhnv
0xmanhnv merged commit 28bd907 into develop Jul 10, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant