# Abiturkorrektur-System - Entwicklerdokumentation

**WICHTIG: Diese Datei wird bei jedem Compacting gelesen. Alle Implementierungsdetails hier dokumentieren!**

---

## 1. Projektziel

Entwicklung eines KI-gestützten Korrektur-Systems für Deutsch-Abiturklausuren:
- **Zielgruppe**: Lehrer in Niedersachsen (Pilot), später alle Bundesländer
- **Kernproblem**: Erstkorrektur dauert 6 Stunden pro Arbeit
- **Lösung**: KI schlägt Bewertungen vor, Lehrer bestätigt/korrigiert

---

## 2. Architektur-Übersicht

```
┌─────────────────────────────────────────────────────────────┐
│                    Frontend (Next.js)                        │
│  /website/app/admin/klausur-korrektur/                      │
│  - page.tsx (Klausur-Liste)                                 │
│  - [klausurId]/page.tsx (Studenten-Liste)                   │
│  - [klausurId]/[studentId]/page.tsx (Korrektur-Workspace)   │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                 klausur-service (FastAPI)                    │
│  Port 8086 - /klausur-service/backend/main.py               │
│  - Klausur CRUD (/api/v1/klausuren)                         │
│  - Student Work (/api/v1/students)                          │
│  - Annotations (/api/v1/annotations) [NEU]                  │
│  - Gutachten Generation                                     │
│  - Fairness Analysis                                        │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                    Infrastruktur                             │
│  - Qdrant (Vektor-DB für RAG)                               │
│  - MinIO (Datei-Storage)                                    │
│  - PostgreSQL (Metadaten)                                   │
│  - Embedding-Service (Port 8087)                            │
└─────────────────────────────────────────────────────────────┘
```

---

## 3. Bestehende Backend-Komponenten (NUTZEN!)

### 3.1 Klausur-Service API (main.py)

```python
# Bereits implementiert:
GET/POST /api/v1/klausuren                    # Klausur CRUD
GET /api/v1/klausuren/{id}                    # Klausur Details
POST /api/v1/klausuren/{id}/students          # Student Work hochladen
GET /api/v1/klausuren/{id}/students           # Studenten-Liste
PUT /api/v1/students/{id}/criteria            # Kriterien bewerten
PUT /api/v1/students/{id}/gutachten           # Gutachten speichern
POST /api/v1/students/{id}/gutachten/generate # Gutachten generieren (KI)
GET /api/v1/klausuren/{id}/fairness           # Fairness-Analyse
GET /api/v1/grade-info                        # Notensystem-Info
```

### 3.2 Datenmodelle (main.py)

```python
@dataclass
class Klausur:
    id: str
    title: str
    subject: str = "Deutsch"
    year: int = 2025
    semester: str = "Abitur"
    modus: str = "abitur"  # oder "vorabitur"
    eh_id: Optional[str] = None  # Erwartungshorizont-Referenz

@dataclass
class StudentKlausur:
    id: str
    klausur_id: str
    anonym_id: str
    file_path: str
    ocr_text: str = ""
    criteria_scores: Dict[str, int] = field(default_factory=dict)
    gutachten: str = ""
    status: str = "UPLOADED"
    raw_points: int = 0
    grade_points: int = 0

# Status-Workflow:
# UPLOADED → OCR_PROCESSING → OCR_COMPLETE → ANALYZING →
# FIRST_EXAMINER → SECOND_EXAMINER → COMPLETED
```

### 3.3 Notensystem (15-Punkte)

```python
GRADE_THRESHOLDS = {
    15: 95, 14: 90, 13: 85, 12: 80, 11: 75,
    10: 70, 9: 65, 8: 60, 7: 55, 6: 50,
    5: 45, 4: 40, 3: 33, 2: 27, 1: 20, 0: 0
}

DEFAULT_CRITERIA = {
    "rechtschreibung": {"name": "Rechtschreibung", "weight": 15},
    "grammatik": {"name": "Grammatik", "weight": 15},
    "inhalt": {"name": "Inhalt", "weight": 40},
    "struktur": {"name": "Struktur", "weight": 15},
    "stil": {"name": "Stil", "weight": 15}
}
```

