Files
lernbar/docs/ANLEITUNG.md
T
Florian WildeandClaude Opus 5.5 31d7779f45 Bremse gegen Passwortraten
Nach fuenf Fehlversuchen wird eine E-Mail-Adresse gesperrt, erst eine
Minute, dann doppelt so lang, hoechstens 15 Minuten. Gezaehlt wird je
Adresse, auch fuer unbekannte - sonst verriete die Sperre, welche Konten
es gibt. Waehrend der Sperre kommt auch das richtige Passwort nicht durch.

Jeder Versuch zaehlt sofort und wird bei Erfolg zurueckgenommen. Zwischen
Sperrpruefung und Zaehlen liegt damit kein await; gleichzeitige Anfragen
kommen so nicht alle an der Sperre vorbei.

Der Zaehler liegt im Speicher des einen Prozesses. Ein Neustart setzt ihn
zurueck - der Notausgang, falls sich das einzige Ausbilderkonto aussperrt.
Beim Aufraeumen wird eine laufende Sperre nie verdraengt.

Die Containerabnahme prueft die Sperre im laufenden Abbild. Das
Abnahmeprotokoll ist gegen diesen Stand neu erzeugt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 18:25:04 +02:00

414 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Lern-Bar – Anleitung
Diese Anleitung zeigt die Anwendung so, wie sie im Betrieb benutzt wird: erst
der Ausbilder, dann der Azubi. Wer die Lern-Bar aufsetzen will, findet das im
[README](../README.md) – hier geht es um den Umgang damit.
Die Bilder stammen aus einer laufenden Anwendung mit den Beispielinhalten und
werden mit `npm run screenshots` neu erzeugt. Was hier steht, ist also nicht
gemalt, sondern gemessen.
---
## Inhalt
**Für den Ausbilder**
1. [Anmelden](#1-anmelden)
2. [Ein Azubikonto anlegen](#2-ein-azubikonto-anlegen)
3. [Den Wochenplan festlegen](#3-den-wochenplan-festlegen)
4. [Eine Praxisaufgabe abnehmen](#4-eine-praxisaufgabe-abnehmen)
5. [Das Berichtsheft abzeichnen](#5-das-berichtsheft-abzeichnen)
6. [Eine Lernzielkontrolle korrigieren](#6-eine-lernzielkontrolle-korrigieren)
7. [Die Rahmenplanabdeckung lesen](#7-die-rahmenplanabdeckung-lesen)
8. [Ein Feedbackgespräch führen](#8-ein-feedbackgespräch-führen)
**Für den Azubi**
9. [Die Woche](#9-die-woche)
10. [Handouts lesen und suchen](#10-handouts-lesen-und-suchen)
11. [Merkkarten lernen](#11-merkkarten-lernen)
12. [Eine Praxisaufgabe abgeben](#12-eine-praxisaufgabe-abgeben)
13. [Eine Checkliste abarbeiten](#13-eine-checkliste-abarbeiten)
14. [Das Berichtsheft führen](#14-das-berichtsheft-führen)
15. [Eine Lernzielkontrolle schreiben](#15-eine-lernzielkontrolle-schreiben)
**Überall**
16. [Auf dem Handy](#16-auf-dem-handy)
17. [Ohne Netz](#17-ohne-netz)
18. [Hell und dunkel](#18-hell-und-dunkel)
19. [Drucken](#19-drucken)
20. [Wenn etwas nicht geht](#20-wenn-etwas-nicht-geht)
---
## Für den Ausbilder
### 1. Anmelden
![Anmeldung](bilder/01-anmelden.png)
Es gibt **keine Selbstregistrierung**. Das erste Ausbilderkonto legst du auf der
Kommandozeile an (siehe README, Abschnitt *In fünf Minuten zum laufenden
System*), alle weiteren Konten entstehen in der Verwaltung.
Nach dem Anmelden landest du auf deinem Überblick: was in dieser Woche ansteht,
was offen ist, was auf dich wartet.
![Überblick des Ausbilders](bilder/02-ausbilder-ueberblick.png)
---
### 2. Ein Azubikonto anlegen
**Verwaltung → Neues Azubikonto**
![Verwaltung](bilder/03-verwaltung.png)
Du gibst Name, E-Mail-Adresse, ein erstes Passwort (mindestens 10 Zeichen) und
den Ausbildungsbeginn an; Probezeit und geplantes Ende sind freiwillig.
Das Passwort gibst du dem Azubi **persönlich** weiter – er kann es danach selbst
ändern. Einsehbar ist es danach nirgends mehr, auch für dich nicht: In der
Datenbank liegt nur ein Argon2id-Hash. Hat jemand sein Passwort vergessen,
setzt du in der Verwaltung ein neues; das alte lässt sich nicht anzeigen.
Der Ausbildungsbeginn ist wichtiger, als er aussieht. Aus ihm ergeben sich das
Ausbildungsjahr und damit die Wochennummern im Berichtsheft.
> **Ein Azubi hat genau einen Ausbilder.** Das ist keine Einschränkung, die sich
> später aufheben ließe, sondern die Grundlage der Rechteprüfung: Der Azubi
> sieht ausschließlich seine eigenen Daten, der Ausbilder die seiner Azubis.
---
### 3. Den Wochenplan festlegen
**Wochenplan**
![Wochenplan](bilder/04-wochenplan.png)
Die Wochen selbst stehen als Dateien unter `content/wochen/`. Hier legst du
fest, **wann** welche Woche läuft, und kannst sie verschieben – Urlaub,
Berufsschulblock, ein Projekt, das dazwischenkommt.
Verschiebst du eine Woche, wandern die folgenden mit. Was der Azubi schon
erledigt hat, bleibt erledigt.
---
### 4. Eine Praxisaufgabe abnehmen
**Aufgaben → eine abgegebene Aufgabe öffnen**
![Aufgabe abnehmen](bilder/05-aufgabe-abnahme.png)
Der Azubi gibt eine Aufgabe mit seiner Lösung und optional mit Anhängen ab –
meist Fotos vom Handy. Du siehst die Abnahmekriterien aus der Aufgabendatei und
hakst ab, was erfüllt ist.
Eine Aufgabe ist **abgenommen**, wenn du sie abgenommen hast. Nicht, wenn der
Azubi sie abgegeben hat. Genau dieser Unterschied macht sie später in der
Rahmenplanabdeckung zu einem belastbaren Nachweis.
Reicht etwas nicht, gibst du sie mit einer Bemerkung zurück. Der Azubi sieht,
was fehlt, und kann nachbessern.
---
### 5. Das Berichtsheft abzeichnen
**Berichtshefte → ein Wochenblatt öffnen**
![Wochenblatt](bilder/22-wochenblatt.png)
Der Ausbildungsnachweis ist der einzige Teil dieser Anwendung, den das Gesetz
verlangt. Deshalb ist er der sorgfältigste.
Du liest das Blatt, siehst die Warnhinweise (leere Tage, Floskeln, mögliche
Betriebs- oder Personennamen) und zeichnest ab. **Nach dem Abzeichnen ist das
Blatt unveränderlich** – auch für dich. Willst du eine Änderung, gibst du es
frei; das wird protokolliert.
Über *Als PDF* bekommst du das Blatt im IHK-Layout, mit Unterschriftenfeldern.
Ein Beispiel liegt unter [`docs/beispiel-ausbildungsnachweis.pdf`](beispiel-ausbildungsnachweis.pdf).
---
### 6. Eine Lernzielkontrolle korrigieren
**Kontrollen**
![Kontrollen](bilder/23-kontrollen.png)
Du gibst eine Kontrolle frei, der Azubi schreibt sie, du korrigierst. Punkte je
Frage, daraus Prozent, daraus die Note nach dem **IHK-Notenschlüssel**
(92/81/67/50/30 %).
![Ergebnis einer Kontrolle](bilder/24-kontrolle-ergebnis.png)
> **Die Musterlösung bekommt der Azubi erst nach dem Absenden zu sehen.** Vorher
> ist sie über keine Schnittstelle abrufbar – nicht im HTML, nicht in der
> Nachladung, nirgends. Das wird serverseitig entschieden, nicht in der
> Oberfläche, und mit einem eigenen Prüfskript nachgewiesen
> (`scripts/pruefungen/musterloesung-dichtheit.mjs`).
---
### 7. Die Rahmenplanabdeckung lesen
**Auswertung**
![Auswertung](bilder/06-auswertung.png)
Das ist die Ansicht, die gegenüber der IHK zählt. Sie beantwortet die Frage, die
im Prüfungsausschuss gestellt wird: *Ist der Ausbildungsrahmenplan abgedeckt?*
Statt „erledigt / offen" gibt es **vier Lagen**:
| Lage | Bedeutung |
|---|---|
| **vermittelt** | eine abgenommene Praxisaufgabe oder ein abgeschlossener Checklisten-Durchlauf, **oder** mindestens zwei gelesene Handouts |
| **angefangen** | etwas erledigt, aber noch nicht genug – ein gelesenes Handout allein genügt bewusst nicht |
| **geplant** | Material vorhanden, aber unbearbeitet |
| **ohne Inhalt** | zu dieser Position gibt es im ganzen Lehrgang nichts |
Die vierte Lage ist die wichtigste und wird rot ausgewiesen:
![Positionen ohne Inhalt](bilder/07-rahmenplanabdeckung.png)
**Das ist keine Lücke beim Azubi, sondern eine im Lehrgang.** Dort hilft kein
Lernen, sondern nur ein neues Handout oder eine neue Aufgabe unter `content/`.
In den Beispielinhalten betrifft das fünf Positionen: A4, A10, C1, C2 und C5.
Jede Position führt ihre einzelnen Nachweise mit Kürzel und Zustand auf und
nennt ihre amtliche Fundstelle in der Verordnung. Wenn jemand fragt, worauf sich
die Bewertung stützt, steht die Antwort da.
---
### 8. Ein Feedbackgespräch führen
**Feedback → Neues Gespräch anlegen**
![Feedbackgespräche](bilder/08-feedback-liste.png)
Monatlich, mit Leitfaden und Bewertungsbogen. Der Ablauf:
1. Du legst das Gespräch an und trägst **deine** Einschätzung ein: acht Kriterien
auf einer Skala von 1 bis 5, dazu Stärken, Entwicklungsfelder und die
vereinbarten Ziele.
2. Der Azubi trägt **seine** Selbsteinschätzung ein. Er sieht deine Freitexte,
kann sie aber nicht ändern – und du kannst seine Selbsteinschätzung nicht
eintragen. Eine Selbsteinschätzung, die der Ausbilder eintragen könnte, wäre
keine.
3. Wo beide um **zwei Stufen oder mehr** auseinanderliegen, wird das
hervorgehoben. Genau darüber lohnt das Gespräch – nicht über die Zahlen,
sondern über die Stellen, an denen sie auseinandergehen.
4. Beide bestätigen. Danach ist das Gespräch **unveränderlich**.
![Feedbackgespräch](bilder/09-feedbackgespraech.png)
*Als PDF für die Akte* gibt beide Einschätzungen nebeneinander aus, mit
Unterschriftenfeldern. Abweichungen sind auch dort markiert.
> Die Kriterien und der Leitfaden stehen in
> `content/feedbackgespraech.yaml` und lassen sich an den eigenen Betrieb
> anpassen. Ein bereits geführtes Gespräch behält seine Fassung, auch wenn du
> die Vorlage später änderst.
---
## Für den Azubi
### 9. Die Woche
![Woche des Azubis](bilder/10-azubi-woche.png)
Die Startseite zeigt genau eine Woche: das Thema, was diese Woche zu tun ist,
was schon erledigt ist, was drängt. Kein Dashboard mit zwölf Kacheln – die
Frage lautet „Was mache ich jetzt?", nicht „Wie ist meine Gesamtlage?".
---
### 10. Handouts lesen und suchen
![Handouts](bilder/11-handouts-liste.png)
Die Handouts sind der Lesestoff: kurz, mit Beispielen, jeweils einem Thema
zugeordnet. Die Suche geht über Titel und Volltext.
![Suche](bilder/12-handouts-suche.png)
![Ein Handout](bilder/13-handout-n3.png)
Unten markierst du ein Handout als gelesen. Das ist keine Spielerei: In der
Auswertung zählen gelesene Handouts als **stützende** Nachweise für die
Rahmenplanabdeckung.
Fachbegriffe, die dir unterwegs begegnen, stehen im **Glossar** – kurz erklärt,
mit Querverweisen.
![Glossar](bilder/15-glossar.png)
---
### 11. Merkkarten lernen
![Merkkarten](bilder/14-merkkarten.png)
Die Karten gehören zu den Handouts und kommen nach dem Prinzip der
**Wiederholung nach Zeitabstand** wieder: Was sitzt, kommt später wieder; was
nicht sitzt, heute noch einmal.
Im Lernmodus:
- **Antippen** oder **Leertaste** – Karte umdrehen
- **1 / 2 / 3** – nochmal / unsicher / sitzt
- **Wischen** nach rechts für „sitzt", nach links für „nochmal"
Zehn Minuten am Tag reichen. Wer das durchhält, hat vor der Prüfung nichts
nachzuholen.
---
### 12. Eine Praxisaufgabe abgeben
![Aufgaben](bilder/16-aufgaben-liste.png)
![Eine Aufgabe](bilder/17-aufgabe-azubi.png)
Du liest den Auftrag, siehst die Abnahmekriterien vorher – du weißt also, woran
du gemessen wirst –, schreibst deine Lösung und hängst an, was dazugehört.
Fotos vom Handy gehen direkt.
Dann gibst du ab. Der Ausbilder nimmt ab oder gibt zurück, mit Bemerkung.
---
### 13. Eine Checkliste abarbeiten
![Checklisten](bilder/18-checklisten.png)
Checklisten sind für Abläufe, die immer gleich gehen: einen Arbeitsplatz
übergeben, Windows installieren, einen Rechner zerlegen. Du startest einen
Durchlauf und hakst Schritt für Schritt ab.
![Ein Durchlauf](bilder/19-checklisten-lauf.png)
Ein Durchlauf **kopiert die Schritte bei seinem Start**. Ändert jemand die
Checkliste, während du sie abarbeitest, bleibt dein Durchlauf so, wie du ihn
begonnen hast. Am Ende gibt es ein PDF – ein Beispiel liegt unter
[`docs/beispiel-checkliste.pdf`](beispiel-checkliste.pdf).
---
### 14. Das Berichtsheft führen
![Berichtsheft](bilder/21-berichtsheft.png)
Pro Kalenderwoche ein Blatt, gegliedert nach Tagen, mit Stunden. Die Anwendung
hilft an drei Stellen:
- **Vorschläge** aus dem, was du in der Woche tatsächlich gemacht hast:
abgenommene Aufgaben, abgeschlossene Checklisten, gelesene Handouts.
- **Prüfung vor dem Abgeben**: leere Tage, Floskeln („diverse Tätigkeiten",
„wie immer"), verdächtige Namen von Firmen oder Personen. Der
Ausbildungsnachweis geht an die IHK – da haben Kundennamen nichts verloren.
- **Formulierungshilfe**: aus „Drucker repariert" wird „Fehlerbild aufgenommen,
Fixiereinheit getauscht, Testdruck geprüft, Ticket dokumentiert".
Nach dem Abzeichnen ist das Blatt unveränderlich.
---
### 15. Eine Lernzielkontrolle schreiben
Der Ausbilder gibt die Kontrolle frei, du siehst sie unter *Kontrollen*. Du
schreibst deine Antworten und sendest ab.
**Erst nach dem Absenden** siehst du die Musterlösung – vorher nicht, und auch
nicht über Umwege. Das ist keine Gängelei, sondern der Sinn der Sache: Eine
Kontrolle, deren Lösung vorher abrufbar wäre, misst nichts.
---
## Überall
### 16. Auf dem Handy
Die Anwendung ist für das Handy gebaut, nicht dafür angepasst. Der Azubi hat es
in der Tasche, nicht den Laptop.
| Handout | Lernmodus, Frage | Lernmodus, Antwort |
|---|---|---|
| ![Handout auf dem Handy](bilder/30-handy-handout.png) | ![Frage](bilder/31-handy-lernmodus-frage.png) | ![Antwort](bilder/32-handy-lernmodus-antwort.png) |
**Auf den Startbildschirm legen:** Die Lern-Bar ist eine installierbare
Anwendung.
- *Android (Chrome):* Menü → **App installieren**
- *iPhone (Safari):* Teilen → **Zum Home-Bildschirm**
Danach startet sie ohne Adresszeile und mit eigenem Symbol.
---
### 17. Ohne Netz
Im Serverraum, im Keller, im Zug gibt es kein Netz. Deshalb:
- **Merkkarten** und **Handouts, die du schon einmal geöffnet hattest**,
funktionieren weiter.
- Deine **Bewertungen werden gemerkt** und gehen ab, sobald du wieder verbunden
bist. Eine schmale Leiste sagt dir, wie viele warten – und meldet sich, wenn
sie angekommen sind.
- Der Tag zählt, an dem du **gelernt** hast, nicht der Tag des Absendens.
Was **nicht** offline liegt: Lernzielkontrollen, Berichtsheft, Bewertungen,
Feedbackgespräche, Anhänge und jedes PDF. Das ist Absicht. Diese Dinge stehen
hinter einer eigenen Rechteprüfung, und was im Browserspeicher liegt, ist an
dieser Prüfung vorbei.
Auf einem geteilten Gerät wird beim Abmelden alles Zwischengespeicherte
weggeräumt.
---
### 18. Hell und dunkel
![Dunkle Fassung](bilder/20-dunkel.png)
Oben rechts in der Kopfzeile schaltest du um. Die Einstellung bleibt auf dem
Gerät. Beim Drucken wird immer hell gedruckt, auch wenn du dunkel eingestellt
hast – sonst käme schwarzes Papier aus dem Drucker.
---
### 19. Drucken
Für die Dokumente, die eine Unterschrift tragen, gibt es **PDFs**:
Wochenblatt, Checklisten-Durchlauf, Feedbackgespräch.
Für alles andere gibt es einen **Druckknopf**: Handout, Glossar, Auswertung. Die
Navigation, Knöpfe und Hinweise werden nicht mitgedruckt, Karten werden nicht
mitten durchgeschnitten, aufklappbare Abschnitte drucken aufgeklappt.
---
### 20. Wenn etwas nicht geht
| Beobachtung | Woran es liegt |
|---|---|
| „Zu viele Fehlversuche" bei der Anmeldung | Nach fünf falschen Passwörtern wird die Adresse für eine Minute gesperrt, bei weiteren Fehlversuchen länger, höchstens 15 Minuten. Abwarten – oder Passwort vom Ausbilder neu setzen lassen. Hat sich das einzige Ausbilderkonto ausgesperrt: `docker compose restart lernbar` setzt die Sperre zurück. |
| „Diese Seite gibt es nicht" bei fremden Daten | Kein Fehler, sondern die Rechteprüfung. Ob es zu einer Kennung überhaupt Daten gibt, geht Unbefugte nichts an – deshalb 404 und nicht „kein Zugriff". |
| Die Anwendung startet nicht, nennt aber Datei und Zeile | Ein Inhaltsfehler unter `content/`. Die Meldung sagt genau, wo. `npm run inhalte:pruefen` prüft ohne Start. |
| Ein Anhang lässt sich nicht hochladen | Über 25 MB. Bei einem Reverse Proxy zusätzlich `client_max_body_size 30m` setzen (siehe README). |
| Ein abgezeichnetes Blatt lässt sich nicht ändern | So gewollt. Der Ausbilder kann es freigeben; das wird protokolliert. |
| Offline erscheint „Kein Netz" | Diese Seite lag nicht auf dem Gerät. Merkkarten und schon geöffnete Handouts gehen weiter. |
Bleibt etwas offen: `docker compose logs -f` zeigt, was der Server sagt, und
`/api/gesundheit` antwortet nur dann mit 200, wenn die Datenbank ansprechbar
ist.