Files
3d.lehrstun.de/docs/selbstlern-loop.md
Hans Puettmann f534256a0a Sprache: 'Modell' -> '3D-Modell' konsequent durchgesetzt
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.
2026-05-24 19:41:36 +02:00

177 lines
9.1 KiB
Markdown

---
type: konzept-modul
projekt: 3d.lehrstun.de
stand: 2026-05-24
tags: [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 3D-Modell-Katalog.
Architektur-Einbettung: [[architektur]]. Datenmodell: [[datenmodell#projekt]],
[[datenmodell#projekt_datei]], [[datenmodell#projekt_tag]]. Lehrer-Sicht: [[lehrer-dashboard]].
## Der Lebenszyklus eines Projekts
```mermaid
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 3D-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
- DB-Schema: [[datenmodell#projekt]], [[datenmodell#projekt_datei]], [[datenmodell#projekt_tag]], [[datenmodell#projekt_rueckfrage]]
- Routen: [[routen]]
- Lehrer-Sicht: [[lehrer-dashboard]]
- Entscheidungen: [[../decisions#E-014]] (Loop), [[../decisions#E-015]] (Feedback), [[../decisions#E-016]] (Files), [[../decisions#E-017]] (Review), [[../decisions#E-018]] (Three.js)