Files
3d.lehrstun.de/docs/selbstlern-loop.md
Hans Puettmann 4658d4931a Initial commit: Konzept v2 + Etappe 1 (Blueprints + Login + Profile)
Schwester-Projekt zu arduino.lehrstun.de fuer die 3D-Druck-AG am
Lessing-Gymnasium. Offene jahrelange Nachmittags-AG (kein Trimester),
8-10 Einzel-SuS mit optionalen 2er-Paarungen, 4 Bambu-Lab-Drucker
(3 geschlossen + 1 A1 mini).

Konzept v2 (Reality-Check-Iteration 2026-05-24):
- Onboarding-Pfad statt Pflicht-Lektionen (L1-L3 selbst-zertifiziert)
- Selbstlern-Loop als Kern: SuS-Projekte wachsen die interne Bibliothek
- Drill-Down-Lehrer-Dashboard (Wer ist hier / Wartet Review / Haengt fest)
- Cockpit progressiv: zeigt nur was zum Status passt
- Bambu-Cloud-API fuer Drucker-Live-Status (fragil + Fallback manuell)
- Three.js-Vorschau fuer Cover-aus-3D-Ansicht (Etappe 6)
- Vollstaendige Doku als Obsidian-Vault (24 Markdown-Dateien)
- Entscheidungen E-001 bis E-022 in docs/decisions.md

Etappe 1 lauffaehig (~1800 Zeilen Code):
- Blueprint-Struktur (V8): routes/oeffentlich+profil+admin+api,
  services/auth+bambu+datei
- Komplettes Schema in database.py (14 Tabellen, idempotent)
- Login mit bcrypt + persistentem Lockout in DB (V7, verbessert ggue
  Arduino-Kurs der In-Memory-Dict nutzt)
- Admin-Login + Profile-CRUD + PIN-Reset + PIN-Karten-Druckbogen
- Inline-Edit-Endpunkt mit Whitelist + Audit-Log
- Seeds: AG lessing-3d-ag + 4 Drucker + Default-Einstellungen
- Smoke-Test bestanden (Login, Profil-Anlage, Lockout-Logging)

Nicht im Repo (.gitignore): .env, *.db, venv/, .obsidian/workspace.json
2026-05-24 18:56:59 +02:00

9.1 KiB

type, projekt, stand, tags
type projekt stand tags
konzept-modul 3d.lehrstun.de 2026-05-24
konzept
selbstlern-loop
projekte
kern

Selbstlern-Loop

Der Kern der 3D-Druck-AG-Site. Was uns vom Arduino-Kurs unterscheidet: Die Site wächst durch die SuS selbst. Jedes abgeschlossene Projekt landet nach Lehrer-Freigabe in der internen Bibliothek. Neue SuS sehen: "Bei uns hat das schonmal jemand gemacht — und so ging's aus." Das schlägt jeden externen Modell-Katalog.

Architektur-Einbettung: architektur. Datenmodell: datenmodell#projekt, datenmodell#projekt_datei, datenmodell#projekt_tag. Lehrer-Sicht: lehrer-dashboard.

Der Lebenszyklus eines Projekts

stateDiagram-v2
    [*] --> Stoebern
    Stoebern --> Ausgewaehlt: SuS wählt aus Katalog (oder eigene Idee)
    Ausgewaehlt --> InArbeit: Projekt angelegt im Cockpit
    InArbeit --> InArbeit: Dateien hochladen, slicen, drucken, iterieren
    InArbeit --> AbschlussCheckliste: Knopf "Projekt beenden"
    AbschlussCheckliste --> WartetAufFreigabe: Pflicht-Checkliste erfüllt
    AbschlussCheckliste --> InArbeit: Zurück (Checkliste unvollständig)

    WartetAufFreigabe --> Freigegeben: Lehrer-OK
    WartetAufFreigabe --> Rueckfrage: Lehrer hat Hinweis
    Rueckfrage --> InArbeit: SuS bessert nach
    WartetAufFreigabe --> [*]: Lehrer hart-löscht (Penismodell etc.)

    Freigegeben --> [*]: Projekt im Katalog sichtbar
    Freigegeben --> Stoebern: Andere SuS wählt es als Vorlage

Station 1: Stöbern

UI: /projekte — Projekt-Katalog.

