Files
3d.lehrstun.de/docs/kurskonzept.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

15 KiB

type, projekt, stand, status, tags
type projekt stand status tags
konzept-hauptdokument 3d.lehrstun.de 2026-05-24 entwurf v2
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.

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.

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


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).