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
309 lines
15 KiB
Markdown
309 lines
15 KiB
Markdown
---
|
|
type: konzept-hauptdokument
|
|
projekt: 3d.lehrstun.de
|
|
stand: 2026-05-24
|
|
status: entwurf v2
|
|
tags: [konzept, hauptdokument]
|
|
---
|
|
|
|
# 3D-Druck-AG — Kurskonzept (Entwurf v2)
|
|
|
|
> **Lesehinweis Obsidian:** Das ist das Hauptdokument am Stück. Detail-Module
|
|
> liegen in eigenen Dateien — siehe [[COCKPIT]] für die Übersicht, oder direkt
|
|
> [[architektur]], [[datenmodell]], [[routen]], [[druckerapi]], [[slotsystem]],
|
|
> [[sicherheit]], [[selbstlern-loop]], [[lehrer-dashboard]], [[etappen]],
|
|
> [[offene-fragen]], [[glossar]].
|
|
|
|
**Stand:** 2026-05-24 (nach Reality-Check-Iteration mit Herb)
|
|
**Status:** Entwurf v2, zur Abstimmung mit Markus
|
|
**Rahmen:** Offene Nachmittags-AG am Lessing-Gymnasium, **läuft jahrelang**,
|
|
ca. 8-10 Einzel-SuS (optional 2er-Paarungen), eigener Druckraum mit
|
|
4 Bambu-Lab-Druckern (3 geschlossen + 1 A1 mini). **Unbenotet**, kein Lehrplan,
|
|
freier Zugang. Neue Mitglieder kommen über die Jahre dazu, alte gehen.
|
|
|
|
> **Lesehinweis für Markus:** Dieses Dokument ist Entwurf v2. Es ersetzt v1
|
|
> (2026-05-23) nach einer Reality-Check-Analyse aus vier Perspektiven (neuer
|
|
> SuS / erfahrener SuS / Lehrer / Technik). Wichtige Korrektur gegenüber v1:
|
|
> Wir haben fälschlich „12 Termine" angenommen — die AG ist tatsächlich offen
|
|
> und langfristig. Das ändert mehrere Architektur-Entscheidungen. Vollständige
|
|
> Entscheidungs-Historie: [[decisions]].
|
|
|
|
---
|
|
|
|
## 1. Didaktischer Kern
|
|
|
|
### Onboarding-Pfad statt fester Lehrplan
|
|
|
|
Die AG hat **keinen Curriculum**. Neue Mitglieder bekommen einen
|
|
**Onboarding-Pfad** mit 3 selbst-zertifizierten Lektionen — danach freie
|
|
Wahl, was sie machen wollen.
|
|
|
|
| Lektion | Inhalt | Pflicht für | Nach Abschluss freigeschaltet |
|
|
|---|---|---|---|
|
|
| **L1 Drucker-Kennenlernen + Sicherheit** | Drucker-Übersicht, A1-mini-Hands-Off, Bambu Handy App einrichten, vorbereitetes Modell drucken | Neue | **Slot-Buchung** (V2 — siehe [[../decisions#E-020]]) |
|
|
| **L2 Fremdes Modell wählen + drucken** | Modell auf Printables/MakerWorld suchen, in Bambu Studio slicen, drucken | Neue | Eigene Projekte aus Katalog |
|
|
| **L3 Customizer / parametrisches Modell** | MakerWorld-Customizer: Schlüsselanhänger mit eigenem Namen | Neue | Eigenes-Projekt-Vollzugriff |
|
|
| **L4+ Eigene Modelle zeichnen** | TinkerCAD → OpenSCAD | Frei | — |
|
|
| **Eigene Projekte (Dauer-Modus)** | Idee → Modell → Druck → Iteration → Abschluss mit Reflexion → in Katalog | Frei | — |
|
|
|
|
Nach Onboarding **verschwindet die Onboarding-Karte** aus dem Cockpit (V1 — progressives Cockpit, [[../decisions#E-020]]). Erfahrene SuS sehen nur noch ihre laufenden Projekte, Druckaufträge, Slots.
|
|
|
|
### Warum diese Reihenfolge
|
|
|
|
Quellen: PHBern IdeenSet, inf-schule.de, ZSL Baden-Württemberg.
|
|
- „Druck zuerst, Modellierung später" verhindert Frust.
|
|
- Customizer als Brücke zwischen „fertig laden" und „selbst zeichnen" — fehlt in den meisten Schulkonzepten, MakerWorld macht ihn so leicht zugänglich.
|
|
- L4+ ist optional und nach Interesse — TinkerCAD für klick-basierte, OpenSCAD für code-basierte SuS.
|
|
|
|
### Selbstlern-Loop als Kern (Wachstums-Mechanismus)
|
|
|
|
**Was die Site vom Arduino-Kurs grundsätzlich unterscheidet:** Jedes
|
|
abgeschlossene Projekt wird nach Lehrer-Freigabe in die interne Bibliothek
|
|
aufgenommen. Über die Jahre wächst eine **eigene Projekt-Sammlung** — wertvoller
|
|
als jeder externe Modell-Katalog, weil sie zeigt: „Das wurde bei uns
|
|
schonmal gemacht."
|
|
|
|
Vollständiger Workflow: [[selbstlern-loop]].
|
|
|
|
Kurzfassung:
|
|
1. Neuer SuS **stöbert** im Projekt-Katalog (eigene + ZSL-Seed).
|
|
2. **Wählt** Vorlage oder eigene Idee.
|
|
3. **Arbeitet** im Cockpit (Files, Druckaufträge, Slots).
|
|
4. Beim Abschluss: **Pflicht-Checkliste** (Selbsteinschätzung 🟢🟡🔴 + Cover-Foto **oder** STL + 1 Tag — sonst alles optional).
|
|
5. **Lehrer-Review**: freigeben, Rückfrage, oder hartes Löschen (Penismodell-Fall).
|
|
6. Bei Freigabe: Projekt landet im Katalog, ist für andere SuS sichtbar.
|
|
|
|
### Doku-Hürde
|
|
|
|
8.-Klässler tun sich schwer mit ausführlicher Stand-Notiz. Lösung:
|
|
**Stunden-Beginn-Abfrage** (siehe §7) als „Was machst du heute?"-Mini-Modal,
|
|
das mit einem Klick beantwortbar ist („Ich arbeite an X weiter").
|
|
|
|
Kein KI-Lernhelfer in dieser Site. SuS nutzen Schul-Copilot.
|
|
|
|
---
|
|
|
|
## 2. Architektur — eine Site, drei Zonen
|
|
|
|
> 📎 Detail mit Mermaid-Diagrammen: [[architektur]]. Datenmodell: [[datenmodell]]. Routen: [[routen]].
|
|
> Code-Organisation: **Blueprint-Struktur** von Anfang an (V8, [[../decisions#E-020]]).
|
|
|
|
```
|
|
┌─────────────────────── 3d.lehrstun.de ─────────────────────────┐
|
|
│ │
|
|
│ ÖFFENTLICH (kein Login) │
|
|
│ ───────────────────────── │
|
|
│ • Lektionen (Onboarding-Pfad + freie Module) │
|
|
│ • Software-Sektion (Bambu Studio, Printables, ...) │
|
|
│ • Projekt-Katalog (interner Wachstum + ZSL-Seed) │
|
|
│ • Drucker-Status (Live, anonym) │
|
|
│ • Troubleshooting │
|
|
│ │
|
|
│ ┌── Vorname + Tier-Icon + PIN-Login ─────────────────────┐ │
|
|
│ │ │ │
|
|
│ │ SuS-COCKPIT (PROGRESSIV, V1) │ │
|
|
│ │ ─ Neu: nur Onboarding-Karte + Check-In │ │
|
|
│ │ ─ Onboarding fertig: + eigene Projekte, Druck, Slots │ │
|
|
│ │ ─ Erfahren: voll, ohne Onboarding-Karte │ │
|
|
│ │ Bei Lehrer-Rückfrage: gelbes Banner ganz oben (V6) │ │
|
|
│ └──────────────────────────────────────────────────────────┘ │
|
|
│ │
|
|
│ ADMIN (Passwort, Herb + Markus) │
|
|
│ • Drill-Down-Dashboard (V5): Wer ist heute hier / │
|
|
│ Wartet auf Review / Wer hängt fest / Drucker-Status │
|
|
│ • Projekt-Freigabe-Queue (mit Three.js-Vorschau, V3-Aktion) │
|
|
│ • SuS-Profile, PIN-Generierung, Druckbogen │
|
|
│ • Slot-Priorisierung │
|
|
│ • Drucker-Übersicht + manueller Status-Override │
|
|
│ • Lektionen-/Software-Editor (inline, Whitelist) │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Datenmodell (Kurzfassung)
|
|
|
|
> 📎 Detail mit ERD + Tabellen-Erklärung: [[datenmodell]]. Live im Code: [`database.py`](../database.py).
|
|
|
|
**Kern-Tabellen (gegenüber v1 erweitert):**
|
|
|
|
- `ag_mitgliedschaft` (ersetzt `kurs` — AG ist dauerhaft, nicht trimester-basiert)
|
|
- `profil` (Vorname + Tier + PIN, Pflicht-Login)
|
|
- `paarung` (optional, 2er-Zusammenschluss)
|
|
- `profil_lektion_status` ([[../decisions#E-019]] — Onboarding-Fortschritt, selbst-zertifiziert)
|
|
- `login_lockout` (V7 — persistenter Lockout in DB)
|
|
- `projekt` (vollständiger Lebenszyklus: `status_lebenszyklus`, `selbsteinschaetzung`, `freigabe_status`, `vorlage_projekt_id`)
|
|
- `projekt_datei` (BLOB, 30 MB Limit, abstrahiert)
|
|
- `projekt_tag` (für Suche und Filter)
|
|
- `projekt_rueckfrage` (Lehrer-Notizen pro Projekt)
|
|
- `lehrer_notiz` (allgemeine Notizen vom Lehrer ans SuS-Cockpit)
|
|
- `check_in` (V3-Format mit Modus + optionalem Freitext)
|
|
- `drucker`, `drucker_status`, `druckauftrag`, `slot`, `lektion`, `einstellung`, `aenderung_log`
|
|
|
|
---
|
|
|
|
## 4. Routen (Kurzfassung)
|
|
|
|
> 📎 Vollständige Routen-Tabelle: [[routen]]. Stubs im Code: [`app.py`](../app.py).
|
|
|
|
Blueprint-Aufteilung (V8):
|
|
- `routes/oeffentlich.py` — öffentliche Seiten
|
|
- `routes/profil.py` — Login, Cockpit, eigene Projekte/Aufträge/Slots
|
|
- `routes/admin.py` — Dashboard, Review-Queue, Inline-Edit
|
|
- `routes/api.py` — JSON-Endpunkte (Drucker-Status, Slot-Polling)
|
|
- `services/bambu.py` — Cloud-API-Wrapper (isoliert)
|
|
- `services/datei.py` — File-BLOB-Handling (abstrahiert für spätere S3-Migration)
|
|
|
|
---
|
|
|
|
## 5. Drucker-API-Anbindung
|
|
|
|
> 📎 Detail: [[druckerapi]]. Entscheidungen: [[../decisions#E-005]], [[../decisions#E-006]].
|
|
|
|
- Bambu Cloud-API-Polling vom Hetzner aus, alle ~30 s (Lib: `bambulabs_api`).
|
|
- Inoffiziell, fragil → Fallback: manueller Status-Override durch Lehrer.
|
|
- Lesen: Status, Job, Restzeit. **Kein** Job-Upload von der Site (Developer-Mode-Pflicht wäre Bambu-Cloud-Verlust).
|
|
|
|
---
|
|
|
|
## 6. Slot-System
|
|
|
|
> 📎 Detail mit Sequenz-Diagrammen + UI-Skizze: [[slotsystem]].
|
|
|
|
- **Windhund-Prinzip** als Default, Lehrer kann priorisieren oder verschieben.
|
|
- **Slot-Buchung erst freigeschaltet nach L1 (Sicherheits-Lektion)** — V2, [[../decisions#E-020]].
|
|
- Drucker dürfen über Nacht / Freistunden laufen.
|
|
- Drucker-Ausfall → Admin-Vorschlag „Slot auf anderen Drucker verschieben".
|
|
|
|
---
|
|
|
|
## 7. Stunden-Beginn-Abfrage (V3 — radikal kurz)
|
|
|
|
UI im Cockpit beim ersten Aufruf eines Besuchstages:
|
|
|
|
```
|
|
┌─ Hallo Mia! Was machst du heute? ──────────┐
|
|
│ │
|
|
│ ◉ Ich arbeite an meinem Projekt weiter: │
|
|
│ „Schlüsselanhänger mit Logo" │
|
|
│ │
|
|
│ ○ Neues Projekt anfangen │
|
|
│ ○ Onboarding-Lektion machen │
|
|
│ ○ Drucken (warte auf Drucker) │
|
|
│ ○ Anderen helfen │
|
|
│ ○ Sonstiges │
|
|
│ │
|
|
│ [Optional] kurz, was genau: │
|
|
│ ┌──────────────────────────────────────┐ │
|
|
│ │ │ │
|
|
│ └──────────────────────────────────────┘ │
|
|
│ │
|
|
│ [Los geht's] │
|
|
└──────────────────────────────────────────────┘
|
|
```
|
|
|
|
**Verhaltens-Details (V3 + E-021):**
|
|
- Default-Auswahl ist „Ich arbeite weiter" mit Titel des aktiven Projekts — **ein Klick reicht**.
|
|
- Freitext **ist immer optional**, nicht Pflicht.
|
|
- Nur einmal pro Besuchstag (UNIQUE-Constraint auf `check_in`).
|
|
- Lehrer-Dashboard zeigt alle Antworten des Tages aggregiert (siehe [[lehrer-dashboard]]).
|
|
|
|
---
|
|
|
|
## 8. Software-Sektion
|
|
|
|
| Software | Wofür | Lektion |
|
|
|---|---|---|
|
|
| **Bambu Studio** | Slicer (PC), Pflicht | L1 |
|
|
| **Bambu Handy** | Live-Kamera, Druck-Steuerung | L1 |
|
|
| **Bambu Academy** | Kostenloser Drucker-Kurs mit Zertifikat | L1 |
|
|
| **Printables.com** | Modell-Plattform (sauber, kein NSFW) | L2 |
|
|
| **MakerWorld.com** | Bambu-eigene Plattform + Customizer | L2 + L3 |
|
|
| **TinkerCAD** | Visuelles CAD im Browser, Klassenraum-Modus | L4 |
|
|
| **OpenSCAD** | Parametrisches CAD (Code) | L4+ |
|
|
|
|
**Nicht empfohlen:** Thingiverse (NSFW-Ads), Cults3D (Bezahl-Push).
|
|
|
|
---
|
|
|
|
## 9. Sicherheit + Organisation
|
|
|
|
> 📎 Detail: [[sicherheit]]. Quellen: siehe [[COCKPIT#wichtige-externe-quellen]].
|
|
|
|
- **UKBW-Richtlinie** als Basis für L1.
|
|
- **PLA + PLA+ als Default**, PETG + ABS nur unter Aufsicht (Admin-Toggle).
|
|
- **A1 mini (offen):** explizite Hands-Off-Regel beim Hotend.
|
|
- **Druckraum mit Dauerlüftung** → entspannte Lage.
|
|
|
|
---
|
|
|
|
## 10. ZSL-Material als Seed-Inhalt
|
|
|
|
Bei Kursstart ist die Projekt-Bibliothek leer. Damit Neuzugänge nicht ins Nichts schauen:
|
|
|
|
- **8-10 ZSL-Projekte** aus dem CC-BY-4.0-Material des Landes Baden-Württemberg werden in unser Design **umgearbeitet** (mit Urhebernachweis).
|
|
- Markus + Herb wählen aus den 20+ verfügbaren Projekten gemischte Schwierigkeit.
|
|
- Beschreibungen werden auf unsere Bambu-Drucker + 8-10-SuS-AG angepasst (keine 1:1-PDF-Einbettung).
|
|
- Bilder + STLs werden mit Quellen-Hinweis übernommen.
|
|
- Diese Projekte erscheinen als reguläre Katalog-Karten mit Badge „Vorlagen-Projekt".
|
|
|
|
Über die Jahre **wächst die Bibliothek durch SuS-Projekte selbst** — siehe [[selbstlern-loop]].
|
|
|
|
Details: [[../decisions#E-022]].
|
|
|
|
---
|
|
|
|
## 11. Implementierungs-Etappen (Übersicht)
|
|
|
|
> 📎 Lebende Detail-Version mit Checkboxen: [[etappen]].
|
|
|
|
Etappen sind seit V8 ([[../decisions#E-020]]) **mit Blueprint-Struktur von Anfang an** gedacht:
|
|
|
|
```
|
|
0 ✓ Skelett anlegen (2026-05-23)
|
|
1 Basis: Login + Profile + Onboarding-Status + Inline-Edit + Persistenter Lockout
|
|
2 Cockpit (progressiv, V1) + Check-In + Paarung + Lehrer-Dashboard (V5)
|
|
3 Lektionen + Software-Sektion + Troubleshooting
|
|
4 Drucker-API-Spike (Bambu-Cloud-Auth + Felder-Validierung)
|
|
5 Drucker-Integration + Live-Status + manueller Override
|
|
6 Selbstlern-Loop: Projekt-Katalog + Lebenszyklus + Files + Review + Three.js
|
|
7 Slot-System (gesperrt bis L1, V2) + Druckaufträge
|
|
8 ZSL-Material-Import (8-10 Projekte umgearbeitet)
|
|
9 Deploy + Polish (DNS, nginx, systemd, PummelHummel)
|
|
```
|
|
|
|
Erwarteter Gesamtaufwand: 8-10 Coding-Sitzungen.
|
|
|
|
---
|
|
|
|
## 12. Offene Punkte (lebende Liste)
|
|
|
|
> 📎 Aktuelle Liste: [[offene-fragen]]. Geklärte Punkte stehen in [[decisions]].
|
|
|
|
**Vor Implementation noch zu klären** (mit Markus oder im Doing):
|
|
- Welche 8-10 ZSL-Projekte konkret? (mit Markus)
|
|
- Material-Tracking als späteres Modul nötig? (siehe [[offene-fragen]])
|
|
- Bambu-Cloud-Account-Inhaber (Schul-Account vs. Herb privat)
|
|
- A1-mini-Firmware-Version (für API-Kompatibilität)
|
|
|
|
---
|
|
|
|
## 13. Quellen
|
|
|
|
- **PHBern IdeenSet 3D-Drucken**: https://www.phbern.ch/dienstleistungen/unterrichtsmedien/ideenset-3d-drucken
|
|
- **inf-schule.de 3D-Druck**: https://inf-schule.de/informatiksysteme/3d_druck
|
|
- **ZSL Baden-Württemberg „3D-Druck erleben"**: CC-BY-4.0, im OneDrive-Bücher-Ordner
|
|
- **UKBW Sicherheit (PDF)**: https://www.ukbw.de/fileadmin/user_upload/Sicherer-Umgang-mit-3D-Druckern-in-der-Schule.pdf
|
|
- **Bambu Lab Academy**: https://bambulab.com/en/support/academy
|
|
- **Printables Education**: https://www.printables.com/education
|
|
- **bambulabs_api (Python)**: https://github.com/BambuTools/bambulabs_api
|
|
|
|
---
|
|
|
|
## 14. Was als Nächstes passieren muss
|
|
|
|
1. **Markus liest dieses Konzept** + die Detail-Module ([[selbstlern-loop]], [[lehrer-dashboard]], [[datenmodell]]).
|
|
2. Markus + Herb wählen die 8-10 ZSL-Projekte aus (siehe §10).
|
|
3. **DNS**: `3d.lehrstun.de` als A-Record auf 46.225.114.15 anlegen.
|
|
4. **Etappe 1 starten**: Blueprint-Struktur + Login + Profile + Onboarding-Status (siehe [[etappen]]).
|