# Playground AI Act Integration — Sesjonplan
## Kontekst
Playground (`playground/azure-ai-playground.html`, 1850L) har allerede en `ai-act-high` checkbox i Step 1 (intake) og Step 2 (filter). Når den er valgt, vises en gul "AI Act høy-risiko" compliance-sjekk i Step 3. Men dette er bare en passiv indikator — ingen risikonivåer, ingen rollevisning, ingen utvidet eksport.
Denne sesjonen utvider Step 3 og Step 5 med AI Act-bevissthet.
## Hva som finnes i dag
| Sted | Linje | Innhold |
|------|-------|---------|
| Step 1 (intake) | L356 | `` |
| Step 2 (filter) | L455 | `` |
| Step 3 (`getComplianceStatus()`) | L1449-1451 | Gul status-badge: `{ label: 'AI Act hoy-risiko', status: 'yellow' }` |
| Step 5 (prompt) | L1639 | Compliance-krav inkluderer `ai-act-high` som tekst |
| Step 5 (JSON) | L1765 | `compliance: state.intake.compliance` (inkluderer `ai-act-high`) |
## Endring 1: Step 1 — Utvid AI Act-valg fra checkbox til dropdown
**Nå:** Én checkbox (`ai-act-high`).
**Etter:** Dropdown med 4 risikonivåer + "Ikke vurdert".
```html
```
**State-utvidelse:**
```javascript
// I state.intake (rundt L?? i init/state):
aiActLevel: '', // '', 'minimal', 'limited', 'high-risk', 'prohibited'
aiActRole: '', // '', 'deployer', 'provider', 'deployer-provider'
```
**Ny funksjon:**
```javascript
function updateAiActLevel(level) {
state.intake.aiActLevel = level;
// Synk legacy compliance-array
const idx = state.intake.compliance.indexOf('ai-act-high');
if (level === 'high-risk' || level === 'prohibited') {
if (idx === -1) state.intake.compliance.push('ai-act-high');
} else {
if (idx !== -1) state.intake.compliance.splice(idx, 1);
}
}
```
**Filter i Step 2 (L455):** Behold eksisterende `ai-act-high` filter — den fungerer allerede.
## Endring 2: Step 3 — Utvidet compliance-sjekk
**Nå:** `getComplianceStatus()` (L1410-1454) viser gul badge.
**Etter:** AI Act-sjekken blir dynamisk basert på nivå og rolle.
Erstatt L1448-1451 med:
```javascript
// AI Act
const aiLevel = state.intake.aiActLevel;
if (aiLevel === 'high-risk') {
checks.push({ label: 'AI Act: Høyrisiko (Annex III)', status: 'red' });
checks.push({ label: 'FRIA påkrevd (Art. 27)', status: 'red' });
if (!hasObservability) {
checks.push({ label: 'Logging min. 6 mnd påkrevd (Art. 12/26)', status: 'red' });
}
} else if (aiLevel === 'limited') {
checks.push({ label: 'AI Act: Begrenset risiko', status: 'yellow' });
checks.push({ label: 'Transparensplikt (Art. 50)', status: 'yellow' });
} else if (aiLevel === 'minimal') {
checks.push({ label: 'AI Act: Minimal risiko', status: 'green' });
} else if (aiLevel === 'prohibited') {
checks.push({ label: 'AI Act: FORBUDT — kan ikke brukes', status: 'red' });
} else if (state.intake.compliance.includes('ai-act-high')) {
// Legacy fallback
checks.push({ label: 'AI Act høy-risiko', status: 'yellow' });
}
```
## Endring 3: Step 3 — AI Act anbefalingspanel
Etter compliance-listen i `renderConfigure()` (L1396-1404), legg til et AI Act-panel som vises når nivå er satt:
```javascript
// Etter complianceHtml i renderConfigure()
let aiActHtml = '';
if (state.intake.aiActLevel) {
const level = state.intake.aiActLevel;
const role = state.intake.aiActRole || 'deployer';
const cmds = [];
if (level === 'high-risk') {
cmds.push({ cmd: '/architect:classify', desc: 'Bekreft klassifisering' });
cmds.push({ cmd: '/architect:frimpact', desc: 'FRIA (obligatorisk offentlig sektor)' });
cmds.push({ cmd: '/architect:dpia', desc: 'Personvernkonsekvensvurdering' });
cmds.push({ cmd: '/architect:requirements', desc: 'Konkrete Art. 9-27 krav' });
} else if (level === 'limited') {
cmds.push({ cmd: '/architect:classify', desc: 'Bekreft klassifisering' });
cmds.push({ cmd: '/architect:transparency', desc: 'Generer Art. 50 transparensnotis' });
} else if (level === 'minimal') {
cmds.push({ cmd: '/architect:classify', desc: 'Dokumenter klassifisering' });
}
aiActHtml = `
EU AI Act — Neste steg
${cmds.map(c => `
${c.cmd} — ${c.desc}
`).join('')}
${level === 'high-risk' ? '
Frist: 2. august 2026 (GPAI + Annex III)
' : ''}
`;
}
```
Inject `aiActHtml` etter compliance-listen i HTML-template.
## Endring 4: Step 5 — AI Act i alle eksportformater
### 4a. Prompt (L1615-1654)
Etter compliance-krav-linjen (L1639), legg til:
```javascript
if (state.intake.aiActLevel) {
prompt += `EU AI Act risikonivå: ${state.intake.aiActLevel}.\n`;
if (state.intake.aiActRole) prompt += `Rolle: ${state.intake.aiActRole}.\n`;
if (state.intake.aiActLevel === 'high-risk') {
prompt += 'NB: Høyrisiko — FRIA (Art. 27) og samsvarsvurdering (Art. 43) kreves.\n';
}
}
```
### 4b. Pipeline (L1657-1687)
I `generatePipelineTab()`, legg til AI Act-commands etter standard pipeline:
```javascript
// Etter pipeline.commands mapping
if (state.intake.aiActLevel === 'high-risk') {
cmds += `