feat: Katalogverwaltung ins Compliance SDK integriert (17 Kataloge)
All checks were successful
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-ai-compliance (push) Successful in 36s
CI / test-python-backend-compliance (push) Successful in 41s
CI / test-python-document-crawler (push) Successful in 23s
CI / test-python-dsms-gateway (push) Successful in 18s

Bestehende Catalog-Manager-Komponenten in SDK-Routes eingebunden:
- SDKState + Reducer um customCatalogs CRUD erweitert
- Neue Route /sdk/catalog-manager mit CatalogManagerContent
- Sidebar-Link "Kataloge" mit Database-Icon

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-03-04 14:27:20 +01:00
parent b9ac4fbb75
commit c1a1ce8b71
4 changed files with 65 additions and 0 deletions

View File

@@ -113,6 +113,9 @@ const initialState: SDKState = {
securityIssues: [],
securityBacklog: [],
// Catalog Manager
customCatalogs: {},
// UI State
commandBarHistory: [],
recentSearches: [],
@@ -433,6 +436,41 @@ function sdkReducer(state: SDKState, action: ExtendedSDKAction): SDKState {
preferences: { ...state.preferences, ...action.payload },
})
case 'ADD_CUSTOM_CATALOG_ENTRY': {
const entry = action.payload
const existing = state.customCatalogs[entry.catalogId] || []
return updateState({
customCatalogs: {
...state.customCatalogs,
[entry.catalogId]: [...existing, entry],
},
})
}
case 'UPDATE_CUSTOM_CATALOG_ENTRY': {
const { catalogId, entryId, data } = action.payload
const entries = state.customCatalogs[catalogId] || []
return updateState({
customCatalogs: {
...state.customCatalogs,
[catalogId]: entries.map(e =>
e.id === entryId ? { ...e, data: { ...e.data, ...data }, updatedAt: new Date().toISOString() } : e
),
},
})
}
case 'DELETE_CUSTOM_CATALOG_ENTRY': {
const { catalogId, entryId } = action.payload
const items = state.customCatalogs[catalogId] || []
return updateState({
customCatalogs: {
...state.customCatalogs,
[catalogId]: items.filter(e => e.id !== entryId),
},
})
}
case 'RESET_STATE':
return { ...initialState, lastModified: new Date() }