---

## 4. NEU ZU IMPLEMENTIEREN

### Phase 1: Korrektur-Workspace MVP

#### 4.1 Frontend-Struktur

```
/website/app/admin/klausur-korrektur/
├── page.tsx                         # Klausur-Übersicht (Liste aller Klausuren)
├── types.ts                         # TypeScript Interfaces
├── [klausurId]/
│   ├── page.tsx                     # Studenten-Liste einer Klausur
│   └── [studentId]/
│       └── page.tsx                 # Korrektur-Workspace (2/3-1/3)
└── components/
    ├── KlausurCard.tsx              # Klausur in Liste
    ├── StudentList.tsx              # Studenten-Übersicht
    ├── DocumentViewer.tsx           # PDF/Bild-Anzeige (links, 2/3)
    ├── AnnotationLayer.tsx          # SVG-Overlay für Markierungen
    ├── AnnotationToolbar.tsx        # Werkzeuge
    ├── CorrectionPanel.tsx          # Bewertungs-Panel (rechts, 1/3)
    ├── CriteriaScoreCard.tsx        # Einzelnes Kriterium
    ├── EHSuggestionPanel.tsx        # EH-Vorschläge via RAG
    ├── GutachtenEditor.tsx          # Gutachten bearbeiten
    └── StudentNavigation.tsx        # Prev/Next Navigation
```

#### 4.2 Annotations-Backend (NEU in main.py)

```python
# Neues Datenmodell:
@dataclass
class Annotation:
    id: str
    student_work_id: str
    page: int
    position: dict  # {x, y, width, height} in % (0-100)
    type: str       # 'rechtschreibung' | 'grammatik' | 'inhalt' | 'struktur' | 'stil' | 'comment'
    text: str       # Kommentar-Text
    severity: str   # 'minor' | 'major' | 'critical'
    suggestion: str # Korrekturvorschlag (bei RS/Gram)
    created_by: str # User-ID (EK oder ZK)
    created_at: datetime
    role: str       # 'first_examiner' | 'second_examiner'
    linked_criterion: Optional[str]  # Verknüpfung zu Kriterium

# Neue Endpoints:
POST   /api/v1/students/{id}/annotations      # Erstellen
GET    /api/v1/students/{id}/annotations      # Abrufen
PUT    /api/v1/annotations/{id}               # Ändern
DELETE /api/v1/annotations/{id}               # Löschen
```

#### 4.3 UI-Layout Spezifikation

```
┌──────────────────────────────────────────────────────────────────────┐
│ Header: Klausur-Titel | Student: Anonym-123 | [← Prev] [5/24] [Next →]│
├─────────────────────────────────────────┬────────────────────────────┤
│                                         │ Tabs: [Kriterien] [Gutachten]│
│  ┌─────────────────────────────────┐   │                              │
│  │                                 │   │ ▼ Rechtschreibung (15%)     │
│  │     Dokument-Anzeige            │   │   [====|====] 70/100        │
│  │     (PDF/Bild mit Zoom)         │   │   12 Fehler markiert        │
│  │                                 │   │                              │
│  │     + Annotation-Overlay        │   │ ▼ Grammatik (15%)           │
│  │       (SVG Layer)               │   │   [====|====] 80/100        │
│  │                                 │   │                              │
│  │                                 │   │ ▼ Inhalt (40%)              │
│  │                                 │   │   [====|====] 65/100        │
│  │                                 │   │   EH-Vorschläge: [Laden]    │
│  └─────────────────────────────────┘   │                              │
│                                         │ ▼ Struktur (15%)            │
│  Toolbar: [RS] [Gram] [Kommentar]      │   [====|====] 75/100        │
│           [Zoom+] [Zoom-] [Fit]        │                              │
│                                         │ ▼ Stil (15%)                │
│  Seiten: [1] [2] [3] [4] [5]           │   [====|====] 70/100        │
│                                         │                              │
│                                         │ ━━━━━━━━━━━━━━━━━━━━━━━━━━  │
│                                         │ Gesamtnote: 10 Punkte (2-)  │
│                                         │ [Gutachten generieren]      │
│                                         │ [Speichern] [Abschließen]   │
├─────────────────────────────────────────┴────────────────────────────┤
│ 2/3 Breite                              │ 1/3 Breite                  │
└──────────────────────────────────────────────────────────────────────┘
```

