77 lines
7.3 KiB
Markdown
77 lines
7.3 KiB
Markdown
---
|
|
type: log
|
|
projekt: 3d.lehrstun.de
|
|
tags: [changelog]
|
|
---
|
|
|
|
# CHANGELOG — 3d.lehrstun.de
|
|
|
|
Format: [Datum] — Kurz-Beschreibung. Details bei nicht-trivialen Änderungen.
|
|
|
|
## 2026-05-25 — L3 voll geschrieben (Customizer-Workflow)
|
|
- L3 war noch Stub (661 Z) — jetzt 5938 Z. Pädagogisch konsistent zu L1+L2: MakerWorld-Customizer-Konzept, 5-Schritte-Workflow (Modell finden → Customizer → Werte ändern → Generate → drucken), eigener Schlüsselanhänger als Aufgabe, Mini-Aufgabe „selbst denken", Brücke zu L5+ (TinkerCAD wenn Customizer an Grenzen kommt).
|
|
- Live + auf Server ausgerollt via `scripts/lektionen_seed.py` (jetzt mit L3 in der Liste).
|
|
|
|
## 2026-05-25 — LIVE auf https://3d.lehrstun.de + PummelHummel-Integration
|
|
- **PummelHummel/Alph integriert**: feedback_modul/ vom PummelHummel-Projekt kopiert, in app.py via init_feedback_modul registriert. User-Kontext liefert Tier+Vorname statt Tier+Kasten. Widget aktiv ab einstellung.feedback_widget_aktiv='1'.
|
|
- **DNS-A-Record** `3d.lehrstun.de → 46.225.114.15` via Hetzner Cloud DNS-CLI.
|
|
- **Hetzner-Deploy**: Repo geklont nach `/home/herb/3d.lehrstun.de`, venv + pip install, .env mit Admin-Passwort `Lessing3d`, seed.py + lektionen_seed (14 Lektionen) + feedback-Schema.
|
|
- **systemd-Service** `3d-ag.service` (analog arduino-db.service), Port **5058** (5057 war belegt von meta.lehrstun.de uvicorn — app.py liest PORT jetzt aus ENV).
|
|
- **nginx vhost** `3d.lehrstun.de` + certbot HTTPS + auto-redirect HTTP→HTTPS.
|
|
- **Smoke-Test live bestanden**: https://3d.lehrstun.de/ + /lektionen (14) + Admin-Login mit Lessing3d.
|
|
- Bereit für Markus' Alpha-Test als Schüler-Login.
|
|
|
|
## 2026-05-24 — 14 Lektionen aufeinander aufbauend (L1-L14)
|
|
- L4-L14 mit voll geschriebenen Inhalten (3300-4900 Z. pro Lektion).
|
|
- Phasen: A (L1-L3, Onboarding), B (L4-L7, Verstehen + TinkerCAD), C (L8-L11, Projekte + Vertiefung), D (L12-L13, Onshape), E (L14, Capstone).
|
|
- Material-Quellen umgesetzt: NRW-Handreichung, DigiLab A1-mini, Bambu-Wiki, Onshape-Briefing.
|
|
- `scripts/lektionen_seed.py` als idempotenter Loader.
|
|
- `docs/lektionen-plan.md` als Übersicht mit pädagogischer Logik.
|
|
|
|
## 2026-05-24 — Etappe 2 lauffähig (Cockpit progressiv + Check-In + Paarung + Lehrer-Dashboard)
|
|
- **Cockpit progressiv (V1):** zeigt nur Karten, die zum Status passen. Onboarding-Karte verschwindet wenn alle L1-L3 fertig; Paarungs-Karte erscheint immer wenn Paarung aktiv; Drucker-Buchung erst nach L1.
|
|
- **Check-In (V3 + E-021):** Modal beim ersten Cockpit-Aufruf eines Besuchstages, „Ich arbeite weiter" als Default-Ein-Klick-Option, Freitext optional.
|
|
- **Onboarding-Lektion-Status (E-019):** selbst-zertifiziert via `/cockpit/lektion/<nr>/status` (offen → läuft → fertig).
|
|
- **Paarung (E-002):** Anfrage → Cockpit-Banner beim Adressaten → annehmen/ablehnen. Tabelle `profil_anfrage` on-demand angelegt.
|
|
- **Lehrer-Dashboard (V5):** Drill-Down `/admin/dashboard` mit 4 Sektionen (Wer ist heute hier, Wartet auf Review, Drucker-Status, Wer hängt fest) + Schnell-Zahlen + offene Rückfragen.
|
|
- **Quick-Action „Notiz hinterlassen":** Lehrer schreibt aus Dashboard direkt ins SuS-Cockpit (`lehrer_notiz`-Tabelle).
|
|
- **Lektion-Detail-Seite (Minimal):** `/lektionen` + `/lektion/<nr>` mit Markdown-Rendering + Status-Buttons für eingeloggte SuS.
|
|
- **3 Onboarding-Lektionen** als Seeds mit Platzhalter-Inhalt (Herr Rechmann füllt später via Inline-Edit).
|
|
- **Datei-Helper:** `services/cockpit_status.py` + `services/dashboard_status.py` trennen Daten-Logik vom HTTP-Layer.
|
|
- Smoke-Test bestanden (Login als neuer SuS → Onboarding → Check-In → L1 fertig → Paarung mit zweitem SuS → Admin-Dashboard → Lehrer-Notiz → Banner im Cockpit).
|
|
|
|
## 2026-05-24 — Git-Repo angelegt + Gitea-Push
|
|
- Lokales Git-Repo initialisiert (branch `main`).
|
|
- Initial-Commit `4658d49` mit kompletter Konzept v2 + Etappe 1 (alles aus den vorigen CHANGELOG-Eintraegen).
|
|
- Gitea-Repo `admin/3d.lehrstun.de` via API angelegt, SSH-Remote auf Port 2222.
|
|
- `.gitignore` ergaenzt um Obsidian-User-State (`workspace.json`, `cache`, `plugins/`).
|
|
|
|
## 2026-05-24 — Etappe 1 lauffähig
|
|
- **Blueprint-Struktur etabliert** (V8): `routes/oeffentlich.py`, `routes/profil.py`, `routes/admin.py`, `routes/api.py`, `services/auth.py`, `services/bambu.py` (Stub), `services/datei.py` (Stub).
|
|
- **app.py zu Bootstrap umgebaut** (~100 Z.) — registriert Blueprints, definiert Markdown-Filter, Context-Processor, Error-Handler (404/500/501).
|
|
- **database.py mit allen Tabellen aus [[datenmodell]]** — idempotent via `CREATE TABLE IF NOT EXISTS`. Inkl. `profil_lektion_status`, `login_lockout`, `projekt_*`, `lehrer_notiz`, `ag_mitgliedschaft`, `check_in` (E-021), `aenderung_log`.
|
|
- **Auth-Layer** in `services/auth.py`: bcrypt-PIN-Hashing/-Pruefung, persistenter Lockout in DB (V7), Decorators `login_required` + `admin_required` + `onboarding_l1_fertig` (V2).
|
|
- **Profil-Login funktional**: 4-stellige PIN, Rate-Limit 5 Versuche / 5 Min → 15 Min DB-Sperre.
|
|
- **Admin-Login + Profile-Verwaltung**: Neue Profile mit Auto-PIN-Generation (einmalig sichtbar), PIN-Reset, aktiv-Toggle, Druckbogen für PIN-Karten (CSS-Print).
|
|
- **Inline-Edit-Infrastruktur** in `routes/admin.py`: `ERLAUBTE_INLINE_TABELLEN`-Whitelist, `/admin/inline-edit`-POST mit Audit-Log in `aenderung_log`.
|
|
- **seed.py** mit Initial-Daten: AG `lessing-3d-ag`, 4 Drucker (3 geschlossen + A1 mini), 3 Default-Einstellungen.
|
|
- **Templates portiert**: `login.html`, `login_pin.html`, `cockpit_stub.html`, `admin_login.html`, `admin_profile.html`, `admin_profile_karten.html`, `501.html`.
|
|
- **Smoke-Test bestanden**: Admin-Login, Profil-Anlage, SuS-Login mit PIN, Falsche-PIN-Lockout-Logging — alles funktional.
|
|
|
|
## 2026-05-24 — Reality-Check + Selbstlern-Loop (Konzept v2)
|
|
- Reality-Check-Analyse aus vier Perspektiven (neuer SuS / erfahrener SuS / Lehrer / Technik) + Vergleich mit `arduino.lehrstun.de`. Plan-Datei: `~/.claude/plans/f-hre-noch-einmal-eina-cosmic-wind.md` (approved).
|
|
- **Wichtige Konzept-Korrektur:** AG ist offen, jahrelang, keine festen Termine. Pflicht-Lektionen werden zu Onboarding-Pfad für Neue.
|
|
- **Neue Module dokumentiert:** [[selbstlern-loop]] (Projekt-Lebenszyklus + interne Bibliothek), [[lehrer-dashboard]] (Drill-Down: Wer ist hier / Wartet auf Review / Wer hängt fest).
|
|
- **Entscheidungen E-012 bis E-022 dokumentiert** ([[decisions]]): u.a. Selbstlern-Loop, Vernetzung Variante 1, Feedback A-Variante, Three.js, Blueprint-Struktur, persistenter Login-Lockout, ZSL-Material-Strategie.
|
|
- **Reichhaltig überarbeitet:** [[kurskonzept]] auf v2, [[datenmodell]] (5 neue Tabellen), [[routen]] (Selbstlern-Loop-Routen + Drill-Down), [[etappen]] (mit Blueprint von Anfang an), [[offene-fragen]] (geklärtes raus).
|
|
- COCKPIT.md mit erweitertem Mermaid-Diagramm und neuen Wikilinks.
|
|
|
|
## 2026-05-23
|
|
- Projekt-Skelett angelegt: [[CLAUDE]], [[kurskonzept]], [[decisions]], [[README]], leeres Flask-Gerüst (`app.py`, `database.py`, `tiere.py`).
|
|
- Recherche zu Bambu Lab Education, Modell-Plattformen, didaktischen Vorbildern, Bambu Cloud-API durchgeführt.
|
|
- Entscheidungen E-001 bis E-011 dokumentiert ([[decisions]]).
|
|
- Vault-Struktur ergänzt: `.obsidian/`-Konfig, [[COCKPIT]] als Startseite, Konzept-Module
|
|
([[architektur]], [[datenmodell]], [[routen]], [[druckerapi]], [[slotsystem]], [[sicherheit]],
|
|
[[etappen]], [[offene-fragen]], [[glossar]]), Lektions-Stubs L1/L2/L3, Software-Tool-Stubs
|
|
(Bambu Studio/Handy, Printables, MakerWorld, TinkerCAD, OpenSCAD).
|