Files
breakpilot-compliance/admin-compliance
Benjamin Admin b515ab0c0a
CI / detect-changes (push) Successful in 7s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / secret-scan (push) Has been skipped
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / build-sha-integrity (push) Failing after 4s
CI / validate-canonical-controls (push) Successful in 11s
CI / loc-budget (push) Failing after 13s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Successful in 2m19s
CI / test-go (push) Has been skipped
CI / test-python-backend (push) Has been skipped
CI / iace-gt-coverage (push) Has been skipped
CI / test-python-dsms-gateway (push) Has been skipped
CI / test-python-document-crawler (push) Has been skipped
feat(generator): "Generate-All" bulk mode for recommended documents
Phase 2 of the workspace-cutover initiative: the Document Generator
gets a Bulk-Generate mode that produces every recommended document
in one click instead of forcing the user through 25+ per-template
clicks.

New: BulkGenerateModal.tsx (430 LOC)
  - On open: POSTs current CompanyProfile + ComplianceScope answers
    to /api/sdk/v1/compliance/recommend (Phase 1 endpoint)
  - Matches each recommendation's document_type against allTemplates
  - Shows tabular list: classification chip, title, document_type,
    source citation; checkboxes pre-selected for required+recommended
    (only where a template exists)
  - On submit: sequentially renders each selected template using the
    same pipeline as GeneratorSection (runRuleset → applyBlockRemoval
    → applyConditionalBlocks → placeholder replace), then POSTs
    documents + version v1.0 draft
  - Per-row progress:  generiere → ✓ erstellt / ✗ Fehler / —
    übersprungen; final summary counts

page.tsx:
  - Imports BulkGenerateModal
  - Adds prominent "Empfohlene generieren →" CTA above the
    RecommendedDocuments block
  - Wires SDK state (companyProfile, complianceScope) into the modal

Profile mapper:
  - CompanyProfile (camelCase): employeeCount, businessModel,
    isDataProcessor → org_employee_count, org_business_model,
    comp_has_processors
  - ComplianceScope answers (questionId/value): pass through 1:1
    since the rule system uses the same field names as the wizard
  - compliance_depth_level pulled from decision.determinedLevel

End-to-end flow:
  1. User completes CompanyProfile + ComplianceScope
  2. Clicks "Empfohlene generieren →"
  3. Reviews 25-30 prefilled checkboxes
  4. Clicks "Generieren" — modal iterates, all docs land as drafts
     in compliance_legal_documents + version v1.0
  5. Phase 3 (next): document-library tab makes them findable
  6. Phase 4 (next-next): workspace consumes these directly

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-08 08:57:53 +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.