---

## 5. Implementierungs-Reihenfolge

### Phase 1.1: Grundgerüst (AKTUELL)
1. ✅ Dokumentation erstellen
2. [ ] `/website/app/admin/klausur-korrektur/page.tsx` - Klausur-Liste
3. [ ] `/website/app/admin/klausur-korrektur/types.ts` - TypeScript Types
4. [ ] Navigation in AdminLayout.tsx hinzufügen
5. [ ] Deploy + Test

### Phase 1.2: Korrektur-Workspace
1. [ ] `[klausurId]/page.tsx` - Studenten-Liste
2. [ ] `[klausurId]/[studentId]/page.tsx` - Workspace
3. [ ] `components/DocumentViewer.tsx` - Bild/PDF Anzeige
4. [ ] `components/CorrectionPanel.tsx` - Bewertungs-Panel
5. [ ] Deploy + Test mit Lehrer

### Phase 1.3: Annotations-System
1. [ ] Backend: Annotations-Endpoints in main.py
2. [ ] `components/AnnotationLayer.tsx` - SVG Overlay
3. [ ] `components/AnnotationToolbar.tsx` - Werkzeuge
4. [ ] Farbkodierung: RS=rot, Gram=blau, Inhalt=grün
5. [ ] Deploy + Test

### Phase 1.4: EH-Integration
1. [ ] `components/EHSuggestionPanel.tsx`
2. [ ] Backend: `/api/v1/students/{id}/eh-suggestions`
3. [ ] RAG-Query mit Student-Text
4. [ ] Deploy + Test

### Phase 1.5: Gutachten-Editor
1. [ ] `components/GutachtenEditor.tsx`
2. [ ] Beleg-Verlinkung zu Annotations
3. [ ] Gutachten-Generierung Button
4. [ ] Deploy + Test

---

## 6. API-Konfiguration

```typescript
// Frontend API Base URLs
const KLAUSUR_SERVICE = process.env.NEXT_PUBLIC_KLAUSUR_SERVICE_URL || 'http://localhost:8086'

// Endpoints:
// Klausuren
GET    ${KLAUSUR_SERVICE}/api/v1/klausuren
POST   ${KLAUSUR_SERVICE}/api/v1/klausuren
GET    ${KLAUSUR_SERVICE}/api/v1/klausuren/{id}
GET    ${KLAUSUR_SERVICE}/api/v1/klausuren/{id}/students

// Studenten
GET    ${KLAUSUR_SERVICE}/api/v1/students/{id}
GET    ${KLAUSUR_SERVICE}/api/v1/students/{id}/file  // Dokument-Download
PUT    ${KLAUSUR_SERVICE}/api/v1/students/{id}/criteria
PUT    ${KLAUSUR_SERVICE}/api/v1/students/{id}/gutachten
POST   ${KLAUSUR_SERVICE}/api/v1/students/{id}/gutachten/generate

// Annotations (NEU)
GET    ${KLAUSUR_SERVICE}/api/v1/students/{id}/annotations
POST   ${KLAUSUR_SERVICE}/api/v1/students/{id}/annotations
PUT    ${KLAUSUR_SERVICE}/api/v1/annotations/{id}
DELETE ${KLAUSUR_SERVICE}/api/v1/annotations/{id}

// System
GET    ${KLAUSUR_SERVICE}/api/v1/grade-info
```

