init: extract ida-ada-coach from qognio-bot-widget-template@d2c816f
Source files (src/) and rendered bundle (www/) extracted on 2026-04-29T01:35:47+02:00. Adds nginx:alpine Dockerfile + docker-compose.yml (Caddy-labels) so the bot runs stand-alone or as a per-customer template clone. Parent monorepo commit: d2c816f3edbc9760802a11b29ff4151c7aad4b46 Bot version: 2026-04-25
This commit is contained in:
commit
c5efac71fa
16 changed files with 3704 additions and 0 deletions
7
.dockerignore
Normal file
7
.dockerignore
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
.git
|
||||
.gitignore
|
||||
README.md
|
||||
bot.json
|
||||
src/
|
||||
docker-compose.yml
|
||||
*.md
|
||||
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
.DS_Store
|
||||
*.log
|
||||
*.tmp
|
||||
node_modules/
|
||||
13
Dockerfile
Normal file
13
Dockerfile
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# Static-bundle bot — nginx:alpine serves www/ on port 80.
|
||||
FROM nginx:1.27-alpine
|
||||
|
||||
# nginx config: gzip + cache headers + index.html no-store
|
||||
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||
|
||||
# Static bundle
|
||||
COPY www/ /usr/share/nginx/html/
|
||||
|
||||
# Run as non-root via nginx's built-in unprivileged image features
|
||||
EXPOSE 80
|
||||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||||
CMD wget -q --spider http://127.0.0.1/index.html || exit 1
|
||||
67
README.md
Normal file
67
README.md
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
# Ida — AdA-Prüfungscoach
|
||||
|
||||
Ida — gamifizierter Coach für den Ausbilder-Eignungsschein (AEVO). Schriftliche + praktische IHK-Prüfung. Läuft im deutschen Bunker.
|
||||
|
||||
```
|
||||
slug : ida-ada-coach
|
||||
version : 2026-04-25
|
||||
accent : #10b981
|
||||
runtime : nginx:alpine (static bundle)
|
||||
template : qognio-bot-template-core (former qognio-bot-widget-template)
|
||||
```
|
||||
|
||||
## Layout
|
||||
|
||||
```
|
||||
.
|
||||
├── src/ source — config.yaml, welcome.html, curricula.json, etc.
|
||||
├── www/ rendered, directly servable static bundle
|
||||
├── Dockerfile nginx:alpine + www/ → port 80
|
||||
├── docker-compose.yml bot-host pattern (Caddy-labels, restart unless-stopped)
|
||||
├── nginx.conf gzip + cache + SPA fallback
|
||||
└── bot.json metadata + parent_core_commit
|
||||
```
|
||||
|
||||
## Run locally
|
||||
|
||||
```bash
|
||||
docker compose up --build
|
||||
# → http://localhost (you'll need to tweak ports for local-only use)
|
||||
```
|
||||
|
||||
## Re-render after upstream core changes
|
||||
|
||||
This repo only stores src + rendered output; the rendering engine lives in
|
||||
`qognio-bot-template-core`. To pull in core changes:
|
||||
|
||||
```bash
|
||||
cd /path/to/qognio-bot-template-core
|
||||
./scripts/render.sh ida-ada-coach --bot-repo /path/to/this/repo
|
||||
git -C /path/to/this/repo commit -am "render: refresh from core@<sha>"
|
||||
```
|
||||
|
||||
## Per-customer copy (template usage)
|
||||
|
||||
This repo is a **template**. To clone for a customer:
|
||||
|
||||
```bash
|
||||
git clone <this-repo> my-customer-ida-ada-coach
|
||||
cd my-customer-ida-ada-coach
|
||||
# tweak src/config.yaml (slug, bot_key_value, accent), src/welcome.html, src/curricula.json
|
||||
docker compose -f docker-compose.yml up --build
|
||||
```
|
||||
|
||||
## Deploy to qognio bot-host (.42 LXC pattern — legacy)
|
||||
|
||||
The bot-manager spawns LXC containers named after the slug. Push www/ via:
|
||||
|
||||
```bash
|
||||
ssh fmh@46.243.203.42
|
||||
sudo lxc file push /tmp/www/* ida-ada-coach/var/www/html/
|
||||
```
|
||||
|
||||
(Or run the docker-compose pattern on a Docker host — same network as Caddy.)
|
||||
|
||||
---
|
||||
|
||||
Generated by `qognio-bot-template-core/scripts/extract-to-repo.sh` on 2026-04-29T01:35:47+02:00.
|
||||
14
bot.json
Normal file
14
bot.json
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"slug": "ida-ada-coach",
|
||||
"name": "Ida",
|
||||
"title": "AdA-Prüfungscoach",
|
||||
"tagline": "Dein AdA-Prüfungscoach",
|
||||
"description": "Ida — gamifizierter Coach für den Ausbilder-Eignungsschein (AEVO). Schriftliche + praktische IHK-Prüfung. Läuft im deutschen Bunker.",
|
||||
"version": "2026-04-25",
|
||||
"accent": "#10b981",
|
||||
"extracted_from": "qognio-bot-widget-template",
|
||||
"parent_core_commit": "d2c816f3edbc9760802a11b29ff4151c7aad4b46",
|
||||
"extracted_at": "2026-04-29T01:35:47+02:00",
|
||||
"runtime": "nginx:alpine",
|
||||
"default_port": 80
|
||||
}
|
||||
20
docker-compose.yml
Normal file
20
docker-compose.yml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# Stand-alone bot container.
|
||||
# Designed for the "caddy" external network on the bot host (qognio pattern).
|
||||
# Override the hostname via SLUG env var if you reuse this template per customer.
|
||||
services:
|
||||
bot:
|
||||
build: .
|
||||
image: qognio/bot-ida-ada-coach:${TAG:-latest}
|
||||
container_name: bot-ida-ada-coach
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: "ida-ada-coach.on.qognio.com"
|
||||
caddy.reverse_proxy: "{{upstreams 80}}"
|
||||
qognio.bot.slug: "ida-ada-coach"
|
||||
qognio.bot.version: "2026-04-25"
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
27
nginx.conf
Normal file
27
nginx.conf
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
root /usr/share/nginx/html;
|
||||
index index.html;
|
||||
|
||||
# gzip
|
||||
gzip on;
|
||||
gzip_vary on;
|
||||
gzip_types text/css application/javascript application/json image/svg+xml text/plain;
|
||||
gzip_min_length 512;
|
||||
|
||||
# index.html: never cache (so welcome screen / wiring updates land instantly)
|
||||
location = /index.html {
|
||||
add_header Cache-Control "no-store, must-revalidate" always;
|
||||
}
|
||||
|
||||
# static assets: cache 1h
|
||||
location ~* \.(?:css|js|json|svg|png|jpe?g|webp|gif|ico|woff2?)$ {
|
||||
add_header Cache-Control "public, max-age=3600" always;
|
||||
try_files $uri =404;
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
}
|
||||
20
src/check-badges.js
Normal file
20
src/check-badges.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// Erste Unterweisung — 1 korrekte Antwort im Vier-Stufen-Modul (Kernmodul HF 3)
|
||||
if ((state.moduleCorrect && state.moduleCorrect['vier-stufen'] >= 1)) unlockBadge('erste_unterweisung');
|
||||
// Paragraphen-Profi — BBiG/JArbSchG zusammen >= 10 korrekt (eignung-betrieb + vertrag + jugendarbeitsschutz)
|
||||
const paraSum = ((state.moduleCorrect && state.moduleCorrect['eignung-betrieb']) || 0)
|
||||
+ ((state.moduleCorrect && state.moduleCorrect['vertrag']) || 0)
|
||||
+ ((state.moduleCorrect && state.moduleCorrect['jugendarbeitsschutz']) || 0);
|
||||
if (paraSum >= 10) unlockBadge('paragraphen_profi');
|
||||
// 4-Stufen-Meister:in — Vier-Stufen-Methode-Quiz mind. 5 korrekt
|
||||
if ((state.moduleCorrect && state.moduleCorrect['vier-stufen'] >= 5)) unlockBadge('4_stufen_meister');
|
||||
// Lehrgespräch-Profi — Flashcards Lehrgespräch durch
|
||||
if ((state.modulePassedFlash && state.modulePassedFlash['lehrgespraech'])) unlockBadge('lehrgespraech_pro');
|
||||
// Didaktik-Nerd — Lerntheorien-Modul (>= 5 korrekt)
|
||||
if ((state.moduleCorrect && state.moduleCorrect['lerntheorien'] >= 5)) unlockBadge('didaktik_nerd');
|
||||
// AdA-Meister:in — 16 von 20 Modulen mit ≥80% Quiz-Score abgeschlossen (~80% Master-Coverage)
|
||||
if ((state.completedCurricula || []).length >= 16) unlockBadge('ada_meister');
|
||||
// Streak 7
|
||||
if (state.maxStreak >= 7) unlockBadge('streak_7');
|
||||
// Night Owl
|
||||
const h = new Date().getHours();
|
||||
if (h >= 22) unlockBadge('night_owl');
|
||||
45
src/config.yaml
Normal file
45
src/config.yaml
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
slug: ida-ada-coach
|
||||
bot_name: Ida
|
||||
bot_title: AdA-Prüfungscoach
|
||||
brand_letter: I
|
||||
title: "Ida · Dein AdA-Prüfungscoach"
|
||||
tagline: "AdA-Prüfungscoach"
|
||||
tagline_short: "Dein AdA-Prüfungscoach"
|
||||
meta_description: "Ida — gamifizierter Coach für den Ausbilder-Eignungsschein (AEVO). Schriftliche + praktische IHK-Prüfung. Läuft im deutschen Bunker."
|
||||
bot_key_var: __IDA_KEY__
|
||||
bot_key_value: qb_851f77553fdf
|
||||
ls_prefix: ida
|
||||
bot_version: "2026-04-25"
|
||||
|
||||
# Color theme (Ida — emerald)
|
||||
accent: "#10b981"
|
||||
accent_2: "#34d399"
|
||||
accent_dark: "#047857"
|
||||
accent_rgb: "16, 185, 129"
|
||||
success_color: "#06b6d4"
|
||||
msg_strong_color: "#a7f3d0"
|
||||
|
||||
# UI Labels
|
||||
tab_flash_label: Flashcards
|
||||
tab_curriculum_label: AEVO-Atlas
|
||||
curriculum_long_label: AEVO-Atlas
|
||||
|
||||
# Bot personality
|
||||
quiz_intro_hint: "Wähle ein Modul — Ida generiert handlungsorientierte AEVO-Fragen."
|
||||
quiz_verb: erstellt
|
||||
quiz_noun: "AEVO-Fragen"
|
||||
flash_intro_hint: "Ida erstellt Karteikarten — Paragraphen, Methoden, Begriffe. Bewerte dein Erinnerungsvermögen — das System wiederholt schwere Karten öfter (SM-2)."
|
||||
flash_verb: erstellt
|
||||
|
||||
# DRIFT NOTE: Ida ist V3 (V2 + EXAM-modus + Pruefungsreif badge).
|
||||
# Live-Code unterscheidet sich vom Template auch in:
|
||||
# - levels[] verwendet `name` statt `title` als Property
|
||||
# - unlockBadge sagt `(badge.name || badge.title)`
|
||||
# - examPassed/examBest state-Felder
|
||||
# - separate EXAM/UNTERWEISUNG branches im struct-chat-renderer
|
||||
# - inline-deepdive-bar (nicht refactored)
|
||||
# Diese Unterschiede sind Functional-Drift und werden NICHT vom
|
||||
# Render-Output reproduziert. Re-Deploy würde Code-Modernisierung
|
||||
# bedeuten (Drop EXAM-mode, Modernize CheckBadges, Switch name→title).
|
||||
# Empfehlung: Ida bleibt vorerst manual-managed bis EXAM/UNTERWEISUNG
|
||||
# als optionaler Patch ins Core-Template integriert werden.
|
||||
266
src/curricula.json
Normal file
266
src/curricula.json
Normal file
|
|
@ -0,0 +1,266 @@
|
|||
{
|
||||
"version": "2026-04-25",
|
||||
"updated": "2026-04-25",
|
||||
"badges": [
|
||||
{"id": "erste_unterweisung", "name": "Erste Unterweisung", "desc": "Erstes Quiz zu HF 3 bestanden", "icon": "🎓"},
|
||||
{"id": "paragraphen_profi", "name": "Paragraphen-Profi", "desc": "BBiG/JArbSchG-Modul komplett", "icon": "§"},
|
||||
{"id": "4_stufen_meister", "name": "4-Stufen-Meister:in", "desc": "Vier-Stufen-Methode korrekt abgefragt", "icon": "🪜"},
|
||||
{"id": "lehrgespraech_pro", "name": "Lehrgespräch-Profi", "desc": "Lehrgespräch-Flashcards komplett", "icon": "💬"},
|
||||
{"id": "pruefungsreif", "name": "Prüfungsreif", "desc": "Exit-Exam mit > 70 % bestanden", "icon": "🏆"},
|
||||
{"id": "didaktik_nerd", "name": "Didaktik-Nerd", "desc": "Lernpsychologie-Modul komplett", "icon": "🧠"},
|
||||
{"id": "streak_7", "name": "Woche durchgehalten", "desc": "7 Tage in Folge gelernt", "icon": "🔥"},
|
||||
{"id": "ada_meister", "name": "AdA-Meister:in", "desc": "Alle 4 Handlungsfelder abgeschlossen", "icon": "👑"},
|
||||
{"id": "night_owl", "name": "Nachtschwärmer:in", "desc": "Nach 22:00 Uhr noch gelernt", "icon": "🦉"}
|
||||
],
|
||||
"levels": [
|
||||
{"name": "Neu dabei", "min": 0},
|
||||
{"name": "Interessiert:e", "min": 50},
|
||||
{"name": "Angehende:r Ausbilder:in", "min": 200},
|
||||
{"name": "Prüfungs-Kandidat:in", "min": 500},
|
||||
{"name": "Prüfungsreif", "min": 1250},
|
||||
{"name": "Frische:r AdA", "min": 2500},
|
||||
{"name": "Ausbilder:in mit Erfahrung", "min": 5000}
|
||||
],
|
||||
"curricula": [
|
||||
{
|
||||
"id": "hf1",
|
||||
"title": "HF 1 — Ausbildung planen",
|
||||
"short": "HF 1",
|
||||
"icon": "checklist",
|
||||
"color": "#10b981",
|
||||
"description": "Eignung des Betriebs, der Person, des Berufs — und der Ausbildungsplan. § 27/28/30 BBiG, BetrVG-Mitbestimmung.",
|
||||
"modules": [
|
||||
{
|
||||
"id": "eignung-betrieb",
|
||||
"title": "Eignung des Betriebs (§ 27 BBiG)",
|
||||
"subtopics": [
|
||||
{"id": "verhaeltnis-fk-azubi", "title": "Verhältnis Fachkraft : Azubi", "objectives": ["Faustregel kennen", "Aushilfen zählen nicht", "Verbund-Ausbildung als Ausweg"]},
|
||||
{"id": "art-einrichtung", "title": "Art und Einrichtung des Betriebs", "objectives": ["Werkstattausstattung beurteilen", "Ausbildungsrahmenplan abdecken können"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "eignung-ausbilder",
|
||||
"title": "Eignung der Ausbilder:in (§§ 28, 30)",
|
||||
"subtopics": [
|
||||
{"id": "persoenliche-eignung", "title": "Persönliche Eignung", "objectives": ["§ 29 Verbote kennen", "Führungszeugnis-Anlässe"]},
|
||||
{"id": "fachliche-eignung", "title": "Fachliche Eignung", "objectives": ["Ausbildungsberuf-Bezug", "Berufspraxis-Anforderung"]},
|
||||
{"id": "ada-paedagogisch", "title": "Berufs-/arbeitspädagogische Eignung", "objectives": ["AEVO-Anforderung", "Befreiungstatbestände kennen"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ausbildungsplan",
|
||||
"title": "Ausbildungsplan & Lernortkooperation",
|
||||
"subtopics": [
|
||||
{"id": "sachlich-zeitlich", "title": "Sachliche und zeitliche Gliederung (§ 11)", "objectives": ["Pflicht-Inhalte", "Beispielplan ableiten"]},
|
||||
{"id": "drei-lernorte", "title": "Drei Lernorte (Betrieb / Schule / ÜBA)", "objectives": ["Aufgabenverteilung", "Freistellung Berufsschule"]},
|
||||
{"id": "br-mitbestimmung", "title": "Mitbestimmung Betriebsrat (§§ 96–98 BetrVG)", "objectives": ["Auswahl Ausbilder", "Bildungsmaßnahmen"]}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hf2",
|
||||
"title": "HF 2 — Vorbereiten & Einstellen",
|
||||
"short": "HF 2",
|
||||
"icon": "users",
|
||||
"color": "#10b981",
|
||||
"description": "Recruiting, Vertragsschluss, Probezeit, JArbSchG für unter-18.",
|
||||
"modules": [
|
||||
{
|
||||
"id": "auswahl",
|
||||
"title": "Auswahlverfahren & AGG",
|
||||
"subtopics": [
|
||||
{"id": "anforderungsprofil", "title": "Anforderungsprofil ableiten", "objectives": ["Aus Ausbildungsrahmenplan", "AGG-konform formulieren"]},
|
||||
{"id": "vorstellungsgespraech", "title": "Strukturiertes Vorstellungsgespräch", "objectives": ["Erlaubte/verbotene Fragen", "Bewertungsbogen"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "vertrag",
|
||||
"title": "Berufsausbildungsvertrag (§§ 10, 11, 20)",
|
||||
"subtopics": [
|
||||
{"id": "vertragsschluss", "title": "Vertragsschluss & Schriftform", "objectives": ["§ 11 Pflicht-Inhalte", "eForm ausgeschlossen"]},
|
||||
{"id": "probezeit", "title": "Probezeit § 20 BBiG", "objectives": ["1–4 Monate Spanne", "Kündigungsregelung Probezeit"]},
|
||||
{"id": "eintragung", "title": "Eintragung im Verzeichnis (§ 35)", "objectives": ["IHK-Anmeldung", "Voraussetzung Prüfungszulassung"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "jugendarbeitsschutz",
|
||||
"title": "JArbSchG für unter-18-Jährige",
|
||||
"subtopics": [
|
||||
{"id": "arbeitszeit", "title": "Arbeitszeit & Pausen (§§ 8, 11)", "objectives": ["Max. 8h/40h", "Pausenregelung"]},
|
||||
{"id": "berufsschule-jarb", "title": "Berufsschultag (§ 9)", "objectives": ["Freistellung", "≥ 5h-Regel"]},
|
||||
{"id": "urlaub-jarb", "title": "Urlaub (§ 19)", "objectives": ["Staffelung 30/27/25 Tage", "Berechnung"]},
|
||||
{"id": "erstuntersuchung", "title": "Ärztliche Erstuntersuchung (§ 32)", "objectives": ["Vor Ausbildungsbeginn", "Nachuntersuchung"]}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hf3",
|
||||
"title": "HF 3 — Ausbildung durchführen",
|
||||
"short": "HF 3 ★",
|
||||
"icon": "graduation",
|
||||
"color": "#10b981",
|
||||
"description": "Das didaktische Herzstück. 4-Stufen-Methode, Lehrgespräch, Leittext, Lernziele, Motivation, Feedback. Hier liegt die praktische Prüfung.",
|
||||
"modules": [
|
||||
{
|
||||
"id": "vier-stufen",
|
||||
"title": "Vier-Stufen-Methode",
|
||||
"subtopics": [
|
||||
{"id": "stufe-1-vorbereiten", "title": "Stufe 1 — Vorbereiten", "objectives": ["Lernatmosphäre", "Vorwissen abfragen", "Lernziel transparent"]},
|
||||
{"id": "stufe-2-vormachen", "title": "Stufe 2 — Vormachen", "objectives": ["Modeling laut denken", "Geschwindigkeit", "Perspektive Azubi"]},
|
||||
{"id": "stufe-3-nachmachen", "title": "Stufe 3 — Nachmachen", "objectives": ["Azubi kommentiert selbst", "Sofort-Korrektur Sicherheit"]},
|
||||
{"id": "stufe-4-uebung", "title": "Stufe 4 — Üben & Erfolgskontrolle", "objectives": ["Selbstständigkeit", "Lernziel überprüfen"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "lehrgespraech",
|
||||
"title": "Lehrgespräch (fragend-entwickelnd)",
|
||||
"subtopics": [
|
||||
{"id": "fragearten", "title": "Fragearten", "objectives": ["Offen vs. geschlossen", "Suggestiv vermeiden", "Lenkfragen einsetzen"]},
|
||||
{"id": "phasen-lg", "title": "Phasen (Einstieg/Erarbeiten/Sicherung/Anwendung)", "objectives": ["Aufbau", "Gruppe vs. Einzelgespräch"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "weitere-methoden",
|
||||
"title": "Weitere Methoden",
|
||||
"subtopics": [
|
||||
{"id": "leittext", "title": "Leittextmethode", "objectives": ["6 Phasen vollständige Handlung", "Selbstgesteuertes Lernen"]},
|
||||
{"id": "projektmethode", "title": "Projektmethode", "objectives": ["Komplexe Aufgaben", "Bewertungsherausforderung"]},
|
||||
{"id": "rollenspiel", "title": "Rollenspiel", "objectives": ["Briefing/Spiel/Entrollen", "Beobachterrolle"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "lernziele",
|
||||
"title": "Lernziele formulieren",
|
||||
"subtopics": [
|
||||
{"id": "drei-ebenen", "title": "Richt- / Grob- / Feinlernziel", "objectives": ["Hierarchie verstehen", "Verben passen"]},
|
||||
{"id": "drei-bereiche", "title": "Kognitiv / Affektiv / Psychomotorisch", "objectives": ["Bloom-Taxonomie", "Methode auf Bereich abstimmen"]},
|
||||
{"id": "feinformulierung", "title": "Feinlernziel = Verhalten + Bedingung + Maßstab", "objectives": ["Beispiele formulieren", "Überprüfbarkeit"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "motivation-feedback",
|
||||
"title": "Motivation & Feedback",
|
||||
"subtopics": [
|
||||
{"id": "deci-ryan", "title": "Selbstbestimmungstheorie (Deci/Ryan)", "objectives": ["Autonomie/Kompetenz/Eingebundenheit", "Intrinsisch vs. extrinsisch"]},
|
||||
{"id": "feedback-www", "title": "WWW-Feedback-Schema", "objectives": ["Wahrnehmung-Wirkung-Wunsch", "Feedback-Regeln"]},
|
||||
{"id": "berichtsheft", "title": "Ausbildungsnachweis (§ 14 Abs. 2)", "objectives": ["Pflicht des Ausbildenden", "Form schriftlich/elektronisch"]}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hf4",
|
||||
"title": "HF 4 — Ausbildung abschließen",
|
||||
"short": "HF 4",
|
||||
"icon": "trophy",
|
||||
"color": "#10b981",
|
||||
"description": "Zwischen-/Abschlussprüfung, Verlängerung, Zeugnis, Übernahme, Weiterbildung.",
|
||||
"modules": [
|
||||
{
|
||||
"id": "pruefungen-azubi",
|
||||
"title": "Prüfungen des Azubis",
|
||||
"subtopics": [
|
||||
{"id": "zwischenpruefung", "title": "Zwischenprüfung (§ 48)", "objectives": ["Standortbestimmung", "Anmeldung & Freistellung"]},
|
||||
{"id": "gestreckt", "title": "Gestreckte Abschlussprüfung", "objectives": ["Teil 1 + 2 Zusammenrechnung", "Berufe mit Streckung"]},
|
||||
{"id": "abschlusspruefung", "title": "Abschlussprüfung (§ 37)", "objectives": ["Bestehen", "Vorbereitungstage"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ende-vertrag",
|
||||
"title": "Ende des Ausbildungsverhältnisses",
|
||||
"subtopics": [
|
||||
{"id": "vorzeitig", "title": "Vorzeitiges Bestehen (§ 45)", "objectives": ["Voraussetzungen", "Antragsweg"]},
|
||||
{"id": "verlaengerung", "title": "Verlängerung (§ 8)", "objectives": ["Bei Nichtbestehen", "Bei Krankheit/Mutterschutz"]},
|
||||
{"id": "kuendigung", "title": "Kündigung nach Probezeit (§ 22)", "objectives": ["Wichtiger Grund", "4-Wochen-Frist Azubi"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "zeugnis-uebernahme",
|
||||
"title": "Zeugnis & Übernahme",
|
||||
"subtopics": [
|
||||
{"id": "ausbildungszeugnis", "title": "Ausbildungszeugnis (§ 16)", "objectives": ["Einfach vs. qualifiziert", "Schriftform Pflicht"]},
|
||||
{"id": "uebernahme", "title": "Übernahme nach Ausbildung (§ 24)", "objectives": ["Stillschweigend = unbefristet", "Anschlussvertrag"]},
|
||||
{"id": "weiterbildung", "title": "Weiterbildung aufzeigen", "objectives": ["Aufstiegspfade", "Mentoring"]}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pruefungstraining",
|
||||
"title": "Prüfungs-Training",
|
||||
"short": "Prüfung",
|
||||
"icon": "target",
|
||||
"color": "#10b981",
|
||||
"description": "Schriftliche Prüfung (80 MC, 180 Min.), praktische Prüfung (15+15 Min.). Aufbau, Bewertung, Stolpersteine.",
|
||||
"modules": [
|
||||
{
|
||||
"id": "schriftlich",
|
||||
"title": "Schriftliche Prüfung",
|
||||
"subtopics": [
|
||||
{"id": "aufbau-mc", "title": "Aufbau handlungsorientierter MC", "objectives": ["Ausgangssituation lesen", "Mehrfach-Antworten erkennen"]},
|
||||
{"id": "zeitmanagement", "title": "Zeitmanagement 180 Min.", "objectives": ["2 Min/Frage", "Markieren & überspringen"]},
|
||||
{"id": "stolpersteine", "title": "Top-Stolpersteine", "objectives": ["NICHT-/falsch-Fragen", "Maxima/Minima", "Zuständige-Stelle-Falle"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "praktisch",
|
||||
"title": "Praktische Prüfung",
|
||||
"subtopics": [
|
||||
{"id": "wahl-praesentation", "title": "Wahl Präsentation vs. Durchführung", "objectives": ["Stärken-Schwächen-Profil", "Themenwahl"]},
|
||||
{"id": "konzeptpapier", "title": "Konzeptpapier erstellen", "objectives": ["Adressaten-/Lernzielanalyse", "Verlaufsplan-Tabelle"]},
|
||||
{"id": "fachgespraech", "title": "Fachgespräch (15 Min.)", "objectives": ["Methodenwahl begründen", "Handlungsalternativen"]},
|
||||
{"id": "bewertungskriterien", "title": "Bewertungskriterien", "objectives": ["Lernatmosphäre", "Erfolgskontrolle", "Pädagogische Kompetenz"]}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "lernpsychologie",
|
||||
"title": "Lernpsychologie & Kommunikation",
|
||||
"short": "Lernpsy",
|
||||
"icon": "brain",
|
||||
"color": "#10b981",
|
||||
"description": "Theorien, die in HF 3 prüfungsrelevant sind. Kommunikation und Konfliktmanagement.",
|
||||
"modules": [
|
||||
{
|
||||
"id": "lerntheorien",
|
||||
"title": "Lerntheorien & Taxonomien",
|
||||
"subtopics": [
|
||||
{"id": "bloom", "title": "Bloom-Taxonomie", "objectives": ["6 kognitive Stufen", "Verben passend wählen"]},
|
||||
{"id": "drei-paradigmen", "title": "Behaviorismus / Kognitivismus / Konstruktivismus", "objectives": ["Lernparadigmen unterscheiden", "Methoden ableiten"]},
|
||||
{"id": "vygotsky", "title": "Zone der nächsten Entwicklung (Vygotsky)", "objectives": ["ZPD-Konzept", "Scaffolding"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "erwachsenenbildung",
|
||||
"title": "Erwachsenenbildung",
|
||||
"subtopics": [
|
||||
{"id": "knowles", "title": "Knowles' Andragogik", "objectives": ["6 Prinzipien", "Erwachsene vs. Kinder"]},
|
||||
{"id": "kolb", "title": "Kolbs Lernzyklus", "objectives": ["4 Phasen", "Lerntypen kritisch"]},
|
||||
{"id": "tuckman", "title": "Tuckman Gruppenphasen", "objectives": ["Forming/Storming/Norming/Performing/Adjourning", "Storming nicht überspringen"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "kommunikation",
|
||||
"title": "Kommunikation",
|
||||
"subtopics": [
|
||||
{"id": "vier-ohren", "title": "4-Ohren-Modell (Schulz von Thun)", "objectives": ["Sache/Selbstkundgabe/Beziehung/Appell", "Konfliktdiagnose"]},
|
||||
{"id": "ich-botschaften", "title": "Ich-Botschaften & aktives Zuhören", "objectives": ["Du- vs. Ich-Botschaft", "3-Schritte-Aufbau"]},
|
||||
{"id": "feedback-regeln", "title": "Feedback-Regeln", "objectives": ["Beschreibend statt bewertend", "Zeitnah & konkret"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "konflikt",
|
||||
"title": "Konfliktmanagement",
|
||||
"subtopics": [
|
||||
{"id": "glasl-stufen", "title": "Glasl-Eskalationsstufen", "objectives": ["9 Stufen", "Eingriffspunkte"]},
|
||||
{"id": "konfliktgespraech", "title": "Konfliktgespräch in 5 Phasen", "objectives": ["Wahrnehmung-Auswirkung-Sicht-Lösung-Vereinbarung", "No-Gos"]},
|
||||
{"id": "beurteilungsgespraech", "title": "Beurteilungsgespräch", "objectives": ["Selbsteinschätzung zuerst", "SMART-Ziele"]}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
4
src/levels-fallback.js
Normal file
4
src/levels-fallback.js
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{ min: 0, title: 'Neu dabei' }, { min: 50, title: 'Interessiert:e' },
|
||||
{ min: 200, title: 'Angehende:r Ausbilder:in' }, { min: 500, title: 'Prüfungs-Kandidat:in' },
|
||||
{ min: 1250, title: 'Prüfungsreif' }, { min: 2500, title: 'Frische:r AdA' },
|
||||
{ min: 5000, title: 'Ausbilder:in mit Erfahrung' }
|
||||
33
src/welcome.html
Normal file
33
src/welcome.html
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<h2>Hi, ich bin Ida.</h2>
|
||||
<p>Ich helfe dir, den <strong>AdA-Schein</strong> in 4 Wochen locker zu bestehen — IHK-konform, schriftlich + praktisch. Die Didaktik, die du lernst, wende ich dabei <strong>selbst an</strong>. Das ist kein Zufall. Sag mir: Wann hast du Prüfung, und wo stehst du gerade?</p>
|
||||
<div class="mode-grid">
|
||||
<button class="mode-card" data-goto="chat">
|
||||
<strong>Chat</strong>
|
||||
<span>Frag mich zu BBiG/AEVO, Methoden, Lernzielen, JArbSchG.</span>
|
||||
</button>
|
||||
<button class="mode-card" data-goto="quiz">
|
||||
<strong>Quiz</strong>
|
||||
<span>Handlungsorientierte AEVO-Fragen — IHK-Stil, mit XP.</span>
|
||||
</button>
|
||||
<button class="mode-card" data-goto="flash">
|
||||
<strong>Flashcards</strong>
|
||||
<span>Paragraphen, Methoden, Begriffe — Spaced Repetition.</span>
|
||||
</button>
|
||||
<button class="mode-card" data-goto="progress">
|
||||
<strong>Fortschritt</strong>
|
||||
<span>XP, Streaks, Badges, Level.</span>
|
||||
</button>
|
||||
<button class="mode-card" data-goto="curriculum">
|
||||
<strong>AEVO-Atlas</strong>
|
||||
<span>HF 1–4 + Prüfungstraining + Lernpsychologie.</span>
|
||||
</button>
|
||||
<button class="mode-card" data-prompt="EXAM_REQUEST: AEVO Handlungsfeld 3 — Ausbildung durchführen, 5 Fragen">
|
||||
<strong>Prüfungs-Set</strong>
|
||||
<span><code>EXAM_REQUEST</code> + Handlungsfeld → IHK-Stil-Aufgaben mit Musterlösung als Karte.</span>
|
||||
</button>
|
||||
<button class="mode-card" data-prompt="UNTERWEISUNG_REQUEST: Vier-Stufen-Methode für [Tätigkeit]">
|
||||
<strong>Unterweisung</strong>
|
||||
<span><code>UNTERWEISUNG_REQUEST</code> + Tätigkeit → Vier-Stufen-Methode komplett ausgeplant als Karte.</span>
|
||||
</button>
|
||||
</div>
|
||||
<p style="font-size:.82rem;color:var(--text-mute)">In 3 Sätzen: Chat zum Verstehen → Quiz zum Testen → Flashcards zum Merken. Fortschritt zeigt dir, wo du stehst; der AEVO-Atlas führt dich Modul für Modul durch alle 4 Handlungsfelder.</p>
|
||||
1751
www/app.js
Normal file
1751
www/app.js
Normal file
File diff suppressed because it is too large
Load diff
266
www/curricula.json
Normal file
266
www/curricula.json
Normal file
|
|
@ -0,0 +1,266 @@
|
|||
{
|
||||
"version": "2026-04-25",
|
||||
"updated": "2026-04-25",
|
||||
"badges": [
|
||||
{"id": "erste_unterweisung", "name": "Erste Unterweisung", "desc": "Erstes Quiz zu HF 3 bestanden", "icon": "🎓"},
|
||||
{"id": "paragraphen_profi", "name": "Paragraphen-Profi", "desc": "BBiG/JArbSchG-Modul komplett", "icon": "§"},
|
||||
{"id": "4_stufen_meister", "name": "4-Stufen-Meister:in", "desc": "Vier-Stufen-Methode korrekt abgefragt", "icon": "🪜"},
|
||||
{"id": "lehrgespraech_pro", "name": "Lehrgespräch-Profi", "desc": "Lehrgespräch-Flashcards komplett", "icon": "💬"},
|
||||
{"id": "pruefungsreif", "name": "Prüfungsreif", "desc": "Exit-Exam mit > 70 % bestanden", "icon": "🏆"},
|
||||
{"id": "didaktik_nerd", "name": "Didaktik-Nerd", "desc": "Lernpsychologie-Modul komplett", "icon": "🧠"},
|
||||
{"id": "streak_7", "name": "Woche durchgehalten", "desc": "7 Tage in Folge gelernt", "icon": "🔥"},
|
||||
{"id": "ada_meister", "name": "AdA-Meister:in", "desc": "Alle 4 Handlungsfelder abgeschlossen", "icon": "👑"},
|
||||
{"id": "night_owl", "name": "Nachtschwärmer:in", "desc": "Nach 22:00 Uhr noch gelernt", "icon": "🦉"}
|
||||
],
|
||||
"levels": [
|
||||
{"name": "Neu dabei", "min": 0},
|
||||
{"name": "Interessiert:e", "min": 50},
|
||||
{"name": "Angehende:r Ausbilder:in", "min": 200},
|
||||
{"name": "Prüfungs-Kandidat:in", "min": 500},
|
||||
{"name": "Prüfungsreif", "min": 1250},
|
||||
{"name": "Frische:r AdA", "min": 2500},
|
||||
{"name": "Ausbilder:in mit Erfahrung", "min": 5000}
|
||||
],
|
||||
"curricula": [
|
||||
{
|
||||
"id": "hf1",
|
||||
"title": "HF 1 — Ausbildung planen",
|
||||
"short": "HF 1",
|
||||
"icon": "checklist",
|
||||
"color": "#10b981",
|
||||
"description": "Eignung des Betriebs, der Person, des Berufs — und der Ausbildungsplan. § 27/28/30 BBiG, BetrVG-Mitbestimmung.",
|
||||
"modules": [
|
||||
{
|
||||
"id": "eignung-betrieb",
|
||||
"title": "Eignung des Betriebs (§ 27 BBiG)",
|
||||
"subtopics": [
|
||||
{"id": "verhaeltnis-fk-azubi", "title": "Verhältnis Fachkraft : Azubi", "objectives": ["Faustregel kennen", "Aushilfen zählen nicht", "Verbund-Ausbildung als Ausweg"]},
|
||||
{"id": "art-einrichtung", "title": "Art und Einrichtung des Betriebs", "objectives": ["Werkstattausstattung beurteilen", "Ausbildungsrahmenplan abdecken können"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "eignung-ausbilder",
|
||||
"title": "Eignung der Ausbilder:in (§§ 28, 30)",
|
||||
"subtopics": [
|
||||
{"id": "persoenliche-eignung", "title": "Persönliche Eignung", "objectives": ["§ 29 Verbote kennen", "Führungszeugnis-Anlässe"]},
|
||||
{"id": "fachliche-eignung", "title": "Fachliche Eignung", "objectives": ["Ausbildungsberuf-Bezug", "Berufspraxis-Anforderung"]},
|
||||
{"id": "ada-paedagogisch", "title": "Berufs-/arbeitspädagogische Eignung", "objectives": ["AEVO-Anforderung", "Befreiungstatbestände kennen"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ausbildungsplan",
|
||||
"title": "Ausbildungsplan & Lernortkooperation",
|
||||
"subtopics": [
|
||||
{"id": "sachlich-zeitlich", "title": "Sachliche und zeitliche Gliederung (§ 11)", "objectives": ["Pflicht-Inhalte", "Beispielplan ableiten"]},
|
||||
{"id": "drei-lernorte", "title": "Drei Lernorte (Betrieb / Schule / ÜBA)", "objectives": ["Aufgabenverteilung", "Freistellung Berufsschule"]},
|
||||
{"id": "br-mitbestimmung", "title": "Mitbestimmung Betriebsrat (§§ 96–98 BetrVG)", "objectives": ["Auswahl Ausbilder", "Bildungsmaßnahmen"]}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hf2",
|
||||
"title": "HF 2 — Vorbereiten & Einstellen",
|
||||
"short": "HF 2",
|
||||
"icon": "users",
|
||||
"color": "#10b981",
|
||||
"description": "Recruiting, Vertragsschluss, Probezeit, JArbSchG für unter-18.",
|
||||
"modules": [
|
||||
{
|
||||
"id": "auswahl",
|
||||
"title": "Auswahlverfahren & AGG",
|
||||
"subtopics": [
|
||||
{"id": "anforderungsprofil", "title": "Anforderungsprofil ableiten", "objectives": ["Aus Ausbildungsrahmenplan", "AGG-konform formulieren"]},
|
||||
{"id": "vorstellungsgespraech", "title": "Strukturiertes Vorstellungsgespräch", "objectives": ["Erlaubte/verbotene Fragen", "Bewertungsbogen"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "vertrag",
|
||||
"title": "Berufsausbildungsvertrag (§§ 10, 11, 20)",
|
||||
"subtopics": [
|
||||
{"id": "vertragsschluss", "title": "Vertragsschluss & Schriftform", "objectives": ["§ 11 Pflicht-Inhalte", "eForm ausgeschlossen"]},
|
||||
{"id": "probezeit", "title": "Probezeit § 20 BBiG", "objectives": ["1–4 Monate Spanne", "Kündigungsregelung Probezeit"]},
|
||||
{"id": "eintragung", "title": "Eintragung im Verzeichnis (§ 35)", "objectives": ["IHK-Anmeldung", "Voraussetzung Prüfungszulassung"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "jugendarbeitsschutz",
|
||||
"title": "JArbSchG für unter-18-Jährige",
|
||||
"subtopics": [
|
||||
{"id": "arbeitszeit", "title": "Arbeitszeit & Pausen (§§ 8, 11)", "objectives": ["Max. 8h/40h", "Pausenregelung"]},
|
||||
{"id": "berufsschule-jarb", "title": "Berufsschultag (§ 9)", "objectives": ["Freistellung", "≥ 5h-Regel"]},
|
||||
{"id": "urlaub-jarb", "title": "Urlaub (§ 19)", "objectives": ["Staffelung 30/27/25 Tage", "Berechnung"]},
|
||||
{"id": "erstuntersuchung", "title": "Ärztliche Erstuntersuchung (§ 32)", "objectives": ["Vor Ausbildungsbeginn", "Nachuntersuchung"]}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hf3",
|
||||
"title": "HF 3 — Ausbildung durchführen",
|
||||
"short": "HF 3 ★",
|
||||
"icon": "graduation",
|
||||
"color": "#10b981",
|
||||
"description": "Das didaktische Herzstück. 4-Stufen-Methode, Lehrgespräch, Leittext, Lernziele, Motivation, Feedback. Hier liegt die praktische Prüfung.",
|
||||
"modules": [
|
||||
{
|
||||
"id": "vier-stufen",
|
||||
"title": "Vier-Stufen-Methode",
|
||||
"subtopics": [
|
||||
{"id": "stufe-1-vorbereiten", "title": "Stufe 1 — Vorbereiten", "objectives": ["Lernatmosphäre", "Vorwissen abfragen", "Lernziel transparent"]},
|
||||
{"id": "stufe-2-vormachen", "title": "Stufe 2 — Vormachen", "objectives": ["Modeling laut denken", "Geschwindigkeit", "Perspektive Azubi"]},
|
||||
{"id": "stufe-3-nachmachen", "title": "Stufe 3 — Nachmachen", "objectives": ["Azubi kommentiert selbst", "Sofort-Korrektur Sicherheit"]},
|
||||
{"id": "stufe-4-uebung", "title": "Stufe 4 — Üben & Erfolgskontrolle", "objectives": ["Selbstständigkeit", "Lernziel überprüfen"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "lehrgespraech",
|
||||
"title": "Lehrgespräch (fragend-entwickelnd)",
|
||||
"subtopics": [
|
||||
{"id": "fragearten", "title": "Fragearten", "objectives": ["Offen vs. geschlossen", "Suggestiv vermeiden", "Lenkfragen einsetzen"]},
|
||||
{"id": "phasen-lg", "title": "Phasen (Einstieg/Erarbeiten/Sicherung/Anwendung)", "objectives": ["Aufbau", "Gruppe vs. Einzelgespräch"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "weitere-methoden",
|
||||
"title": "Weitere Methoden",
|
||||
"subtopics": [
|
||||
{"id": "leittext", "title": "Leittextmethode", "objectives": ["6 Phasen vollständige Handlung", "Selbstgesteuertes Lernen"]},
|
||||
{"id": "projektmethode", "title": "Projektmethode", "objectives": ["Komplexe Aufgaben", "Bewertungsherausforderung"]},
|
||||
{"id": "rollenspiel", "title": "Rollenspiel", "objectives": ["Briefing/Spiel/Entrollen", "Beobachterrolle"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "lernziele",
|
||||
"title": "Lernziele formulieren",
|
||||
"subtopics": [
|
||||
{"id": "drei-ebenen", "title": "Richt- / Grob- / Feinlernziel", "objectives": ["Hierarchie verstehen", "Verben passen"]},
|
||||
{"id": "drei-bereiche", "title": "Kognitiv / Affektiv / Psychomotorisch", "objectives": ["Bloom-Taxonomie", "Methode auf Bereich abstimmen"]},
|
||||
{"id": "feinformulierung", "title": "Feinlernziel = Verhalten + Bedingung + Maßstab", "objectives": ["Beispiele formulieren", "Überprüfbarkeit"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "motivation-feedback",
|
||||
"title": "Motivation & Feedback",
|
||||
"subtopics": [
|
||||
{"id": "deci-ryan", "title": "Selbstbestimmungstheorie (Deci/Ryan)", "objectives": ["Autonomie/Kompetenz/Eingebundenheit", "Intrinsisch vs. extrinsisch"]},
|
||||
{"id": "feedback-www", "title": "WWW-Feedback-Schema", "objectives": ["Wahrnehmung-Wirkung-Wunsch", "Feedback-Regeln"]},
|
||||
{"id": "berichtsheft", "title": "Ausbildungsnachweis (§ 14 Abs. 2)", "objectives": ["Pflicht des Ausbildenden", "Form schriftlich/elektronisch"]}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hf4",
|
||||
"title": "HF 4 — Ausbildung abschließen",
|
||||
"short": "HF 4",
|
||||
"icon": "trophy",
|
||||
"color": "#10b981",
|
||||
"description": "Zwischen-/Abschlussprüfung, Verlängerung, Zeugnis, Übernahme, Weiterbildung.",
|
||||
"modules": [
|
||||
{
|
||||
"id": "pruefungen-azubi",
|
||||
"title": "Prüfungen des Azubis",
|
||||
"subtopics": [
|
||||
{"id": "zwischenpruefung", "title": "Zwischenprüfung (§ 48)", "objectives": ["Standortbestimmung", "Anmeldung & Freistellung"]},
|
||||
{"id": "gestreckt", "title": "Gestreckte Abschlussprüfung", "objectives": ["Teil 1 + 2 Zusammenrechnung", "Berufe mit Streckung"]},
|
||||
{"id": "abschlusspruefung", "title": "Abschlussprüfung (§ 37)", "objectives": ["Bestehen", "Vorbereitungstage"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ende-vertrag",
|
||||
"title": "Ende des Ausbildungsverhältnisses",
|
||||
"subtopics": [
|
||||
{"id": "vorzeitig", "title": "Vorzeitiges Bestehen (§ 45)", "objectives": ["Voraussetzungen", "Antragsweg"]},
|
||||
{"id": "verlaengerung", "title": "Verlängerung (§ 8)", "objectives": ["Bei Nichtbestehen", "Bei Krankheit/Mutterschutz"]},
|
||||
{"id": "kuendigung", "title": "Kündigung nach Probezeit (§ 22)", "objectives": ["Wichtiger Grund", "4-Wochen-Frist Azubi"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "zeugnis-uebernahme",
|
||||
"title": "Zeugnis & Übernahme",
|
||||
"subtopics": [
|
||||
{"id": "ausbildungszeugnis", "title": "Ausbildungszeugnis (§ 16)", "objectives": ["Einfach vs. qualifiziert", "Schriftform Pflicht"]},
|
||||
{"id": "uebernahme", "title": "Übernahme nach Ausbildung (§ 24)", "objectives": ["Stillschweigend = unbefristet", "Anschlussvertrag"]},
|
||||
{"id": "weiterbildung", "title": "Weiterbildung aufzeigen", "objectives": ["Aufstiegspfade", "Mentoring"]}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pruefungstraining",
|
||||
"title": "Prüfungs-Training",
|
||||
"short": "Prüfung",
|
||||
"icon": "target",
|
||||
"color": "#10b981",
|
||||
"description": "Schriftliche Prüfung (80 MC, 180 Min.), praktische Prüfung (15+15 Min.). Aufbau, Bewertung, Stolpersteine.",
|
||||
"modules": [
|
||||
{
|
||||
"id": "schriftlich",
|
||||
"title": "Schriftliche Prüfung",
|
||||
"subtopics": [
|
||||
{"id": "aufbau-mc", "title": "Aufbau handlungsorientierter MC", "objectives": ["Ausgangssituation lesen", "Mehrfach-Antworten erkennen"]},
|
||||
{"id": "zeitmanagement", "title": "Zeitmanagement 180 Min.", "objectives": ["2 Min/Frage", "Markieren & überspringen"]},
|
||||
{"id": "stolpersteine", "title": "Top-Stolpersteine", "objectives": ["NICHT-/falsch-Fragen", "Maxima/Minima", "Zuständige-Stelle-Falle"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "praktisch",
|
||||
"title": "Praktische Prüfung",
|
||||
"subtopics": [
|
||||
{"id": "wahl-praesentation", "title": "Wahl Präsentation vs. Durchführung", "objectives": ["Stärken-Schwächen-Profil", "Themenwahl"]},
|
||||
{"id": "konzeptpapier", "title": "Konzeptpapier erstellen", "objectives": ["Adressaten-/Lernzielanalyse", "Verlaufsplan-Tabelle"]},
|
||||
{"id": "fachgespraech", "title": "Fachgespräch (15 Min.)", "objectives": ["Methodenwahl begründen", "Handlungsalternativen"]},
|
||||
{"id": "bewertungskriterien", "title": "Bewertungskriterien", "objectives": ["Lernatmosphäre", "Erfolgskontrolle", "Pädagogische Kompetenz"]}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "lernpsychologie",
|
||||
"title": "Lernpsychologie & Kommunikation",
|
||||
"short": "Lernpsy",
|
||||
"icon": "brain",
|
||||
"color": "#10b981",
|
||||
"description": "Theorien, die in HF 3 prüfungsrelevant sind. Kommunikation und Konfliktmanagement.",
|
||||
"modules": [
|
||||
{
|
||||
"id": "lerntheorien",
|
||||
"title": "Lerntheorien & Taxonomien",
|
||||
"subtopics": [
|
||||
{"id": "bloom", "title": "Bloom-Taxonomie", "objectives": ["6 kognitive Stufen", "Verben passend wählen"]},
|
||||
{"id": "drei-paradigmen", "title": "Behaviorismus / Kognitivismus / Konstruktivismus", "objectives": ["Lernparadigmen unterscheiden", "Methoden ableiten"]},
|
||||
{"id": "vygotsky", "title": "Zone der nächsten Entwicklung (Vygotsky)", "objectives": ["ZPD-Konzept", "Scaffolding"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "erwachsenenbildung",
|
||||
"title": "Erwachsenenbildung",
|
||||
"subtopics": [
|
||||
{"id": "knowles", "title": "Knowles' Andragogik", "objectives": ["6 Prinzipien", "Erwachsene vs. Kinder"]},
|
||||
{"id": "kolb", "title": "Kolbs Lernzyklus", "objectives": ["4 Phasen", "Lerntypen kritisch"]},
|
||||
{"id": "tuckman", "title": "Tuckman Gruppenphasen", "objectives": ["Forming/Storming/Norming/Performing/Adjourning", "Storming nicht überspringen"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "kommunikation",
|
||||
"title": "Kommunikation",
|
||||
"subtopics": [
|
||||
{"id": "vier-ohren", "title": "4-Ohren-Modell (Schulz von Thun)", "objectives": ["Sache/Selbstkundgabe/Beziehung/Appell", "Konfliktdiagnose"]},
|
||||
{"id": "ich-botschaften", "title": "Ich-Botschaften & aktives Zuhören", "objectives": ["Du- vs. Ich-Botschaft", "3-Schritte-Aufbau"]},
|
||||
{"id": "feedback-regeln", "title": "Feedback-Regeln", "objectives": ["Beschreibend statt bewertend", "Zeitnah & konkret"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "konflikt",
|
||||
"title": "Konfliktmanagement",
|
||||
"subtopics": [
|
||||
{"id": "glasl-stufen", "title": "Glasl-Eskalationsstufen", "objectives": ["9 Stufen", "Eingriffspunkte"]},
|
||||
{"id": "konfliktgespraech", "title": "Konfliktgespräch in 5 Phasen", "objectives": ["Wahrnehmung-Auswirkung-Sicht-Lösung-Vereinbarung", "No-Gos"]},
|
||||
{"id": "beurteilungsgespraech", "title": "Beurteilungsgespräch", "objectives": ["Selbsteinschätzung zuerst", "SMART-Ziele"]}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
129
www/index.html
Normal file
129
www/index.html
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Ida · Dein AdA-Prüfungscoach</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
|
||||
<meta name="theme-color" content="#0a0a0f">
|
||||
<meta name="description" content="Ida — gamifizierter Coach für den Ausbilder-Eignungsschein (AEVO). Schriftliche + praktische IHK-Prüfung. Läuft im deutschen Bunker.">
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
<script>window.__IDA_KEY__ = 'qb_851f77553fdf';</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="app" role="application" aria-label="Ida AdA-Prüfungscoach">
|
||||
|
||||
<header class="topbar">
|
||||
<div class="brand">
|
||||
<span class="brand-icon" aria-hidden="true">I</span>
|
||||
<span>Ida <small>Dein AdA-Prüfungscoach</small></span>
|
||||
</div>
|
||||
<div class="spacer"></div>
|
||||
<span class="status" role="status" aria-live="polite">Online</span>
|
||||
</header>
|
||||
|
||||
<nav class="tabbar" role="tablist" aria-label="Modi">
|
||||
<button class="tab" role="tab" aria-selected="true" aria-controls="view-chat" data-mode="chat">
|
||||
Chat
|
||||
<span class="tab-kbd">⌃1</span>
|
||||
</button>
|
||||
<button class="tab" role="tab" aria-selected="false" aria-controls="view-quiz" data-mode="quiz">
|
||||
Quiz
|
||||
<span class="tab-kbd">⌃2</span>
|
||||
</button>
|
||||
<button class="tab" role="tab" aria-selected="false" aria-controls="view-flash" data-mode="flash">
|
||||
Flashcards
|
||||
<span class="tab-kbd">⌃3</span>
|
||||
</button>
|
||||
<button class="tab" role="tab" aria-selected="false" aria-controls="view-progress" data-mode="progress">
|
||||
Fortschritt
|
||||
<span class="tab-kbd">⌃4</span>
|
||||
</button>
|
||||
<button class="tab" role="tab" aria-selected="false" aria-controls="view-curriculum" data-mode="curriculum">
|
||||
AEVO-Atlas
|
||||
<span class="tab-kbd">⌃5</span>
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
<main class="main">
|
||||
<!-- CHAT -->
|
||||
<section id="view-chat" class="view" role="tabpanel" aria-labelledby="tab-chat" data-active="true">
|
||||
<div id="welcome-screen" class="welcome hidden" aria-hidden="true">
|
||||
<h2>Hi, ich bin Ida.</h2>
|
||||
<p>Ich helfe dir, den <strong>AdA-Schein</strong> in 4 Wochen locker zu bestehen — IHK-konform, schriftlich + praktisch. Die Didaktik, die du lernst, wende ich dabei <strong>selbst an</strong>. Das ist kein Zufall. Sag mir: Wann hast du Prüfung, und wo stehst du gerade?</p>
|
||||
<div class="mode-grid">
|
||||
<button class="mode-card" data-goto="chat">
|
||||
<strong>Chat</strong>
|
||||
<span>Frag mich zu BBiG/AEVO, Methoden, Lernzielen, JArbSchG.</span>
|
||||
</button>
|
||||
<button class="mode-card" data-goto="quiz">
|
||||
<strong>Quiz</strong>
|
||||
<span>Handlungsorientierte AEVO-Fragen — IHK-Stil, mit XP.</span>
|
||||
</button>
|
||||
<button class="mode-card" data-goto="flash">
|
||||
<strong>Flashcards</strong>
|
||||
<span>Paragraphen, Methoden, Begriffe — Spaced Repetition.</span>
|
||||
</button>
|
||||
<button class="mode-card" data-goto="progress">
|
||||
<strong>Fortschritt</strong>
|
||||
<span>XP, Streaks, Badges, Level.</span>
|
||||
</button>
|
||||
<button class="mode-card" data-goto="curriculum">
|
||||
<strong>AEVO-Atlas</strong>
|
||||
<span>HF 1–4 + Prüfungstraining + Lernpsychologie.</span>
|
||||
</button>
|
||||
<button class="mode-card" data-prompt="EXAM_REQUEST: AEVO Handlungsfeld 3 — Ausbildung durchführen, 5 Fragen">
|
||||
<strong>Prüfungs-Set</strong>
|
||||
<span><code>EXAM_REQUEST</code> + Handlungsfeld → IHK-Stil-Aufgaben mit Musterlösung als Karte.</span>
|
||||
</button>
|
||||
<button class="mode-card" data-prompt="UNTERWEISUNG_REQUEST: Vier-Stufen-Methode für [Tätigkeit]">
|
||||
<strong>Unterweisung</strong>
|
||||
<span><code>UNTERWEISUNG_REQUEST</code> + Tätigkeit → Vier-Stufen-Methode komplett ausgeplant als Karte.</span>
|
||||
</button>
|
||||
</div>
|
||||
<p style="font-size:.82rem;color:var(--text-mute)">In 3 Sätzen: Chat zum Verstehen → Quiz zum Testen → Flashcards zum Merken. Fortschritt zeigt dir, wo du stehst; der AEVO-Atlas führt dich Modul für Modul durch alle 4 Handlungsfelder.</p>
|
||||
</div>
|
||||
|
||||
<div id="chat-box" class="chat-box" aria-live="polite" aria-label="Gespräch"></div>
|
||||
</section>
|
||||
|
||||
<!-- QUIZ -->
|
||||
<section id="view-quiz" class="view" role="tabpanel" aria-labelledby="tab-quiz">
|
||||
<div id="quiz-host"></div>
|
||||
</section>
|
||||
|
||||
<!-- FLASHCARDS -->
|
||||
<section id="view-flash" class="view" role="tabpanel" aria-labelledby="tab-flash">
|
||||
<div id="flash-host"></div>
|
||||
</section>
|
||||
|
||||
<!-- PROGRESS -->
|
||||
<section id="view-progress" class="view" role="tabpanel" aria-labelledby="tab-progress">
|
||||
<div id="progress-host"></div>
|
||||
</section>
|
||||
|
||||
<!-- CURRICULUM -->
|
||||
<section id="view-curriculum" class="view" role="tabpanel" aria-labelledby="tab-curr">
|
||||
<div id="curr-host"></div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<form id="composer-form" class="composer" aria-label="Nachricht verfassen">
|
||||
<div id="attach-strip" class="attach-strip" aria-live="polite"></div>
|
||||
<div class="composer-row">
|
||||
<button type="button" class="btn-attach" id="composer-attach" aria-label="Datei anhängen" title="Datei anhängen (PDF, Bild, Text — max 5 Dateien, 8 MB)">📎</button>
|
||||
<input type="file" id="composer-file" multiple accept=".pdf,.txt,.md,.csv,.json,.xml,.yaml,.yml,.log,.png,.jpg,.jpeg,.webp,.gif" hidden>
|
||||
<textarea id="composer" rows="1" placeholder="Frag Ida — Enter zum Senden, Shift+Enter für Zeilenumbruch" aria-label="Nachricht"></textarea>
|
||||
<button type="submit" class="btn-primary" id="composer-send">Senden</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<footer class="footer">
|
||||
Sovereign AI · Deutscher Bunker · <a href="https://qognio.com">Qognio</a> · DSGVO-konform · Keine externen Fonts · Keine Cookies
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<div id="toast-stack" class="toast-stack" aria-live="polite"></div>
|
||||
|
||||
<script src="app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
1038
www/styles.css
Normal file
1038
www/styles.css
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue