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:
Florian Wilde
2026-09-10 12:18:54 +02:00
co-authored by Claude Opus 5
parent bb592ad2bd
commit ffbca01bdc
44 changed files with 1925 additions and 26 deletions
+34
View File
@@ -7,6 +7,40 @@ Format: `HH:MM–HH:MM (Dauer) · was gemacht wurde`
---
## 2026-09-10 · Baustein 5 – Praxisaufgaben
| Von | Bis | Dauer | Tätigkeit |
|---|---|---|---|
| 11:55 | 12:05 | 0:10 | Datenmodell für Aufgabenstand und Anhänge, Migration, Schema |
| 12:05 | 12:20 | 0:15 | Dateiregeln (Typen, Größe, Namenssäuberung, Speicherpfad) und 24 Tests dazu |
| 12:20 | 12:35 | 0:15 | Repositories, Serveraktionen, Ausliefer-Route mit Rechteprüfung |
| 12:35 | 13:00 | 0:25 | Aufgabenliste, Aufgabenseite, Bewertungsformular, Abnahme |
| 13:00 | 13:20 | 0:20 | Durchstich – dabei den 1-MB-Deckel gefunden und behoben |
| 13:20 | 13:35 | 0:15 | Fremdzugriff geprüft, Seiten auf 404 umgestellt, Screenshots, Dokumente |
**Summe Baustein 5: rund 1 h 40 min**
### Was aufgefallen ist
- **Der wichtigste Fund des Tages:** Next.js begrenzt Serveraktionen ab Werk auf
1 MB Rumpfgröße. Meine eigene Grenze von 25 MB war damit nie erreichbar –
jedes Handyfoto (2 bis 5 MB) wäre stillschweigend gescheitert, mit einem
Fehler nur im Serverprotokoll. Genau das Abnahmekriterium „eine Praxisaufgabe
mit Foto abgeben" hätte nicht funktioniert. Gefunden hat den Fehler nur der
Durchstich mit einer echten Datei, nicht die Testdatei mit 200 Byte.
Gegenprobe danach: 3,8-MB-Foto hochgeladen, kommt mit 3 987 781 Byte zurück.
- Die eigene Fehlerseite für „kein Zugriff" hat nicht funktioniert, weil
Next.js Fehlermeldungen im Produktionsbetrieb schwärzt – der Text kommt nie
im Browser an. Statt daran herumzubasteln liefern die Seiten jetzt 404. Das
ist ohnehin die bessere Antwort: Ob es die Daten gibt, geht einen Unbefugten
nichts an. Die Anhang-Route machte das von Anfang an so.
- Anhänge hängen an Aufgabe **und** Azubi. Beim ersten Entwurf hätte ein
zweiter Azubi die Fotos des ersten an derselben Aufgabe gesehen.
- Geprüft mit einem eigens angelegten zweiten Ausbilderkonto: fremder Anhang
404, eigener 200, der zuständige Ausbilder 200. Danach wieder gelöscht.
---
## 2026-09-10 · Baustein 4 – Merkkarten
| Von | Bis | Dauer | Tätigkeit |