---

## 7. Deployment-Prozess

```bash
# 1. Dateien auf Mac Mini synchronisieren
rsync -avz --delete \
  --exclude 'node_modules' --exclude '.next' --exclude '.git' \
  /Users/benjaminadmin/Projekte/breakpilot-pwa/website/ \
  macmini:/Users/benjaminadmin/Projekte/breakpilot-pwa/website/

# 2. Website-Container neu bauen
ssh macmini "/usr/local/bin/docker compose \
  -f /Users/benjaminadmin/Projekte/breakpilot-pwa/docker-compose.yml \
  build --no-cache website"

# 3. Container neu starten
ssh macmini "/usr/local/bin/docker compose \
  -f /Users/benjaminadmin/Projekte/breakpilot-pwa/docker-compose.yml \
  up -d website"

# 4. Testen unter:
# http://macmini:3000/admin/klausur-korrektur
```

---

## 8. Bundesland-Spezifika (Niedersachsen Pilot)

```json
// /klausur-service/backend/policies/bundeslaender.json
{
  "NI": {
    "name": "Niedersachsen",
    "grading_mode": "points_15",
    "requires_gutachten": true,
    "zk_visibility": "full",  // ZK sieht EK-Korrektur
    "third_correction_threshold": 4,  // Ab 4 Punkte Diff
    "colors": {
      "first_examiner": "#dc2626",  // Rot
      "second_examiner": "#16a34a"  // Grün
    },
    "criteria_weights": {
      "rechtschreibung": 15,
      "grammatik": 15,
      "inhalt": 40,
      "struktur": 15,
      "stil": 15
    }
  }
}
```

---

## 9. Wichtige Dateien (Referenz)

| Datei | Beschreibung |
|-------|--------------|
| `/klausur-service/backend/main.py` | Haupt-API, alle Endpoints |
| `/klausur-service/backend/eh_pipeline.py` | BYOEH Verarbeitung |
| `/klausur-service/backend/qdrant_service.py` | RAG Vector-Suche |
| `/klausur-service/backend/hybrid_search.py` | Hybrid Search |
| `/website/components/admin/AdminLayout.tsx` | Admin Navigation |
| `/website/app/admin/ocr-labeling/page.tsx` | Referenz für 2/3-1/3 Layout |

---

## 10. Testing-Checkliste

### Nach jeder Phase:
- [ ] Seite lädt ohne Fehler
- [ ] API-Calls funktionieren (DevTools Network)
- [ ] Responsives Layout korrekt
- [ ] Lehrer kann Workflow durchführen

### Lehrer-Test-Szenarien:
1. Klausur erstellen
2. 3+ Studentenarbeiten hochladen
3. Erste Arbeit korrigieren (alle Kriterien)
4. Annotations setzen
5. Gutachten generieren
6. Zur nächsten Arbeit navigieren
7. Fairness-Check nach allen Arbeiten

---

## 11. Phase 2: Zweitkorrektur-System (NEU)

### 11.1 Neue Backend-Endpoints (main.py)

```python
# Zweitkorrektur Workflow
POST /api/v1/students/{id}/start-zweitkorrektur   # ZK starten (nach EK)
POST /api/v1/students/{id}/submit-zweitkorrektur  # ZK-Ergebnis abgeben

# Einigung (bei Diff 3 Punkte)
POST /api/v1/students/{id}/einigung               # Einigung einreichen

# Drittkorrektur (bei Diff >= 4 Punkte)
POST /api/v1/students/{id}/assign-drittkorrektor  # DK zuweisen
POST /api/v1/students/{id}/submit-drittkorrektur  # DK-Ergebnis (final)

# Workflow-Status & Visibility-Filtering
GET  /api/v1/students/{id}/examiner-workflow      # Workflow-Status abrufen
GET  /api/v1/students/{id}/annotations-filtered   # Policy-gefilterte Annotations
```

