feat(cra): kuratierte Maßnahmen-Bibliothek — alle 40 CRA-Anforderungen belegt
- data/measures_curated.json: 24 deduplizierte, standard-gestützte Maßnahmen (9 bestehende M540-548 + 15 neue M600-614), Volltext + norm_refs + multi-reg covers. Deckt alle 40 CRA-AI-x (vorher nur 17). - cra_annex_i_data lädt die Bibliothek defensiv: MEASURES=Superset, MEASURE_DETAILS (Volltext), mapped_measures aus covers abgeleitet. Fallback = hartkodierte 9. - Mapper: open_measures tragen jetzt name+description+norm_refs (echte Volltexte). - useCRA: merge nutzt Backend-Volltexte statt Demo-Lookup. - Tests: Coverage (40/40) + Volltext im Assessment. Quelle: extern handkuratiert/recherchiert, hier dedupliziert + gemappt. Maschinen- VO/NIS2/IEC-Maßnahmen folgen, sobald deren Spine existiert. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -67,10 +67,12 @@ function merge(live: any): CRADemo {
|
||||
} as CRAFinding
|
||||
})
|
||||
|
||||
const open_measures: Measure[] = (live.open_measures || []).map((om: any) => {
|
||||
const detail = DEMO_SCENARIO.open_measures.find((d) => d.id === om.id)
|
||||
return detail || { id: om.id, name: om.id, description: om.description || '', norm_refs: [] }
|
||||
})
|
||||
const open_measures: Measure[] = (live.open_measures || []).map((om: any) => ({
|
||||
id: om.id,
|
||||
name: om.name || DEMO_SCENARIO.open_measures.find((d) => d.id === om.id)?.name || om.id,
|
||||
description: om.description || '',
|
||||
norm_refs: om.norm_refs || [],
|
||||
}))
|
||||
|
||||
return {
|
||||
scenario: DEMO_SCENARIO.scenario,
|
||||
|
||||
Reference in New Issue
Block a user