Files
breakpilot-compliance/admin-compliance
Benjamin Admin dfac940272 feat(licenses): attribution renderer — Stufe 1 (overview) + Stufe 3 (SourceBadge)
Backend
- backend-compliance/compliance/api/licenses_routes.py: three endpoints
  built on the now-complete license_rule classification
  - GET  /api/compliance/licenses/overview
       global aggregation by rule + per-source breakdown (Stufe 1)
  - POST /api/compliance/licenses/aggregate
       per-control-set aggregation for PDF footer (Stufe 2) and
       tech-file appendix (Stufe 4) — consumed later
  - GET  /api/compliance/licenses/source-info/{control_uuid}
       single-control lookup for the inline source badge (Stufe 3)
- registered in api/__init__.py via the existing safe-import loader

Frontend
- app/sdk/licenses/page.tsx (Stufe 1): the /sdk/licenses overview page.
  Renders rule legend cards + per-rule source tables. Drives the
  /licenses footer link and gives auditors a one-page view of what
  licence classes the platform is operating under.
- components/sdk/SourceBadge.tsx (Stufe 3): reusable React component.
  Small R1/R2/R3 pill with click-expand tooltip showing source
  regulation + attribution string + render-full-text policy. Will be
  embedded into IACE hazards/mitigations, VVT items, DSFA controls in
  follow-up commits.

Two stages of the four-stage renderer are now ready. Stufe 2 (PDF
auto-footer) + Stufe 4 (tech-file appendix) follow once the existing
PDF generators are extended to call /licenses/aggregate.
2026-05-21 21:00:10 +02:00
..

admin-compliance

Next.js 15 dashboard for BreakPilot Compliance — SDK module UI, company profile, DSR, DSFA, VVT, TOM, consent, AI Act, training, audit, change requests, etc. Also hosts 96+ API routes that proxy/orchestrate backend services.

Port: 3007 (container: bp-compliance-admin) Stack: Next.js 15 App Router, React 18, TailwindCSS, TypeScript strict.

Architecture (Phase 3 — in progress)

app/
├── <route>/
│   ├── page.tsx              # Server Component (≤200 LOC)
│   ├── _components/          # Colocated UI, each ≤300 LOC
│   ├── _hooks/               # Client hooks
│   └── _server/              # Server actions
├── api/<domain>/route.ts     # Thin handlers → lib/server/<domain>/
lib/
├── <domain>/                 # Pure helpers, zod schemas
└── server/<domain>/          # "server-only" logic
components/                   # App-wide shared UI

See ../AGENTS.typescript.md.

Run locally

cd admin-compliance
npm install
npm run dev          # http://localhost:3007

Tests

npm test                      # Vitest unit + component tests
npx playwright test           # E2E
npx tsc --noEmit              # Type-check
npx next lint

Known debt

  • lib/sdk/types.ts has been split: it is now a barrel re-export to lib/sdk/types/ (12 domain files: enums, company-profile, sdk-steps, and others).
  • lib/sdk/tom-generator/controls/loader.ts has been split: it is now a barrel re-export to categories/ (8 category files).
  • Phase 3 refactoring is ongoing — several large page files remain and are being addressed incrementally.
  • 0 test files for the page layer. Adding Playwright smoke + Vitest unit coverage is ongoing Phase 3 work.

Don't touch

  • Backend API paths without updating backend-compliance/ in the same change.
  • lib/sdk/types/ barrel re-exports — add new types to the appropriate domain file, not back into the root.