fix(mc-browser): scope fallback + severity/domain filters

- Add scope/risk_score/implementation_effort fallbacks to prevent
  'undefined is not an object' crash in ControlDetail
- Add severity filter (high/medium/low based on total_controls)
- Add domain filter (L1 token prefix match)
- Fix sort options (source → canonical_name)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-05-11 23:13:22 +02:00
parent 397de741c1
commit 7ca3624a1f
2 changed files with 35 additions and 3 deletions
@@ -35,11 +35,22 @@ export default function MasterControlsPage() {
)
}
// DETAIL mode
// DETAIL mode — add fallback fields that ControlDetail expects
if (state.mode === 'detail' && state.selectedControl) {
const safeCtrl = {
...state.selectedControl,
scope: state.selectedControl.scope || { platforms: [], components: [], data_classes: [] },
target_audience: state.selectedControl.target_audience || [],
requirements: state.selectedControl.requirements || [],
test_procedure: state.selectedControl.test_procedure || [],
evidence: state.selectedControl.evidence || [],
open_anchors: state.selectedControl.open_anchors || [],
risk_score: state.selectedControl.risk_score || null,
implementation_effort: state.selectedControl.implementation_effort || null,
}
return (
<ControlDetail
ctrl={state.selectedControl}
ctrl={safeCtrl}
onBack={() => { state.setMode('list'); state.setSelectedControl(null) }}
onEdit={() => {}}
onDelete={async () => {}}