feat(gci): add Gesamt-Compliance-Index scoring engine and dashboard
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 34s
CI / test-python-backend-compliance (push) Successful in 28s
CI / test-python-document-crawler (push) Successful in 24s
CI / test-python-dsms-gateway (push) Successful in 17s

Implements the 4-level GCI scoring model (Module -> Risk-Weighted -> Regulation Area -> Final GCI)
with DSGVO, NIS2, ISO 27001, and EU AI Act integration.

Backend:
- 9 Go files: engine, models, weights, validity, NIS2 roles/scoring, ISO mapping/gap-analysis, mock data
- GCI handlers with 13 API endpoints under /sdk/v1/gci/
- Routes registered in main.go

Frontend:
- TypeScript types, API client, Next.js API proxy
- Dashboard page with 6 tabs (Overview, Breakdown, NIS2, ISO 27001, Matrix, Audit Trail)
- Sidebar navigation entry

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Boenisch
2026-02-15 22:20:17 +01:00
parent 2d909a8f8e
commit 7a09086930
16 changed files with 2703 additions and 0 deletions

View File

@@ -27,6 +27,7 @@ import (
"github.com/breakpilot/ai-compliance-sdk/internal/vendor"
"github.com/breakpilot/ai-compliance-sdk/internal/workshop"
"github.com/breakpilot/ai-compliance-sdk/internal/portfolio"
"github.com/breakpilot/ai-compliance-sdk/internal/gci"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
"github.com/jackc/pgx/v5/pgxpool"
@@ -124,6 +125,10 @@ func main() {
industryHandlers := handlers.NewIndustryHandlers()
dsbHandlers := handlers.NewDSBHandlers(dsbStore)
// Initialize GCI engine and handlers
gciEngine := gci.NewEngine()
gciHandlers := handlers.NewGCIHandlers(gciEngine)
// Initialize middleware
rbacMiddleware := rbac.NewMiddleware(rbacService, policyEngine)
@@ -652,6 +657,29 @@ func main() {
dsbRoutes.POST("/assignments/:id/communications", dsbHandlers.CreateCommunication)
dsbRoutes.GET("/assignments/:id/communications", dsbHandlers.ListCommunications)
}
// GCI routes - Gesamt-Compliance-Index
gciRoutes := v1.Group("/gci")
{
// Core GCI endpoints
gciRoutes.GET("/score", gciHandlers.GetScore)
gciRoutes.GET("/score/breakdown", gciHandlers.GetScoreBreakdown)
gciRoutes.GET("/score/history", gciHandlers.GetHistory)
gciRoutes.GET("/matrix", gciHandlers.GetMatrix)
gciRoutes.GET("/audit-trail", gciHandlers.GetAuditTrail)
gciRoutes.GET("/profiles", gciHandlers.GetWeightProfiles)
// NIS2 sub-routes
gciRoutes.GET("/nis2/score", gciHandlers.GetNIS2Score)
gciRoutes.GET("/nis2/roles", gciHandlers.ListNIS2Roles)
gciRoutes.POST("/nis2/roles/assign", gciHandlers.AssignNIS2Role)
// ISO 27001 sub-routes
gciRoutes.GET("/iso/gap-analysis", gciHandlers.GetISOGapAnalysis)
gciRoutes.GET("/iso/mappings", gciHandlers.ListISOMappings)
gciRoutes.GET("/iso/mappings/:controlId", gciHandlers.GetISOMapping)
}
}
// Create HTTP server