### 11.2 Workflow-Status

```python
class ExaminerWorkflowStatus(str, Enum):
    NOT_STARTED = "not_started"
    EK_IN_PROGRESS = "ek_in_progress"
    EK_COMPLETED = "ek_completed"
    ZK_ASSIGNED = "zk_assigned"
    ZK_IN_PROGRESS = "zk_in_progress"
    ZK_COMPLETED = "zk_completed"
    EINIGUNG_REQUIRED = "einigung_required"
    EINIGUNG_COMPLETED = "einigung_completed"
    DRITTKORREKTUR_REQUIRED = "drittkorrektur_required"
    DRITTKORREKTUR_ASSIGNED = "drittkorrektur_assigned"
    DRITTKORREKTUR_IN_PROGRESS = "drittkorrektur_in_progress"
    COMPLETED = "completed"
```

### 11.3 Visibility-Regeln (aus bundeslaender.json)

| Modus | ZK sieht EK-Annotations | ZK sieht EK-Note | ZK sieht EK-Gutachten |
|-------|-------------------------|------------------|----------------------|
| `blind` | Nein | Nein | Nein |
| `semi` (Bayern) | Ja | Nein | Nein |
| `full` (NI, Default) | Ja | Ja | Ja |

### 11.4 Konsens-Regeln

| Differenz EK-ZK | Aktion |
|-----------------|--------|
| 0-2 Punkte | Auto-Konsens (Durchschnitt) |
| 3 Punkte | Einigung erforderlich |
| >= 4 Punkte | Drittkorrektur erforderlich |

---

## 12. Aktueller Stand

**Datum**: 2026-01-21
**Phase**: Alle Phasen abgeschlossen
**Status**: MVP komplett - bereit fuer Produktionstest

### Abgeschlossen:
- [x] Phase 1: Korrektur-Workspace MVP
- [x] Phase 1.1: Grundgerüst (Klausur-Liste, Studenten-Liste)
- [x] Phase 1.2: Annotations-System
- [x] Phase 1.3: RS/Grammatik Overlays
- [x] Phase 1.4: EH-Vorschläge via RAG
- [x] Phase 2.1 Backend: Zweitkorrektur-Endpoints
- [x] Phase 2.2 Backend: Einigung-Endpoint
- [x] Phase 2.3 Backend: Drittkorrektur-Trigger
- [x] Phase 2.1 Frontend: ZK-Modus UI
- [x] Phase 2.2 Frontend: Einigung-Screen
- [x] Phase 3.1: Fairness-Dashboard Frontend
- [x] Phase 3.2: Ausreißer-Liste mit Quick-Adjust
- [x] Phase 3.3: Noten-Histogramm & Heatmap
- [x] Phase 4.1: PDF-Export Backend (reportlab)
- [x] Phase 4.2: PDF-Export Frontend
- [x] Phase 4.3: Vorabitur-Modus mit EH-Templates

### URLs:
- Klausur-Korrektur: `/admin/klausur-korrektur`
- Fairness-Dashboard: `/admin/klausur-korrektur/[klausurId]/fairness`

### PDF-Export Endpoints:
- `GET /api/v1/students/{id}/export/gutachten` - Einzelnes Gutachten als PDF
- `GET /api/v1/students/{id}/export/annotations` - Anmerkungen als PDF
- `GET /api/v1/klausuren/{id}/export/overview` - Notenübersicht als PDF
- `GET /api/v1/klausuren/{id}/export/all-gutachten` - Alle Gutachten als PDF

### Vorabitur-Modus Endpoints:
- `GET /api/v1/vorabitur/templates` - Liste aller EH-Templates
- `GET /api/v1/vorabitur/templates/{aufgabentyp}` - Template-Details
- `POST /api/v1/klausuren/{id}/vorabitur-eh` - Custom EH erstellen
- `GET /api/v1/klausuren/{id}/vorabitur-eh` - Verknuepften EH abrufen
- `PUT /api/v1/klausuren/{id}/vorabitur-eh` - EH aktualisieren

