Baustein 5: Praxisaufgaben mit Anhaengen und Abnahme
- Status offen / in Arbeit / zur Abnahme / abgenommen, mit Zeitstempeln - Notizfeld fuer den Azubi, Dateianhaenge bis 25 MB - Speicherpfad nur aus selbst erzeugter UUID, nie aus dem Dateinamen - Auslieferung ueber /anhaenge/<kennung> mit Rechtepruefung bei jedem Abruf, CSP sandbox und nosniff; SVG ausdruecklich nicht erlaubt - Anhaenge haengen an Aufgabe UND Azubi - Ausbilder hakt Kriterien einzeln ab, Note und Rueckmeldung, Abnahme sperrt - Zurueckgeben zur Nacharbeit - "Was auf dich wartet" zeigt offene Abnahmen - Abgenommene Aufgaben zaehlen im Wochenfortschritt mit Behoben: Next.js deckelt Serveraktionen ab Werk bei 1 MB - damit waere kein Handyfoto durchgekommen. bodySizeLimit jetzt 30 MB, Vorabpruefung im Browser, client_max_body_size im Proxy-Beispiel auf 30m. Geaendert: Seiten verweigern fremde Daten mit 404 statt mit einem Fehler. Eigene Seiten fuer "Nicht gefunden" und Stoerfaelle. 24 neue Tests, insgesamt 157. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
bb592ad2bd
commit
ffbca01bdc
@@ -26,6 +26,51 @@ Vor `npm version` wandert der Abschnitt „Unveröffentlicht" unter eine neue
|
||||
|
||||
## [Unveröffentlicht]
|
||||
|
||||
## [0.5.0] – 2026-09-10
|
||||
|
||||
Praxisaufgaben: bearbeiten, belegen, abnehmen.
|
||||
|
||||
### Hinzugefügt
|
||||
|
||||
- Bearbeitungsstand je Aufgabe: *offen*, *in Arbeit*, *zur Abnahme*,
|
||||
*abgenommen*; Beginn und Abgabe werden mit Zeitstempel vermerkt
|
||||
- Notizfeld für den Azubi (bis 8000 Zeichen) – dieselben Notizen helfen später
|
||||
beim Berichtsheft
|
||||
- **Dateianhänge**: Fotos vom Aufbau, Bildschirmfotos, ein Netzplan als PDF.
|
||||
Bis 25 MB je Datei, Positivliste erlaubter Typen (JPEG, PNG, WebP, GIF, HEIC,
|
||||
PDF, Text, CSV)
|
||||
- Der Speicherpfad wird ausschließlich aus einer selbst erzeugten UUID
|
||||
gebildet, nie aus dem übermittelten Dateinamen
|
||||
- Ausgeliefert wird nur über `/anhaenge/<kennung>`, mit Rechteprüfung bei
|
||||
**jedem** Abruf und `Content-Security-Policy: sandbox`, damit ein Anhang
|
||||
nicht im Kontext der Anwendung ausgeführt werden kann
|
||||
- SVG ist ausdrücklich nicht erlaubt – es kann Skripte enthalten
|
||||
- Der Ausbilder hakt die Bewertungskriterien einzeln ab, vergibt eine Note oder
|
||||
kurze Bewertung und schreibt eine Rückmeldung
|
||||
- Abnehmen sperrt die Aufgabe für den Azubi; Zurückgeben setzt sie auf
|
||||
„in Arbeit", damit er nacharbeiten kann
|
||||
- „Was auf dich wartet" auf der Ausbilderstartseite zeigt die offenen Abnahmen
|
||||
mit Azubi und Abgabezeitpunkt
|
||||
- Abgenommene Aufgaben zählen im Wochenfortschritt mit
|
||||
- Eigene Seite „Nicht gefunden" für den angemeldeten Bereich
|
||||
- 24 Tests für Dateiprüfung, Namenssäuberung, Speicherpfad und Pfadausbruch
|
||||
|
||||
### Behoben
|
||||
|
||||
- **Anhänge über 1 MB scheiterten stillschweigend.** Next.js deckelt
|
||||
Serveraktionen ab Werk bei 1 MB – damit wäre kein einziges Handyfoto
|
||||
durchgekommen, obwohl die Anwendung 25 MB zusagt. `bodySizeLimit` steht jetzt
|
||||
auf 30 MB, und zu große Dateien werden schon im Browser abgefangen, bevor sie
|
||||
übertragen werden. Im Beispiel für den Reverse Proxy steht
|
||||
`client_max_body_size` entsprechend auf 30m
|
||||
|
||||
### Geändert
|
||||
|
||||
- Seiten verweigern fremde Daten jetzt mit **404** statt mit einem Fehler.
|
||||
Damit verrät die Anwendung nicht, ob es die angefragten Daten überhaupt gibt –
|
||||
und der Benutzer sieht einen deutschen Satz statt „Application error".
|
||||
Serveraktionen brechen weiterhin hart ab
|
||||
|
||||
## [0.4.0] – 2026-09-10
|
||||
|
||||
Merkkarten mit Wiederholung nach Zeitabstand – der tägliche kleine Stapel
|
||||
@@ -185,6 +230,7 @@ anmelden und verwalten.
|
||||
- `npm run konto:anlegen` für das erste Ausbilderkonto
|
||||
|
||||
[Unveröffentlicht]: #unveröffentlicht
|
||||
[0.5.0]: #050--2026-09-10
|
||||
[0.4.0]: #040--2026-09-10
|
||||
[0.3.0]: #030--2026-09-10
|
||||
[0.2.0]: #020--2026-09-10
|
||||
|
||||
Reference in New Issue
Block a user