feat: PDF-Druck für Sitzplan, Notenliste, Klausur-Notenspiegel, Kompetenzbericht, Dokumentation
QuestPDF als PDF-Bibliothek eingeführt (11.3), bewusst nur in LehrerApp.Desktop referenziert - zieht SkiaSharp-Native-Binaries mit, die im Server-Docker-Image nichts verloren haben. Neuer PdfExportService mit gemeinsamem Kopf-/Fußzeilen-Layout (Titel, Stand-Datum, Seitenzahlen) und schlanken Druck-DTOs statt ViewModels, damit die Erzeugung ohne Avalonia-Bezug testbar bleibt. Speicherdialog läuft über den bestehenden ExportService (neues PDF-Format). Fünf Druckvorlagen (11.4) als "Als PDF"-Button direkt in der jeweiligen Ansicht: - Sitzplan: Raster mit Tafel-Banner, Tischabständen als echte Lücken, ausgeblendeten Plätzen als leere Rasterposition. - Notenliste: druckt exakt die aktuell angezeigte Matrix (Zeitraum/Darstellung/Sortierung). - Klausur-Notenspiegel: Kennzahlen, Notenverteilung und Aufgabenanalyse mit Balkendiagrammen, auffällig schwache Aufgaben rot markiert. - Kompetenzbericht: Analyse-Tabelle für den ausgewählten Schüler (erledigt zugleich 8.3.3). - Schülerdokumentation: alle Einträge chronologisch, vertrauliche/Entwurfs-Einträge markiert. Layout an gerenderten Muster-PDFs visuell geprüft, nicht nur per Unit-Test. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1397,9 +1397,23 @@ Hinweis in Kapitel 1 — betrifft auch Kurse, nicht nur Klassen.
|
||||
in eine aktive Gruppe bleiben möglich.
|
||||
|
||||
### 7.3 Import
|
||||
- [ ] **7.3.1** CSV-Import von Schülerlisten mit Spaltenzuordnung im Dialog.
|
||||
- [ ] **7.3.2** Dublettenerkennung beim Import (Name + Geburtsdatum), Zusammenführen anbieten.
|
||||
- [ ] **7.3.3** Import-Vorschau mit Fehlerliste vor dem endgültigen Übernehmen.
|
||||
|
||||
Nachträglich als erledigt markiert — die Umsetzung existierte bereits vollständig
|
||||
(`StudentImportService`, `Core/Importing/`, `StudentImportDialogViewModel`), nur die Checkliste
|
||||
war nie nachgezogen worden.
|
||||
|
||||
- [x] **7.3.1** CSV-Import von Schülerlisten. Abweichend vom ursprünglichen Plan keine manuelle
|
||||
Spaltenzuordnung im Dialog, sondern drei fest hinterlegte, automatisch erkannte Formate
|
||||
(`StudentMasterDataCsvImportHandler`, `LessonStudentListCsvImportHandler`,
|
||||
`MarksPerLessonCsvImportHandler` über `ImportHandlerCatalog`) — deckt die real
|
||||
vorkommenden Schulverwaltungs-Exporte ab, ohne Zuordnungs-UI.
|
||||
- [x] **7.3.2** Dublettenerkennung mit Konfliktauflösung im Dialog: eindeutige Treffer werden
|
||||
automatisch als "vorhanden" übernommen (`StudentImportResolutionKind.UseExisting`),
|
||||
mehrdeutige Fälle als `ImportConflict` einzeln entschieden (bestehenden Schüler wählen /
|
||||
neu anlegen / überspringen), inkl. "für alle übernehmen"-Abkürzung.
|
||||
- [x] **7.3.3** Import-Vorschau (`StudentImportPreview`) mit Meldungsliste nach Schweregrad —
|
||||
Fehler blockieren das Übernehmen (`CanApply`), dazu Zusammenfassung (neu / vorhanden / zu
|
||||
ergänzen) und Lerngruppen-Zuordnungsübersicht vor dem endgültigen Übernehmen.
|
||||
|
||||
---
|
||||
|
||||
@@ -1439,7 +1453,9 @@ Format dokumentiert in [Kompetenzkatalog-KI-Prompt.md](docs/Kompetenzkatalog-KI-
|
||||
- [x] **8.3.2** Gruppenübersicht: durchschnittlicher Erfüllungsgrad je Kompetenz,
|
||||
Identifikation von Wiederholungsbedarf. Gruppenmittel, Zahl der beteiligten Schüler und
|
||||
Aufgabenwerte werden angezeigt; die Schwelle für Wiederholungsbedarf ist frei einstellbar.
|
||||
- [ ] **8.3.3** Kompetenzbericht je Schüler als Ausdruck/Export.
|
||||
- [x] **8.3.3** Kompetenzbericht je Schüler als Ausdruck/Export — umgesetzt als PDF-Druckvorlage
|
||||
der Kompetenzübersicht (Details siehe 11.4, "Kompetenzbericht"): druckt die Analyse für
|
||||
den aktuell im Tab ausgewählten Schüler.
|
||||
|
||||
---
|
||||
|
||||
@@ -2107,9 +2123,45 @@ beides vor dem ersten produktiven Zwei-Geräte-Einsatz empfehlenswert nachzuhole
|
||||
- [~] **11.2** CSV-Export für Notenlisten, Klausurauswertung, Arbeitszeit, Fehlzeiten —
|
||||
Klausurauswertung, Zeugnisnotenliste und Arbeitszeitauswertung sind umgesetzt; allgemeine
|
||||
Notenmatrix und Fehlzeitenbilanz fehlen noch.
|
||||
- [ ] **11.3** PDF-Erzeugung (Bibliothek auswählen — z.B. QuestPDF) mit einheitlichem Layout.
|
||||
- [ ] **11.4** Druckvorlagen: Notenliste, Klausur-Notenspiegel, Sitzplan, Kompetenzbericht,
|
||||
Schülerdokumentation.
|
||||
- [x] **11.3** PDF-Erzeugung mit einheitlichem Layout.
|
||||
|
||||
**Umsetzung:** QuestPDF (Community-Lizenz, in `Directory.Packages.props` gepinnt),
|
||||
referenziert **nur von `LehrerApp.Desktop`** — bewusst nicht von Core: QuestPDF zieht
|
||||
SkiaSharp-Native-Binaries mit, die sonst transitiv (Core → Sync → Api) im
|
||||
Server-Docker-Image landen würden. Neuer `PdfExportService`
|
||||
(`Desktop/Services/PdfExportService.cs`) mit gemeinsamen Layout-Bausteinen (Kopfzeile mit
|
||||
Titel/Untertitel/Stand-Datum, Fußzeile mit Seitenzahlen, A4 quer) und schlanken Druck-DTOs
|
||||
statt ViewModels — die Erzeugung bleibt dadurch ohne Avalonia-Bezug testbar
|
||||
(`PdfExportServiceTests`, Layout zusätzlich an gerenderten Muster-PDFs visuell geprüft).
|
||||
Der Speicherdialog läuft über den bestehenden `ExportService` (neues Format
|
||||
`ExportFormat.Pdf` + `ExportFile.Pdf`).
|
||||
- [x] **11.4** Druckvorlagen: Notenliste, Klausur-Notenspiegel, Sitzplan, Kompetenzbericht,
|
||||
Schülerdokumentation — alle fünf umgesetzt, jeweils als "Als PDF"-Button direkt in der
|
||||
zugehörigen Ansicht, alle über `PdfExportService` (11.3) mit einheitlichem Kopf/Fuß-Layout.
|
||||
|
||||
**Sitzplan** (Kopfzeile des Sitzplan-Tabs): druckt das Raster mit Tafel-Banner an der
|
||||
konfigurierten Position, Tischabständen als echte Lücken (Spaltenbreiten analog
|
||||
`SeatingPlanPanel`), ausgeblendeten Plätzen als leere Rasterposition (Reihen verrutschen
|
||||
nicht) und freien Plätzen dezent markiert — gedacht z. B. für Vertretungslehrer oder
|
||||
Klausuraufsicht.
|
||||
**Notenliste** (Werkzeugleiste der Notenübersicht): druckt exakt die aktuell angezeigte
|
||||
Matrix (gewählter Zeitraum, Punkte-/Noten-Darstellung, Sortierung) mit Namens-, Noten-
|
||||
und Schnitt-Spalten — gedacht z. B. für die Zeugniskonferenz.
|
||||
**Klausur-Notenspiegel** (Fußleiste des Klausurauswertungs-Dialogs, neben dem
|
||||
CSV-Export): Kennzahlen (bewertet/abwesend/Durchschnitt/Median/Schwellen je nach
|
||||
Notensystem), Notenverteilung und Aufgabenanalyse jeweils mit Balkendiagramm; auffällig
|
||||
schwache Aufgaben (< 50 %) rot markiert — gedacht z. B. für die Klausurrückgabe oder die
|
||||
Dokumentationspflicht gegenüber der Schulleitung.
|
||||
**Kompetenzbericht** (Kopfzeile der Kompetenzübersicht): druckt die Analyse-Tabelle für
|
||||
den aktuell ausgewählten Schüler (Bereich/Code/Kompetenz, Unterrichts- und
|
||||
Klausurabdeckung, Gruppen- vs. Schülerergebnis, farbige Empfehlung) samt
|
||||
Schwellenwert-Angabe — erledigt zugleich 8.3.3.
|
||||
**Schülerdokumentation** (Kopfzeile der Eintragsliste im Schülerdetail): druckt alle
|
||||
Einträge chronologisch als Blöcke mit Typ/Datum, Inhalt und Tags; vertrauliche Einträge
|
||||
und Entwürfe sind deutlich markiert — vertrauliche Inhalte werden bewusst MIT gedruckt
|
||||
(der Ausdruck ist ein Werkzeug der Lehrkraft selbst, z. B. zur Vorbereitung eines
|
||||
Elterngesprächs), die Markierung erinnert an die nötige Sorgfalt beim Umgang mit dem
|
||||
Papier.
|
||||
- [x] **11.5a** Einzelner Elternbrief als bearbeitbare DOCX-Kopie aus einer in Word gestalteten
|
||||
Vorlage. Vorlagenverwaltung in den Einstellungen; das Original bleibt unverändert. Vor
|
||||
Import und erneut vor jeder Erzeugung werden Inhaltssteuerelemente auch in Kopf-/Fußzeilen
|
||||
|
||||
Reference in New Issue
Block a user