### Verfuegbare Aufgabentypen:
- `textanalyse_pragmatisch` - Sachtexte, Reden, Kommentare
- `gedichtanalyse` - Lyrik/Gedichte
- `prosaanalyse` - Romane, Kurzgeschichten
- `dramenanalyse` - Dramatische Texte
- `eroerterung_textgebunden` - Textgebundene Eroerterung

---

## 13. Lehrer-Anleitung (Schritt-fuer-Schritt)

### 13.1 Zugang zum System

**Weg 1: Ueber das Haupt-Dashboard**
1. Oeffnen Sie `http://macmini:8000/app` im Browser
2. Klicken Sie auf die Kachel "Abiturklausuren"
3. Sie werden automatisch zur Korrektur-Oberflaeche weitergeleitet

**Weg 2: Direkter Zugang**
1. Oeffnen Sie direkt `http://macmini:3000/admin/klausur-korrektur`

### 13.2 Zwei Einstiegs-Optionen

Beim ersten Besuch sehen Sie die Willkommens-Seite mit zwei Optionen:

#### Option A: Schnellstart (Direkt hochladen)
- Ideal wenn Sie sofort loslegen moechten
- Keine manuelle Klausur-Erstellung erforderlich
- System erstellt automatisch eine Klausur im Hintergrund

**Schritte:**
1. Klicken Sie auf "Schnellstart - Direkt hochladen"
2. **Schritt 1**: Ziehen Sie Ihre eingescannten Arbeiten (PDF/JPG/PNG) in den Upload-Bereich
3. **Schritt 2**: Optional - Waehlen Sie den Aufgabentyp und beschreiben Sie die Aufgabenstellung
4. **Schritt 3**: Pruefen Sie die Zusammenfassung und klicken "Korrektur starten"
5. Sie werden automatisch zur Korrektur-Ansicht weitergeleitet

#### Option B: Neue Klausur erstellen (Standard)
- Empfohlen fuer regelmaessige Nutzung
- Volle Metadaten (Fach, Jahr, Kurs, Modus)
- Unterstuetzt Zweitkorrektur-Workflow

**Schritte:**
1. Klicken Sie auf "Neue Klausur erstellen"
2. Geben Sie Titel, Fach, Jahr und Semester ein
3. Waehlen Sie den Modus:
   - **Abitur**: Fuer offizielle Abitur-Pruefungen mit NiBiS-EH
   - **Vorabitur**: Fuer Uebungsklausuren mit eigenem EH
4. Bei Vorabitur: Waehlen Sie Aufgabentyp und beschreiben Sie die Aufgabenstellung
5. Klicken Sie "Klausur erstellen"

### 13.3 Arbeiten hochladen

Nach Erstellung der Klausur:
1. Oeffnen Sie die Klausur aus der Liste
2. Klicken Sie "Arbeiten hochladen"
3. Waehlen Sie die eingescannten Dateien (PDF oder Bilder)
4. Geben Sie optional anonyme IDs (z.B. "Arbeit-1", "Arbeit-2")
5. Das System startet automatisch die OCR-Erkennung

### 13.4 Korrigieren

**Korrektur-Workspace (2/3-1/3 Layout):**
- Links (2/3): Das Originaldokument mit Zoom-Funktion
- Rechts (1/3): Bewertungspanel mit Kriterien

**Schritt fuer Schritt:**
1. Oeffnen Sie eine Arbeit durch Klick auf "Korrigieren"
2. Lesen Sie die Arbeit im linken Bereich (Zoom mit +/-)
3. Setzen Sie Anmerkungen durch Klick auf das Dokument
4. Waehlen Sie den Anmerkungstyp:
   - **RS** (rot): Rechtschreibfehler
   - **Gram** (blau): Grammatikfehler
   - **Inhalt** (gruen): Inhaltliche Anmerkungen
   - **Kommentar**: Allgemeine Bemerkungen
