import { type UseCaseRow, type CorpusOverview, licenseTierBadgeClass, commercialBadgeClass, groupUseCases, } from './_helpers' const BACKEND_URL = process.env.COMPLIANCE_BACKEND_URL || 'http://backend-compliance:8002' export const dynamic = 'force-dynamic' async function getData(): Promise<{ useCases: UseCaseRow[] corpus: CorpusOverview | null }> { try { const [ucRes, corpusRes] = await Promise.all([ fetch(`${BACKEND_URL}/api/compliance/v1/controls/use-cases`, { cache: 'no-store', }), fetch(`${BACKEND_URL}/api/compliance/v1/controls/corpus`, { cache: 'no-store', }), ]) return { useCases: ucRes.ok ? await ucRes.json() : [], corpus: corpusRes.ok ? await corpusRes.json() : null, } } catch { return { useCases: [], corpus: null } } } function Stat({ label, value }: { label: string; value: string | number }) { return (
Alle ableitbaren Use Cases und alle Quell-Dokumente im Korpus inkl. Lizenz — damit kein Thema und keine Quelle vergessen wird.
| Use Case | Key | relevant | klassifiziert | Quellen |
|---|---|---|---|---|
| {u.label} | {u.key} | {u.atom_relevant.toLocaleString('de-DE')} | {u.atom_total.toLocaleString('de-DE')} | {u.regulations.slice(0, 4).join(', ')} |
Quell-Regulierung × Lizenz-Tier × Anzahl Pflichten × gemappter Use Case.
| Dokument / Quelle | Lizenz | Pflichten | Use Case |
|---|---|---|---|
| {d.source_regulation} | Tier {d.license_rule ?? '?'} | {d.atom_count.toLocaleString('de-DE')} | {d.use_case ?? — ungemappt} |
Detaillierte Nutzungsrechte je kuratierter Quelle (kommerzielle Nutzung, Auslieferung im Produkt).
| Quelle | Herausgeber | Lizenz | kommerziell | im Produkt |
|---|---|---|---|---|
| {c.terms_url ? ( {c.title} ) : ( c.title )} | {c.publisher ?? '—'} | {c.license_name ?? c.license_id ?? '—'} | {c.commercial_use ?? 'unbekannt'} | {c.ship_in_product ? 'ja' : 'nein'} |