Inhalt:

  • Karten mit Cover-Foto, Titel, Macher (Vorname + Tier-Icon), Selbsteinschätzung (🟢🟡🔴), Tags.
  • Filter: nach Tag, Schwierigkeitslevel (Anfänger/Mittel/Fortgeschritten), Erfolgsstatus, Macher.
  • Auch ZSL-Projekte (umgearbeitet, mit CC-BY-4.0-Nachweis — siehe ../decisions#E-022) erscheinen als Karten.
  • Suchfeld für Titel-Volltext.

Ankerseite für die Vernetzung (Variante 1): SuS sucht selbst, kein Auto-Match-Knopf. Wenn Mia das gleiche Projekt schon gemacht hat, sieht der neue SuS die Karte und kann sie in der AG-Stunde ansprechen.

Station 2: Auswählen

UI: /cockpit/projekt/neu.

Drei Optionen:

  1. Aus Katalog: SuS klickt auf eine Karte → „Sowas mache ich auch" → neues Projekt-Datensatz mit vorlage_projekt_id befüllt. Titel + Tags vorausgefüllt, SuS kann anpassen.
  2. Komplett eigene Idee: leerer Titel + Beschreibung.
  3. Onboarding-Pflicht-Projekt (z.B. L2 „erstes Modell drucken"): die Lektion legt automatisch ein Projekt an.

Station 3: Arbeiten

UI: Cockpit-Karte „Eigene Projekte" mit Liste der eigenen status_lebenszyklus='in_arbeit'-Projekte.

Was passiert hier:

  • Datei-Uploads (laufend oder am Ende, frei): STL, 3MF, Fotos, Sonstiges. Limit 30 MB pro Datei.
  • Beschreibung pflegen (Markdown).
  • Druckaufträge anlegen (/cockpit/druckauftrag/neu), Slots reservieren.
  • Mit anderen SuS in der AG sprechen — die Site lenkt nicht aktiv.

Station 4: Abschluss-Checkliste

UI: /cockpit/projekt/<id>/abschluss.

Pflicht-Felder (V4, radikal kurz):

  • Selbsteinschätzung (Pflicht, eine Wahl):
    • 🟢 Bin zufrieden, würde es so wieder machen
    • 🟡 Funktioniert, aber ich würde Sachen anders machen
    • 🔴 Hat nicht geklappt, aber ich habe was gelernt
  • Cover-Foto ODER STL/3MF (mindestens eines): ein Bild, das im Katalog erscheint. Wenn nur STL vorhanden: Lehrer kann beim Review per Three.js-Vorschau einen Screenshot machen.
  • Mindestens 1 Tag (frei wählbar oder aus kuratierter Liste).

Optional, aber empfohlen:

  • Beschreibungs-Freitext (Markdown).
  • Freitext „Was würdest du anderen mit auf den Weg geben?" — wird im Detail bei der Karte angezeigt, ist die wichtigste Lehrgeld-Quelle für nächste SuS.
  • Weitere Dateien.

Knopf „Abschicken": ist erst aktivierbar, wenn alle Pflicht-Felder erfüllt sind.

Nach Abschicken: freigabe_status = 'wartet_auf_freigabe', im Cockpit erscheint die Karte mit Hinweis „Wartet auf Lehrer-Freigabe (typisch 1-3 Tage)".

Station 5: Lehrer-Review

UI: /admin/projekt-freigabe (Liste) → /admin/projekt-freigabe/<id> (Detail).

Drei Aktionen (siehe ../decisions#E-017):

A) Freigeben

  • Lehrer prüft Cover-Foto, Beschreibung, Tags, Dateien.
  • Darf Inline-editieren: Titel, Beschreibung, Tags (siehe routen#inline-edit-whitelist). Audit-Log dokumentiert jede Änderung.
  • Optional: Three.js-Screenshot als Cover speichern, wenn SuS keines hochgeladen hat.
  • Klick „Freigeben" → freigabe_status = 'freigegeben', sofort im Katalog sichtbar.

B) Rückfrage stellen

  • Lehrer tippt Notiz (z.B. „Cover-Foto fehlt, mach bitte eines vor dem Drucker").
  • Klick „Rückfrage" → freigabe_status = 'rueckfrage', Eintrag in projekt_rueckfrage.
  • SuS sieht beim nächsten Login gelbes Banner ganz oben im Cockpit (V6): „Markus hat eine Rückfrage zu deinem Projekt X: …".
  • SuS bessert nach, klickt im Cockpit „Rückfrage erledigt + erneut zur Freigabe" → zurück auf wartet_auf_freigabe.

C) Hart löschen

  • Für Penismodelle, Copyright-Probleme, sonstige problematische Inhalte.
  • Bestätigungsdialog: „Wirklich löschen? Dateien sind danach weg."
  • Audit-Log behält: Datum, Lehrer-Profil-ID, SuS-Vorname + Tier, optional Grund. Dateien selbst werden physisch entfernt.

Station 6: Im Katalog

UI: /projekte zeigt das Projekt für alle eingeloggten SuS.

Detail-Seite /projekte/<id>:

  • Cover-Foto groß
  • Titel + Macher (Vorname + Tier-Icon)
  • Selbsteinschätzung als Badge (🟢🟡🔴)
  • Tags als Chips (klickbar → Filter)
  • Beschreibung
  • „Was würdest du anderen mitgeben?" — als hervorgehobener Block
  • Dateien-Liste mit Download-Buttons (Auth-Check: nur eingeloggte SuS)
  • Three.js-Vorschau, wenn STL vorhanden
  • Knopf „Sowas mache ich auch" → legt neues Projekt mit vorlage_projekt_id an

Wichtig: SuS kann das eigene Projekt auch nachträglich verbergen (sichtbar_in_ag = 0) — z.B. wenn ihm das später peinlich ist. Lehrer sieht es weiterhin im Admin.

Vernetzung in der Praxis (Variante 1)

Die Site vermittelt nicht aktiv. Aber sie macht sichtbar, wer was schon gemacht hat. Drei Realsituationen:

  1. Neuer SuS sucht Projekt-Idee: Klickt im Katalog herum, sieht „Schlüsselanhänger — Mia, 🟢". Geht in der nächsten AG zu Mia: „Wie hast du das gemacht?" Mia kann die Hilfe leisten, weil sie ihren Stand selbst dokumentiert hat.

  2. SuS-Stuck-Situation: Tom hängt mit dem Drohnenrahmen fest. Lehrer schaut im Drill-Down-Dashboard (siehe lehrer-dashboard), sieht „Drohne — Lara, 🟡". Lehrer vermittelt: „Lara hat sowas gemacht, frag sie."

  3. Erfahrener SuS wird Mentor: Wenn Mias Projekt 3x als Vorlage gewählt wurde (vorlage_projekt_id zeigt darauf), wäre denkbar, dass Mia einen „Mentor"-Badge bekommt. Aktuell nicht implementiert — als spätere Idee in offene-fragen.

ZSL-Material als Initial-Inhalt

Bei Kursstart ist die Bibliothek leer. Damit neue SuS nicht ins Nichts schauen, kommen 8-10 ZSL-Projekte als Seed-Inhalt (siehe ../decisions#E-022):

  • Markus + Herb wählen Projekte gemischter Schwierigkeit aus den 20+ ZSL-Vorlagen.
  • Beschreibungen werden in unser Design umgearbeitet (mit CC-BY-4.0-Nachweis pro Karte: „Vorlage: Tilo Bödigheimer, ZSL Baden-Württemberg, CC-BY-4.0").
  • Bilder + STLs übernehmen wir 1:1 mit Quelle.
  • Diese Projekte erscheinen als reguläre Katalog-Karten, sind aber markiert als „Vorlagen-Projekt" (Tag zsl-vorlage oder Badge).
  • SuS können sie als Vorlage wählen — dadurch entstehen eigene Projekte daraus, die wiederum in den Katalog landen.

Sichtbarkeit für SuS

  • Andere SuS sehen: Cover, Titel, Macher, Tags, Selbsteinschätzung, Dateien, Beschreibung, „Was würdest du anderen mitgeben?".
  • Andere SuS sehen NICHT: Druckaufträge, Slots, Stand-Notizen, Stunden-Beginn-Abfragen anderer.
  • Macher selbst: sieht alles + kann eigene Projekte editieren (während in_arbeit).
  • Lehrer: sieht alles immer, kann immer editieren (im Review-Modus oder via Admin).

Konsistent mit ../decisions#E-004 („Inspiration ja, Vergleich nein").

Spätere Erweiterungen (nicht in Etappe 6)

Diese Ideen sind im Konzept dokumentiert, aber nicht zur Initial-Implementation geplant:

  • Mentor-Badge für SuS, deren Projekte oft als Vorlage gewählt werden.
  • Kommentar-Funktion unter Projekten („Mia, wie hast du den Support entfernt?").
  • Foto-Galerie pro Projekt (mehrere Fotos im Lifecycle: Anfang, Mitte, Druck, Fertig).
  • Externe Veröffentlichung einzelner Projekte auf Printables/MakerWorld (mit SuS-Zustimmung + Eltern-OK).
  • Speicher-Optimierung: Migration der BLOB-Dateien auf Hetzner Object-Storage, sobald DB > 5 GB (siehe ../decisions#E-016).

Querverweise