5. Bewerten Sie die 5 Kriterien im rechten Panel:
   - Rechtschreibung (15%)
   - Grammatik (15%)
   - Inhalt (40%)
   - Struktur (15%)
   - Stil (15%)
6. Klicken Sie "EH-Vorschlaege laden" fuer KI-Unterstuetzung
7. Klicken Sie "Gutachten generieren" fuer einen KI-Vorschlag
8. Bearbeiten Sie das Gutachten nach Bedarf
9. Klicken Sie "Speichern" und dann "Naechste Arbeit"

### 13.5 Fairness-Analyse

Nach Korrektur mehrerer Arbeiten:
1. Klicken Sie auf "Fairness-Dashboard" in der Klausur-Ansicht
2. Pruefen Sie:
   - **Noten-Histogramm**: Ist die Verteilung realistisch?
   - **Ausreisser**: Gibt es ungewoehnlich hohe/niedrige Noten?
   - **Kriterien-Heatmap**: Sind Kriterien konsistent bewertet?
3. Nutzen Sie "Quick-Adjust" um Anpassungen vorzunehmen

### 13.6 PDF-Export

1. In der Klausur-Ansicht klicken Sie "PDF-Export"
2. Waehlen Sie:
   - **Einzelgutachten**: PDF fuer einen Schueler
   - **Alle Gutachten**: Gesamtes PDF fuer alle Arbeiten
   - **Notenuebersicht**: Uebersicht aller Noten
   - **Anmerkungen**: Alle Annotationen als PDF

### 13.7 Zweitkorrektur (Optional)

Fuer offizielle Abitur-Klausuren:
1. Erstkorrektur abschliessen (Status: "Abgeschlossen")
2. Klicken Sie "Zweitkorrektur starten"
3. Der Zweitkorrektor bewertet unabhaengig
4. Bei Differenz >= 3 Punkte: Einigung erforderlich
5. Bei Differenz >= 4 Punkte: Drittkorrektur wird automatisch ausgeloest

### 13.8 Haeufige Fragen

**F: Kann ich eine Korrektur unterbrechen und spaeter fortsetzen?**
A: Ja, alle Aenderungen werden automatisch gespeichert.

**F: Was passiert mit meinen Daten?**
A: Alle Daten werden lokal auf dem Schulserver gespeichert. Keine Cloud-Speicherung.

**F: Kann ich den KI-Vorschlag komplett ueberschreiben?**
A: Ja, das Gutachten ist frei editierbar. Der KI-Vorschlag ist nur ein Startpunkt.

**F: Wie funktioniert die OCR-Erkennung?**
A: Das System erkennt Handschrift automatisch. Bei schlechter Lesbarkeit koennen Sie manuell nachbessern.

---

## 14. Integration Dashboard (Port 8000)

### 14.1 Aenderungen in dashboard.py

Die Funktion `openKlausurService()` wurde aktualisiert:

```javascript
// Alte Version: Oeffnete Port 8086 (Backend)
// Neue Version: Oeffnet Port 3000 (Next.js Frontend)
function openKlausurService() {
  let baseUrl;
  if (window.location.hostname === 'macmini') {
    baseUrl = 'http://macmini:3000';
  } else {
    baseUrl = 'http://localhost:3000';
  }
  window.open(baseUrl + '/admin/klausur-korrektur', '_blank');
}
```

### 14.2 Neue Frontend-Features

- **Willkommens-Tab**: Erster Tab fuer neue Benutzer mit Workflow-Erklaerung
- **Direktupload-Wizard**: 3-Schritt-Wizard fuer Schnellstart
- **Drag & Drop**: Arbeiten per Drag & Drop hochladen
- **localStorage-Persistenz**: System merkt sich wiederkehrende Benutzer
