Real-Stand laut Herb: 2x P1S, 1x H2S, 1x A1 mini. X1C/P2S bleiben in
drucker_links als Default-Mapping fuer den Fall, dass die Modelle spaeter
dazukommen.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Erklaert Site-Zweck, SuS-/Lehrer-Flows, Alph-Widget und Test-Zugaenge.
Profile auf prod angelegt: Markus (Fuchs/1234), Mia (Biene/5678),
beide schon zur Drucker-Reservierung freigeschaltet.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bisher war L3 nur ein Stub-Platzhalter (661 Z). Jetzt voll (5938 Z),
analog L1+L2 strukturiert:
- Was ist ein parametrisches 3D-Modell (Customizer-Konzept)
- MakerWorld-Konto anlegen (auch via Schul-Account)
- 5-Schritte-Workflow: Modell finden → Customizer oeffnen → Werte
veraendern → Generate → Download → drucken
- Konkrete Aufgabe: eigener Schluesselanhaenger mit dem Parametric
Name Keychain Creator
- Mini-Aufgabe 'selbst denken' (was geht nicht mit Customizer?)
- Bruecke zu L5+ (TinkerCAD): wo Customizer an Grenzen kommen
L3 markiert das Ende des Onboarding-Pfads — danach freie Wahl im Cockpit.
Quelle: D:/Claude-Projekte/PummelHummel/feedback_modul/ (Standard-Pattern,
auch in arduino.lehrstun.de + meta.lehrstun.de erprobt). 1:1 nach
3d.lehrstun.de/feedback_modul/ kopiert.
app.py erweitert:
- init_feedback_modul-Aufruf mit unseren Adaptern
- _alph_user_kontext: Lehrer = admin, SuS = profil mit Vorname+Tier,
Anonym = kein Widget
- _alph_widget_aktiv: liest einstellung.feedback_widget_aktiv
- _alph_admin_unauthorized: Redirect zu admin.admin_login
Hart-Aus via ENV ALPH_DEAKTIVIERT=1 weiterhin moeglich.
Soft-Aus via einstellung.feedback_widget_aktiv='0' (per Admin-Inline-Edit).
DB:
- feedback-Tabelle via feedback_modul.schema.DDL angelegt (idempotent)
- einstellung.feedback_widget_aktiv auf '1' gesetzt (Alpha-Test-Modus)
Test:
- Eingeloggter SuS sieht das Alph-Widget auf /lektion/1
- Anonym (kein Login) sieht es nicht (user_kontext gibt None)
- Admin sieht es mit Rolle 'admin'
Naechster Schritt: Deploy auf Hetzner (3d.lehrstun.de), Markus loggt
sich als Test-Schueler ein und gibt Feedback zu den 14 Lektionen.
L4-L14 neu, mit voll geschriebenen Inhalten in eigenen Worten fuer
Klasse 8 MINT. Quellen: NRW-Handreichung, DigiLab A1-mini-PDF, Bambu-Wiki,
Onshape-Briefing — alles umgesetzt, nicht kopiert.
Phasen:
- A (L1-L3): Drucken koennen — Onboarding-Pflicht
- B (L4-L7): Verstehen + visuelles CAD mit TinkerCAD
- L4: Wie funktioniert ein 3D-Drucker (FDM, Schichten, Materialkunde)
- L5: TinkerCAD - erste Schritte (Konto, UI, Grundformen)
- L6: TinkerCAD - Hole + Group + Workplane (der Kern-Workflow)
- L7: Selbst designter Schluesselanhaenger (verbindet CAD mit Druck)
- C (L8-L11): erste richtige Projekte + Vertiefung
- L8: Etwas Nuetzliches (Einkaufswagenchip / Stiftehalter / eigene Idee)
- L9: Mehrteilige Projekte mit Toleranzen
- L10: Slicer-Vertiefung (Schichthoehe, Fuelldichte, Stuetzen)
- L11: Druck-Probleme verstehen + loesen (6 Klassiker)
- D (L12-L13): Profi-CAD mit Onshape
- L12: Onshape kennenlernen (vs. TinkerCAD, Konto, erster parametrischer Wuerfel)
- L13: Kleiderhaken-Klassiker (Skizze + Extrusion + Hole + Fillet)
- E (L14): Capstone — eigenes Projekt von A bis Z
Padagogisches Muster pro Lektion: Anknuepfung -> neue Theorie/Werkzeug
-> geleitete Uebung -> freie Aufgabe (selbst denken) -> Reflexion.
Technisch:
- scripts/lektionen_seed.py — idempotent, kann mit Re-Run jederzeit aktualisiert
- docs/lektionen-plan.md — Uebersichts-Doku mit Pad-Logik + Materialquellen
- COCKPIT.md — Lektion-Liste aktualisiert
- Lektionen leben in der DB (sichtbar /lektion/1 bis /lektion/14)
- 3300-4900 Zeichen pro Lektion (gut lesbar, aber nicht aufgeblasen)
Smoke-Test: /lektionen zeigt alle 14, /lektion/14 rendert sauber.
Inhalte sind explizit korrigierbar — Markus + Herb werden beim Schultest
sehen, was funktioniert und was nicht. Inline-Edit (Etappe 3) wird das
Korrigieren ohne Migration erlauben.
Drei Aenderungen aus Herbs Feedback:
1. Markus -> Herr Rechmann (60 Treffer in 26 Dateien + DB-Lektionen L2/L3)
Konvention: Herb bleibt 'Herb' (interne Anrede fuer Claude), Markus
wird in SuS-sichtbaren Texten als 'Herr Rechmann' ausgeschrieben.
Wo 'Herb und Markus' stand -> 'Herb und Herr Rechmann'. Wenn das
stilistisch zu uneinheitlich wirkt, koennen wir Herb spaeter auch
in SuS-Texten zu 'Herr Puettmann' umziehen.
2. L3-Titel: 'Customizer — parametrisches 3D-Modell anpassen'
-> 'Mein eigenes 3D-Modell designen'
Begruendung Herb: 'Customizer' + 'parametrisch' wirken abschreckend.
Methode kommt in den Aufgabe-Text, nicht in den Titel.
3. L2-Inhalt komplett geschrieben (~4.8 KB):
- 8-Schritte-Workflow vom Stoebern auf Printables bis zum
Druck-Abholen
- A1-mini-Spezifika klar markiert (offen → nur PLA, 18×18 cm)
- P-Serie-Spezifika fuer groessere Drucke
- Tipps zur Modell-Wahl (klein anfangen, 4+ Sterne)
- Was-tun-wenn-Tabelle bei Druckproblemen
- Lehrer-Eskalations-Pfad: pausieren via Handy-App + Lehrer rufen
Quellenlage: PDF-Anleitung A1 mini im OneDrive + Bambu-Wiki online
waren beide nicht maschinell zugaenglich (pdftoppm fehlt, Wiki
gibt HTTP 402). Workflow basiert auf Standard-Bambu-Studio-Bedienung
+ Konsistenz mit der L1-P2S-Beschreibung. Herb/Herr Rechmann pruefen
die A1-mini-Spezifika beim Lehrer-Test und korrigieren via Inline-Edit
(oder per Migration, wenn Inline-Edit-UI noch nicht live ist).
Herb-Beobachtung: 'Fremdes Modell waehlen + drucken' liest sich
mehrdeutig — kurz dachte er, es waeren fremde Drucker (Prusa) gemeint.
Konvention im Glossar dokumentiert: '3D-Modell' fuer Druckdateien,
'Drucker'/'Druckermodell' fuer die Maschinen.
Geaendert:
- L2-Titel: 'Fremdes Modell waehlen + drucken'
-> '3D-Modell aus dem Netz drucken'
- L3-Titel: 'Customizer / parametrisches Modell'
-> 'Customizer — parametrisches 3D-Modell anpassen'
- L1-aufgabe_md: punktuelle Praezisierungen ('baut ein Modell' etc.)
- L2/L3-aufgabe_md: durchgaengig '3D-Modell'
- Startseite + selbstlern-loop.md + kurskonzept.md: dito
- docs/glossar.md: neue Sektion 'Sprach-Konvention: Modell' mit
Disambiguierungs-Hinweis
Migration migrations/2026-05-24_lektion_sprache_3d_modell.py
(idempotent via Marker SPRACHE_3D_MODELL_V1 in L1, Titel-Vergleich
fuer L2/L3).
seed.py vereinfacht — L1/L2/L3 sind nur noch Minimal-Stubs, die volle
Texte kommen aus den Migrationen. Bei voller Doku-Installation:
seed.py + alle migrations/ laufen lassen.
Symptom: auf /lektion/1 waren <strong>, <h3>, <ul>, <p> als Text zu sehen
statt gerendert. Ursache: markdown_filter gab einen normalen str zurueck,
und Jinja2 escaped str-Werte per Default fuer XSS-Schutz.
Fix: Rueckgabe als markupsafe.Markup() — markiert das Ergebnis als
'bereits escaped, hands off'.
Betrifft auch andere Stellen, die {{ ...|markdown }} nutzen
(cockpit.html bei Projekt-Beschreibung).
Quelle als Inspiration: Bambu Wiki P2S-Einfuehrung (Deutsch).
Text ist eigene Formulierung fuer Klasse 8 — keine 1:1-Uebernahme,
deshalb urheberrechtlich unbedenklich.
Inhalt der L1.aufgabe_md (4 KB):
- Wie 3D-Druck grob funktioniert (Schicht fuer Schicht)
- X/Y/Z-Bewegung, A1-mini-Unterschied erwaehnt
- Druckkopf-Anatomie (Extruder, Hotend, Duese, Silikonsocke)
- Heizbett + PEI-Druckplatte mit Pflegehinweis
- Automatik im Hintergrund (Bett-Levelling, Duesen-Reinigung, Filament-Erkennung)
- Luftfilter + adaptives Luftstromsystem (gut fuer Klassenraum)
- Touchscreen + Kamera + Bambu Handy App
- Konkreter Lektions-Ablauf am Ende (Sicherheits-Briefing, App-Setup, Erstdruck)
extern_link von L1: jetzt direkt das Bambu-Wiki (Deutsch) statt der
englischen Academy — mit Herbs OK (Registrierung ist akzeptabel).
Migration migrations/2026-05-24_l1_inhalt_v2.py — idempotent ueber Marker
im Text. Bei neuer Installation: seed.py legt Minimal-Stub, Migration
fuellt drueber.
docs/lektion-L1-drucker-kennenlernen.md aktualisiert mit Hinweisen zu
Migrationen + neuem TODO "A1 mini braucht eigene Anleitung".
Herb-Hinweis: https://wiki.bambulab.com/de/p2s/manual/p2s-intro
ist Bambus offizielle deutsche Anleitung fuer den P2S, passt sinngemaess
auch fuer unsere P1S + X1C (alle drei geschlossen, gleiches Layout).
Der A1 mini ist anders und braucht eigene Quelle.
- seed.py: aufgabe_md von L1 enthaelt den Link
- migrations/2026-05-24_l1_p2s_link.py: idempotenter Update fuer
bestehende DB-Stände, ergaenzt nur wenn Link noch nicht drin
- docs/lektion-L1-drucker-kennenlernen.md: Sektion "Externe Ressourcen"
ergaenzt mit beiden Links (Academy + P2S-Wiki)