Compare commits

...

2 Commits

Author SHA1 Message Date
81cfff96e5 Kurse hinterlegt A1-A3 2026-04-09 20:54:58 +02:00
7b97575c5f Kurse eingetragen und assessments 2026-04-09 20:53:49 +02:00
43 changed files with 2354 additions and 55 deletions

View File

@ -564,7 +564,7 @@ def admin_mandanten():
"level": level,
"admin_name": admin_name,
"admin_email": admin_email,
"groups": selected_groups,
"groups": selected_groups
}
**get_current_user()
@ -1612,3 +1612,315 @@ def impressum():
@app.route("/datenschutz")
def datenschutz():
return render_template("datenschutz.html", **get_current_user())
@app.route("/admin/questions")
@admin_required
def admin_questions():
conn = get_connection()
cur = conn.cursor()
cur.execute("""
SELECT id, code, title
FROM course
ORDER BY min_level, sort_order, code
""")
courses = fetchall_dict(cur)
cur.close()
conn.close()
return render_template(
"admin_questions.html",
page_title="Assessment-Verwaltung",
active_page="admin_questions",
courses=courses,
**get_current_user()
)
@app.route("/admin/questions/<int:course_id>", methods=["GET", "POST"])
@admin_required
def admin_questions_course(course_id):
conn = get_connection()
cur = conn.cursor()
cur.execute("""
SELECT id, code, title
FROM course
WHERE id = %s
""", (course_id,))
course = fetchone_dict(cur)
if not course:
cur.close()
conn.close()
abort(404)
form_error = None
if request.method == "POST":
action = request.form.get("action")
if action == "create_question":
title = request.form.get("title", "").strip()
question_text = request.form.get("question_text", "").strip()
sort_order = request.form.get("sort_order", "0").strip()
answers = [
request.form.get("answer_1", "").strip(),
request.form.get("answer_2", "").strip(),
request.form.get("answer_3", "").strip(),
]
correct_index = request.form.get("correct_index", "").strip()
if not question_text:
form_error = "Fragetext ist Pflicht."
elif not all(answers):
form_error = "Alle drei Antwortmöglichkeiten müssen ausgefüllt sein."
elif correct_index not in ("1", "2", "3"):
form_error = "Bitte die richtige Antwort auswählen."
else:
cur.execute("""
INSERT INTO question (course_id, title, question_text, sort_order)
VALUES (%s, %s, %s, %s)
RETURNING id
""", (
course_id,
title or None,
question_text,
int(sort_order or 0)
))
question_id = cur.fetchone()[0]
for idx, answer_text in enumerate(answers, start=1):
cur.execute("""
INSERT INTO answer (question_id, answer_text, is_correct)
VALUES (%s, %s, %s)
""", (
question_id,
answer_text,
str(idx) == correct_index
))
conn.commit()
elif action == "delete_question":
question_id = int(request.form.get("question_id"))
cur.execute("""
DELETE FROM question
WHERE id = %s
AND course_id = %s
""", (question_id, course_id))
conn.commit()
elif action == "update_question":
question_id = int(request.form.get("question_id"))
title = request.form.get("title", "").strip()
question_text = request.form.get("question_text", "").strip()
sort_order = request.form.get("sort_order", "0").strip()
answers = [
request.form.get("answer_1", "").strip(),
request.form.get("answer_2", "").strip(),
request.form.get("answer_3", "").strip(),
]
correct_index = request.form.get("correct_index", "").strip()
if not question_text:
form_error = "Fragetext ist Pflicht."
elif not all(answers):
form_error = "Alle drei Antwortmöglichkeiten müssen ausgefüllt sein."
elif correct_index not in ("1", "2", "3"):
form_error = "Bitte die richtige Antwort auswählen."
else:
# Frage aktualisieren
cur.execute("""
UPDATE question
SET title = %s,
question_text = %s,
sort_order = %s
WHERE id = %s
AND course_id = %s
""", (
title or None,
question_text,
int(sort_order or 0),
question_id,
course_id
))
# Bestehende Antworten in stabiler Reihenfolge laden
cur.execute("""
SELECT id
FROM answer
WHERE question_id = %s
ORDER BY id
""", (question_id,))
existing_answers = cur.fetchall()
if len(existing_answers) == 3:
for idx, row in enumerate(existing_answers, start=1):
answer_id = row[0]
cur.execute("""
UPDATE answer
SET answer_text = %s,
is_correct = %s
WHERE id = %s
AND question_id = %s
""", (
answers[idx - 1],
str(idx) == correct_index,
answer_id,
question_id
))
else:
# Falls inkonsistent, Antworten neu aufbauen
cur.execute("""
DELETE FROM answer
WHERE question_id = %s
""", (question_id,))
for idx, answer_text in enumerate(answers, start=1):
cur.execute("""
INSERT INTO answer (question_id, answer_text, is_correct)
VALUES (%s, %s, %s)
""", (
question_id,
answer_text,
str(idx) == correct_index
))
conn.commit()
cur.execute("""
SELECT id, title, question_text, sort_order
FROM question
WHERE course_id = %s
ORDER BY sort_order, id
""", (course_id,))
questions = fetchall_dict(cur)
for q in questions:
cur.execute("""
SELECT id, answer_text, is_correct
FROM answer
WHERE question_id = %s
ORDER BY id
""", (q["id"],))
q["answers"] = fetchall_dict(cur)
cur.close()
conn.close()
return render_template(
"admin_questions_course.html",
page_title="Fragen verwalten",
active_page="admin_questions",
course=course,
questions=questions,
form_error=form_error,
**get_current_user()
)
@app.route("/course/<int:course_id>/assessment", methods=["GET", "POST"])
@login_required
def course_assessment(course_id):
mandant_level = session.get("mandant_level", 0)
conn = get_connection()
cur = conn.cursor()
cur.execute("""
SELECT id, code, title
FROM course
WHERE id = %s
""", (course_id,))
course = fetchone_dict(cur)
if not course:
cur.close()
conn.close()
abort(404)
if not is_course_allowed_for_level(course["code"], mandant_level):
cur.close()
conn.close()
abort(403)
if request.method == "GET":
cur.execute("""
SELECT id, title, question_text
FROM question
WHERE course_id = %s
ORDER BY RANDOM()
""", (course_id,))
questions = fetchall_dict(cur)
for q in questions:
cur.execute("""
SELECT id, answer_text
FROM answer
WHERE question_id = %s
ORDER BY RANDOM()
""", (q["id"],))
q["answers"] = fetchall_dict(cur)
cur.close()
conn.close()
return render_template(
"course_assessment.html",
page_title="Assessment",
active_page="courses",
course=course,
questions=questions,
**get_current_user()
)
# POST = Auswertung
cur.execute("""
SELECT id
FROM question
WHERE course_id = %s
""", (course_id,))
questions = fetchall_dict(cur)
total_questions = len(questions)
correct_answers = 0
for q in questions:
selected_answer_id = request.form.get(f"question_{q['id']}")
if not selected_answer_id:
continue
cur.execute("""
SELECT is_correct
FROM answer
WHERE id = %s
AND question_id = %s
""", (int(selected_answer_id), q["id"]))
row = cur.fetchone()
if row and row[0] is True:
correct_answers += 1
score = correct_answers
passed = total_questions > 0 and correct_answers == total_questions
cur.execute("""
INSERT INTO user_assessment (user_id, course_id, score, passed)
VALUES (%s, %s, %s, %s)
""", (session["user_id"], course_id, score, passed))
conn.commit()
cur.close()
conn.close()
return render_template(
"course_assessment_result.html",
page_title="Assessment Ergebnis",
active_page="courses",
course=course,
score=score,
total_questions=total_questions,
passed=passed,
**get_current_user()
)

View File

@ -81,6 +81,23 @@
<input type="password" id="admin_password2" name="admin_password2" required>
</div>
<div class="form-row form-row-full">
<label>Gruppen für diesen Mandanten</label>
<div class="checkbox-group">
<label>
<input type="checkbox" name="groups" value="Useradministration"
{% if not form_values or 'Useradministration' in form_values.groups %}checked{% endif %}>
Useradministration
</label>
<label>
<input type="checkbox" name="groups" value="Contentmanager"
{% if form_values and 'Contentmanager' in form_values.groups %}checked{% endif %}>
Contentmanager
</label>
</div>
</div>
<div class="form-row form-row-full">
<div id="mandant-create-error" class="error-box" style="display: none;"></div>

View File

@ -0,0 +1,36 @@
{% extends "base.html" %}
{% block content %}
<h1>Assessment-Verwaltung</h1>
<div class="admin-panel">
<h2>Kurs auswählen</h2>
<div class="table-wrap">
<table class="mandanten-table">
<thead>
<tr>
<th>ID</th>
<th>Code</th>
<th>Titel</th>
<th>Aktion</th>
</tr>
</thead>
<tbody>
{% for c in courses %}
<tr>
<td>{{ c.id }}</td>
<td>{{ c.code }}</td>
<td>{{ c.title }}</td>
<td>
<a href="/admin/questions/{{ c.id }}" class="btn-primary btn-small">Fragen verwalten</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,152 @@
{% extends "base.html" %}
{% block content %}
<h1>Assessment für Kurs {{ course.code }} {{ course.title }}</h1>
{% if form_error %}
<div class="error-box">{{ form_error }}</div>
{% endif %}
<div class="admin-panel">
<h2>Neue Frage anlegen</h2>
<form method="post" class="admin-grid-form">
<input type="hidden" name="action" value="create_question">
<div class="form-row">
<label>Titel</label>
<input type="text" name="title">
</div>
<div class="form-row">
<label>Sortierung</label>
<input type="number" name="sort_order" value="0">
</div>
<div class="form-row form-row-full">
<label>Fragetext</label>
<textarea name="question_text" required></textarea>
</div>
<div class="form-row">
<label>Antwort 1</label>
<input type="text" name="answer_1" required>
</div>
<div class="form-row">
<label>Antwort 2</label>
<input type="text" name="answer_2" required>
</div>
<div class="form-row">
<label>Antwort 3</label>
<input type="text" name="answer_3" required>
</div>
<div class="form-row">
<label>Richtige Antwort</label>
<select name="correct_index" required>
<option value="">Bitte wählen</option>
<option value="1">Antwort 1</option>
<option value="2">Antwort 2</option>
<option value="3">Antwort 3</option>
</select>
</div>
<div class="form-row form-row-full">
<button type="submit" class="btn-primary">Frage anlegen</button>
<a href="/admin/questions" class="btn-secondary">Zurück</a>
</div>
</form>
</div>
<div class="admin-panel">
<h2>Bestehende Fragen</h2>
<div class="table-wrap">
<table class="mandanten-table">
<thead>
<tr>
<th>ID</th>
<th>Frage</th>
<th>Antworten</th>
<th>Aktion</th>
</tr>
</thead>
<tbody>
{% for q in questions %}
<tr>
<td colspan="4">
<div class="admin-card">
<form method="post" class="admin-grid-form">
<input type="hidden" name="action" value="update_question">
<input type="hidden" name="question_id" value="{{ q.id }}">
<div class="form-row">
<label>ID</label>
<input type="text" value="{{ q.id }}" readonly>
</div>
<div class="form-row">
<label>Titel</label>
<input type="text" name="title" value="{{ q.title or '' }}">
</div>
<div class="form-row">
<label>Sortierung</label>
<input type="number" name="sort_order" value="{{ q.sort_order }}">
</div>
<div class="form-row form-row-full">
<label>Fragetext</label>
<textarea name="question_text" required>{{ q.question_text }}</textarea>
</div>
<div class="form-row">
<label>Antwort 1</label>
<input type="text" name="answer_1" value="{{ q.answers[0].answer_text if q.answers|length > 0 else '' }}" required>
</div>
<div class="form-row">
<label>Antwort 2</label>
<input type="text" name="answer_2" value="{{ q.answers[1].answer_text if q.answers|length > 1 else '' }}" required>
</div>
<div class="form-row">
<label>Antwort 3</label>
<input type="text" name="answer_3" value="{{ q.answers[2].answer_text if q.answers|length > 2 else '' }}" required>
</div>
<div class="form-row">
<label>Richtige Antwort</label>
<select name="correct_index" required>
<option value="1" {% if q.answers|length > 0 and q.answers[0].is_correct %}selected{% endif %}>Antwort 1</option>
<option value="2" {% if q.answers|length > 1 and q.answers[1].is_correct %}selected{% endif %}>Antwort 2</option>
<option value="3" {% if q.answers|length > 2 and q.answers[2].is_correct %}selected{% endif %}>Antwort 3</option>
</select>
</div>
<div class="form-row form-row-full">
<div class="admin-actions">
<button type="submit" class="btn-primary">Speichern</button>
</div>
</div>
</form>
<form method="post" style="margin-top: 12px;">
<input type="hidden" name="action" value="delete_question">
<input type="hidden" name="question_id" value="{{ q.id }}">
<button type="submit" class="btn-danger btn-small"
onclick="return confirm('Frage wirklich löschen?')">Löschen</button>
</form>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}

View File

@ -38,6 +38,7 @@
<a href="/admin/mandanten">Mandanten</a>
<a href="/admin/checklist">Checklist</a>
<a href="/admin/courses">Kurse</a>
<a href="/admin/questions">Assessment</a>
{% endif %}
{% if is_user_admin %}
<a href="/useradmin/mandant">Useradministration</a>

View File

@ -4,9 +4,41 @@
<h2>AI Governance Basics</h2>
<p>
KI-Systeme müssen nachvollziehbar, sicher und kontrollierbar sein...
</p>
<section class="ki-erklaerung">
<h2>Teil 1 Wie KI wirklich funktioniert: Muster statt „Speicher“</h2>
<p><strong>Ein verbreiteter Irrtum lautet:</strong><br>
„KI speichert das Internet und ruft Wissen ab.“</p>
<p>Moderne KI funktioniert völlig anders.</p>
<p>Stellen Sie sich vor, Sie zeigen einer Person Millionen von Bildern und sagen jeweils dazu:</p>
<ul>
<li>„Das ist eine Katze.“</li>
<li>„Das ist ein Hund.“</li>
<li>„Das ist ein Auto.“</li>
</ul>
<p>Nach ausreichend Beispielen versteht diese Person Muster: Welche Formen typisch für eine Katze sind, welche für Hunde, welche für Autos.</p>
<p>Wenn Sie später ein neues Bild zeigen, das diese Person noch nie gesehen hat, kann sie sagen:</p>
<blockquote>
„Das sieht nach einer Katze aus.“
</blockquote>
<p>Nicht, weil sie sich das Bild gemerkt hat sondern weil sie Strukturen und Muster gelernt hat.</p>
<p><strong>Genau so funktioniert KI:</strong></p>
<ul>
<li>Sie speichert keine einzelnen Texte oder Bilder.</li>
<li>Sie baut intern keine Bibliothek auf.</li>
<li>Sie lernt statistische Zusammenhänge und Merkmale.</li>
<li>Und während des Trainings entstehen mathematische Strukturen, die Muster abbilden.</li>
</ul>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}" class="btn-secondary">Zurück</a>

View File

@ -4,13 +4,61 @@
<h2>AI Governance Basics</h2>
<p>
KI-Systeme müssen einen hübschen Avatar haben sein...
</p>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 2 Wie KI antwortet: Wahrscheinlichkeiten Wort für Wort</h2>
<p class="lead">
„Wenn Sie mit einer Sprach-KI arbeiten, passiert etwas mathematisch Einfaches, aber extrem Effektives:
</p>
<p>
Die KI berechnet:<br>
<strong>„Welches Wort ist als nächstes am wahrscheinlichsten?“</strong>
</p>
<p><strong>Beispiel:</strong></p>
<p>
Sie schreiben: „Der frühe Vogel fängt den …“
</p>
<p>
Die KI hat gelernt, dass in fast allen Fällen das Wort „Wurm“ folgt
also wählt sie „Wurm“, weil es statistisch am wahrscheinlichsten ist.
</p>
<p>
Satz für Satz, Wort für Wort entsteht so ein Text, der plausibel ist
aber nicht automatisch korrekt.
</p>
<p><strong>Das gilt auch für Bilder:</strong></p>
<p>
Wenn Sie schreiben:<br>
„Eine Frau mit Hund im Park bei Sonnenuntergang“,
</p>
<p>
kombiniert das Modell alle Muster, die typisch für Frauen, Hunde, Parks und Sonnenuntergänge sind —
wie jemand, der ein Bild nachzeichnet, das er zuvor nie gesehen hat, aber dessen Bestandteile er gut kennt.
</p>
<p><strong>Wichtig:</strong></p>
<blockquote class="highlight-quote">
Die KI „weiß“ nicht, was ein Hund ist.<br>
Sie erkennt nur die Muster, die statistisch mit „Hund“ verbunden sind.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/1" class="btn-secondary">Zurück</a>
<a href="/courses" class="btn-primary">Fertig</a>
<a href="/course/{{ course_id }}/page/3" class="btn-secondary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,82 @@
{% extends "base.html" %}
{% block content %}
<h2>AI Governance Basics</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 3 Warum KI halluziniert: Der „mündliche Abi-Prüfung“-Moment</h2>
<p class="lead">
„Ein entscheidender Punkt ist:
</p>
<p>
KI darf technisch nie sagen: <strong>„Ich weiß es nicht.“</strong>
</p>
<p>
Sie muss immer eine Antwort geben — weil sie Wahrscheinlichkeiten berechnet, nicht Gewissheiten.
</p>
<p>
Das lässt sich gut mit einer mündlichen Abiturprüfung vergleichen:
</p>
<p>
Stellen Sie sich einen Schüler vor, der eine Frage gestellt bekommt, auf die er keine Antwort weiß.
</p>
<p>
Er darf aber nicht schweigen.
</p>
<p>
Also versucht er, etwas halbwegs Plausibles zu formulieren
im besten Fall richtig, im schlimmsten Fall komplett daneben.
</p>
<p><strong>Genau so verhält sich KI:</strong></p>
<p>
Wenn Informationen im Training fehlen, unklar sind oder nie existiert haben,
erfindet die KI eine Antwort, die so klingt,
als könnte sie stimmen basierend auf den gelernten Mustern.
</p>
<p>
Das kann harmlos sein.
</p>
<p>
Es kann aber auch extrem gefährlich sein.
</p>
<p><strong>Beispiel:</strong></p>
<p>
Sie fragen eine KI:<br>
„Welche Bücher hat Person XY veröffentlicht?“
</p>
<p>
Wenn die KI dazu keine sicheren Trainingsdaten hat, könnte sie Buchtitel erfinden,
die realistisch klingen, aber nie existiert haben — und diese Person damit falsch zitieren.
</p>
<blockquote class="highlight-quote">
Deshalb sind KI-Ausgaben immer nur Vorschläge.<br>
Sie können richtig sein müssen es aber nicht.<br>
Und sie dürfen niemals ungeprüft weitergegeben werden.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/2" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/4" class="btn-secondary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,49 @@
{% extends "base.html" %}
{% block content %}
<h2>AI Governance Basics</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 4 Wo KI im Unternehmen genutzt wird und was daran riskant ist</h2>
<p class="lead">
„KI wird heute in fast allen Unternehmensbereichen eingesetzt:
</p>
<ul class="example-list">
<li><strong>Marketing:</strong> Textentwürfe, Bilder, Claims</li>
<li><strong>HR:</strong> Stellenanzeigen, E-Mail-Entwürfe, Screening-Vorschläge</li>
<li><strong>Kundenservice:</strong> Antwortvorschläge, Chat-Assistenten</li>
<li><strong>Einkauf:</strong> Lieferantenrecherche, Marktüberblicke</li>
<li><strong>IT:</strong> Dokumentation, Fehlersuche, Skriptvorschläge</li>
<li><strong>Management:</strong> Zusammenfassungen, Risiken, Szenarien</li>
</ul>
<p><strong>Doch überall dort können Risiken entstehen:</strong></p>
<ul class="key-points">
<li>Falschinformationen werden übernommen</li>
<li>Veraltete Inhalte wirken aktuell</li>
<li>Diskriminierende Muster reproduzieren sich (z. B. in Stellenausschreibungen)</li>
<li>Vertrauliche Daten werden in unsichere Tools eingegeben</li>
<li>Kunden merken nicht, dass sie mit KI interagieren</li>
<li>Urheberrechtsverletzungen durch Stil-Nachahmung</li>
</ul>
<blockquote class="highlight-quote">
Bei richtiger Nutzung kann KI entlasten.<br>
Bei falscher Nutzung kann KI Schaden anrichten —<br>
fachlich, rechtlich und politisch.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/3" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/5" class="btn-secondary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,92 @@
{% extends "base.html" %}
{% block content %}
<h2>AI Governance Basics</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 5 Governance: Verantwortung, Regeln, Pflichten</h2>
<p class="lead">
„Der wichtigste Satz dieses gesamten Moduls lautet:
</p>
<blockquote class="highlight-quote">
➡️ Verantwortlich ist immer der Mensch nie die KI.
</blockquote>
<p>
Der EU AI Act nennt das <strong>Human Oversight</strong>.
</p>
<p><strong>Das bedeutet:</strong></p>
<ul class="example-list">
<li>Sie prüfen Ergebnisse</li>
<li>Sie korrigieren Fehler</li>
<li>Sie entscheiden, was weitergegeben wird</li>
<li>Sie halten Transparenz- und Dokumentationspflichten ein</li>
</ul>
<p>
KI darf unterstützen — aber nicht entscheiden.
</p>
<p><strong>Daraus ergeben sich die wichtigsten Grundregeln, die für alle Mitarbeitenden gelten:</strong></p>
<p><strong>1. Keine sensiblen oder personenbezogenen Daten in öffentliche KI</strong></p>
<p>Dazu gehören:</p>
<ul class="key-points">
<li>Kundendaten</li>
<li>Gesundheitsdaten</li>
<li>interne Infos</li>
<li>vertrauliche Dokumente</li>
<li>personenbezogene Inhalte aller Art</li>
</ul>
<p><strong>2. KI-Ergebnisse immer prüfen</strong></p>
<p>
Besonders bei HR, Recht, Marketing, Technik, Kundenkontakt und Führung.
</p>
<p><strong>3. Kennzeichnungspflichten einhalten</strong></p>
<p>
Wenn Inhalte durch KI entstanden sind, muss dies erkennbar sein —
insbesondere in der Außenkommunikation.
</p>
<p><strong>4. Dokumentation</strong></p>
<p>
Bei geschäftskritischen Prozessen muss festgehalten werden:
</p>
<ul class="key-points">
<li>Warum KI genutzt wurde</li>
<li>Welche Prompts verwendet wurden</li>
<li>Welche Kontrolle stattgefunden hat</li>
<li>Wer die Verantwortung trägt</li>
</ul>
<blockquote class="highlight-quote">
Diese Regeln schützen:<br>
• Mitarbeitende<br>
• das Unternehmen<br>
• Betroffene<br>
• und die Öffentlichkeit.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/4" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/assessment" class="btn-primary">Zum Assessment</a>
</div>
{% endblock %}

View File

@ -0,0 +1,38 @@
{% extends "base.html" %}
{% block content %}
<h2>AI Governance Basics</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Abschluss Überblick & Ausblick</h2>
<p class="lead">
„Damit haben Sie die Grundlagen von AI Governance verstanden.
</p>
<p>
Sie wissen jetzt, wie KI technisch arbeitet, warum Halluzinationen unvermeidbar sind,
welche Chancen und Risiken im Arbeitsalltag bestehen
und welche Grundregeln für einen sicheren und rechtskonformen KI-Einsatz gelten.
</p>
<p>
Im nächsten Modul geht es um die ethische Dimension:
</p>
<blockquote class="highlight-quote">
Bias, Diskriminierung und Fairness im KI-Einsatz —<br>
Themen, die der EU AI Act ausdrücklich hervorhebt.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/5" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/assessment" class="btn-primary">Zum Assessment</a>
</div>
{% endblock %}

View File

@ -0,0 +1,35 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Ethical AI</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<p class="lead">
In diesem Kurs geht es um die ethische Dimension von KI:
</p>
<ul class="example-list">
<li>Was bedeutet Fairness im Kontext von KI?</li>
<li>Was ist Bias und warum entsteht er praktisch immer?</li>
<li>Wie kann es zu Diskriminierung kommen, obwohl niemand „böse Absicht“ hatte?</li>
<li>Und welche rechtlichen Grenzen setzt der EU AI Act, die EU-Grundrechtecharta und das Antidiskriminierungsrecht?</li>
</ul>
<p>
Ziel dieses Moduls ist es,
dass Sie sensibel werden für die Risiken von Ungleichbehandlung durch KI
und wissen, wie Sie im Alltag gegensteuern können.
</p>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/2" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,57 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Ethikrahmen</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 1 Ethikrahmen: Menschenrechte zuerst</h2>
<p class="lead">
„Bevor wir auf Bias und Diskriminierung schauen, ist wichtig zu verstehen:
</p>
<p>
KI ist kein neutraler Technikbaukasten.
</p>
<p>
Internationale Rahmenwerke betonen, dass KI immer an Menschenrechten ausgerichtet sein muss, zum Beispiel:
</p>
<ul class="example-list">
<li>die EU-Grundrechtecharta (Menschenwürde, Gleichbehandlung, Datenschutz),</li>
<li>die OECD AI Principles (Fairness, Transparenz, Verantwortlichkeit),</li>
<li>die UNESCO-Empfehlung zu Ethik der KI (Non-Discrimination, Inclusion, Diversity).</li>
</ul>
<p>
Auch der EU AI Act knüpft daran an:
</p>
<p><strong>Er verbietet bestimmte Praktiken komplett z. B.</strong></p>
<ul class="key-points">
<li>manipulative Techniken, die Menschen mit Schwächen ausnutzen,</li>
<li>bestimmte Formen von sozialem Scoring,</li>
<li>bestimmte Arten biometrischer Überwachung.</li>
</ul>
<blockquote class="highlight-quote">
Der Kern dahinter:<br>
KI darf Menschen nicht entwürdigen,<br>
nicht systematisch benachteiligen<br>
und nicht intransparent Entscheidungen über ihr Leben treffen.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/1" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/3" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,57 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Was ist Bias?</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 2 Was ist Bias? Mehr als nur „Fehler im System“</h2>
<p class="lead">
„Im KI-Kontext hören Sie oft das Wort Bias.
</p>
<p>
Bias bedeutet Verzerrung aber nicht im Sinn eines reinen Softwarefehlers,
sondern als Kombination aus:
</p>
<ul class="example-list">
<li>
<strong>Daten-Bias:</strong><br>
Trainingsdaten sind schief, unvollständig oder einseitig.<br>
Beispiel: Lebensläufe aus einer Zeit, in der vor allem Männer in Führungspositionen eingestellt wurden die KI lernt: „Führung = männlich“.
</li>
<li>
<strong>Repräsentations-Bias:</strong><br>
Bestimmte Gruppen kommen zu selten vor oder nur in stereotypen Rollen.<br>
Beispiel: Bilder von Ingenieuren sind überwiegend männlich, Pflegekräfte überwiegend weiblich.
</li>
<li>
<strong>Historischer Bias:</strong><br>
Gesellschaftliche Ungleichheiten spiegeln sich in den Daten wider und werden fortgeschrieben, wenn man sie nicht aktiv korrigiert.
</li>
<li>
<strong>Nutzungs-Bias:</strong><br>
Die Art, wie wir KI einsetzen, kann Verzerrungen verstärken.<br>
Beispiel: Wir benutzen KI nur mit bestimmten Ausgangsannahmen und merken nicht, dass wir immer die gleichen Muster reproduzieren.
</li>
</ul>
<blockquote class="highlight-quote">
Wichtig:<br>
Bias ist oft unbeabsichtigt,<br>
aber seine Wirkung kann massiv diskriminierend sein <br>
gerade in Bereichen wie HR, Kreditvergabe oder Zugang zu Leistungen.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/2" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/4" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,66 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Diskriminierung</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 3 Diskriminierung: Wenn Muster zu Ungleichbehandlung werden</h2>
<p class="lead">
„Bias allein ist noch kein Rechtsverstoß.
</p>
<p>
Er wird zum Problem, wenn er zu systematischer Ungleichbehandlung führt also zu Diskriminierung.
</p>
<p>
Im europäischen Kontext sind bestimmte Merkmale besonders geschützt, zum Beispiel:
</p>
<ul class="example-list">
<li>Geschlecht</li>
<li>Herkunft / Ethnie</li>
<li>Religion oder Weltanschauung</li>
<li>Behinderung</li>
<li>Alter</li>
<li>sexuelle Identität</li>
</ul>
<p><strong>Wenn KI-Systeme Entscheidungen beeinflussen, die damit zusammenhängen z. B.:</strong></p>
<ul class="key-points">
<li>Wer wird zu einem Vorstellungsgespräch eingeladen?</li>
<li>Wer bekommt ein Kreditangebot?</li>
<li>Wem werden bestimmte Produkte oder Preise angezeigt?</li>
</ul>
<p>
und diese Muster dazu führen, dass bestimmte Gruppen regelmäßig schlechter gestellt werden,
sprechen wir von Diskriminierung.
</p>
<p><strong>Der EU AI Act nimmt das ausdrücklich ernst:</strong></p>
<ul class="example-list">
<li>Hochrisiko-KI im HR-Bereich oder bei Zugang zu Leistungen unterliegt strengen Anforderungen an Datenqualität und Fairness.</li>
<li>Verbotene Praktiken zielen u. a. darauf ab, schwache oder vulnerable Gruppen zu schützen.</li>
</ul>
<blockquote class="highlight-quote">
Das Wichtige für den Alltag:<br>
Auch ohne böse Absicht kann KI diskriminieren,<br>
wenn niemand Daten, Prozesse und Ergebnisse kritisch prüft.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/3" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/5" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,65 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Praxisbeispiele</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 4 Praxisbeispiele: Wo es im Alltag kritisch wird</h2>
<p class="lead">
„Schauen wir auf ein paar typische Alltagsfälle, in denen ethische und rechtliche Risiken schnell auftreten:
</p>
<p><strong>1. HR &amp; Recruiting</strong></p>
<ul class="example-list">
<li>
KI schreibt Stellenanzeigen:<br>
Wenn nur männliche Formen verwendet werden, könnte das Frauen oder diverse Personen abschrecken.
</li>
<li>
Screening-Tools werden mit historischen Daten trainiert, in denen v. a. Männer in Führungspositionen waren.<br>
Die KI lernt: „Führung = männlich“ und stuft Bewerbungen von Frauen schlechter ein.
</li>
</ul>
<p><strong>2. Marketing &amp; Werbung</strong></p>
<ul class="example-list">
<li>
Ein System zeigt bestimmte Anzeigen überwiegend jüngeren Menschen, andere nur Männern oder nur bestimmten sozialen Gruppen.
</li>
<li>
Preise oder Angebote werden dynamisch angepasst z. B. nach Wohnort oder vermeintlicher „Kaufkraft“.<br>
Das kann zu verdeckten Formen sozialer Benachteiligung führen.
</li>
</ul>
<p><strong>3. Kundenservice &amp; Chatbots</strong></p>
<ul class="example-list">
<li>
Chatbots behandeln Reklamationen abhängig von Sprache, Schreibstil oder Name anders.
</li>
<li>
Bestimmte Kundengruppen werden schneller abgewimmelt oder nicht mit Kulanz bedacht.
</li>
</ul>
<blockquote class="highlight-quote">
In all diesen Fällen kann KI bestehende Ungleichheiten verstärken,<br>
wenn niemand bewusst darauf achtet, wie Daten gewählt,<br>
Systeme konfiguriert und Ergebnisse interpretiert werden.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/4" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/6" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,65 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Praxisbeispiele</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 4 Praxisbeispiele: Wo es im Alltag kritisch wird</h2>
<p class="lead">
„Schauen wir auf ein paar typische Alltagsfälle, in denen ethische und rechtliche Risiken schnell auftreten:
</p>
<p><strong>1. HR &amp; Recruiting</strong></p>
<ul class="example-list">
<li>
KI schreibt Stellenanzeigen:<br>
Wenn nur männliche Formen verwendet werden, könnte das Frauen oder diverse Personen abschrecken.
</li>
<li>
Screening-Tools werden mit historischen Daten trainiert, in denen v. a. Männer in Führungspositionen waren.<br>
Die KI lernt: „Führung = männlich“ und stuft Bewerbungen von Frauen schlechter ein.
</li>
</ul>
<p><strong>2. Marketing &amp; Werbung</strong></p>
<ul class="example-list">
<li>
Ein System zeigt bestimmte Anzeigen überwiegend jüngeren Menschen, andere nur Männern oder nur bestimmten sozialen Gruppen.
</li>
<li>
Preise oder Angebote werden dynamisch angepasst z. B. nach Wohnort oder vermeintlicher „Kaufkraft“.<br>
Das kann zu verdeckten Formen sozialer Benachteiligung führen.
</li>
</ul>
<p><strong>3. Kundenservice &amp; Chatbots</strong></p>
<ul class="example-list">
<li>
Chatbots behandeln Reklamationen abhängig von Sprache, Schreibstil oder Name anders.
</li>
<li>
Bestimmte Kundengruppen werden schneller abgewimmelt oder nicht mit Kulanz bedacht.
</li>
</ul>
<blockquote class="highlight-quote">
In all diesen Fällen kann KI bestehende Ungleichheiten verstärken,<br>
wenn niemand bewusst darauf achtet, wie Daten gewählt,<br>
Systeme konfiguriert und Ergebnisse interpretiert werden.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/4" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/6" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,42 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Abschluss</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Abschluss Überblick &amp; Ausblick</h2>
<p class="lead">
In diesem Modul haben Sie gesehen, dass KI nicht im luftleeren Raum existiert,
</p>
<p>
sondern immer auf gesellschaftlichen Strukturen und Daten aufbaut
mit allen Ungleichheiten, die darin stecken.
</p>
<p>
Ethik und Nicht-Diskriminierung sind deshalb keine „weichen Themen“,
sondern zentrale Anforderungen an jede verantwortungsvolle KI-Nutzung.
</p>
<p>
Im nächsten Modul vertiefen wir das Thema Risiko:
</p>
<blockquote class="highlight-quote">
Wir schauen uns an, wie Sie KI-Risiken systematisch erkennen und einordnen können <br>
von Halluzinationen über Datenqualität bis zu kritischen Einsatzbereichen.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/6" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/assessment" class="btn-primary">Zum Assessment</a>
</div>
{% endblock %}

View File

@ -0,0 +1,38 @@
{% extends "base.html" %}
{% block content %}
<h2>A3 Risiken der AI</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Willkommen zu Compliance Verification und zum Modul A3 AI Risk &amp; Impact Awareness</h2>
<p class="lead">
In diesem Modul geht es darum, KI-Risiken realistisch einschätzen zu können.
</p>
<p><strong>Sie lernen:</strong></p>
<ul class="example-list">
<li>welche Risikoarten es gibt,</li>
<li>warum Datenqualität über Erfolg oder Misserfolg entscheidet,</li>
<li>wie Halluzinationen zu konkreten Schäden führen können,</li>
<li>welche Bereiche im Unternehmen besonders kritisch sind,</li>
<li>und wie man KI-Ausgaben sicher bewertet, bevor man sie nutzt.</li>
</ul>
<p>
Ziel ist, dass Sie Risiken nicht nur erkennen,
sondern auch einordnen und benennen können.
</p>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/2" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,65 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Die vier zentralen Risikoarten</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 1 Die vier zentralen Risikoarten moderner KI</h2>
<p class="lead">
„Bei KI sprechen wir oft von „Risiken“, aber es gibt nicht nur eines
</p>
<p>
sondern mehrere Arten, die unterschiedliche Ursachen und Auswirkungen haben.
</p>
<p><strong>Die vier wichtigsten sind:</strong></p>
<p><strong>1. Informationsrisiken (Halluzinationen &amp; falsche Fakten)</strong></p>
<p>
KI erfindet Informationen, wenn Trainingsdaten fehlen oder Muster unklar sind.
</p>
<p>
Diese falschen Aussagen klingen oft überzeugend sind aber schlicht falsch.
</p>
<p><strong>2. Bias-Risiken (Verzerrungen &amp; Ungleichbehandlung)</strong></p>
<p>
Daten, die gesellschaftliche Stereotype enthalten, können zu diskriminierenden Ergebnissen führen.
</p>
<p><strong>3. Datenschutz- &amp; Vertraulichkeitsrisiken</strong></p>
<p>
Wenn sensible Daten in öffentliche KI-Systeme eingegeben werden,
kann das gegen Datenschutzrecht verstoßen und Geschäftsgeheimnisse gefährden.
</p>
<p><strong>4. Prozessrisiken (Automatisierung ohne Kontrolle)</strong></p>
<p>
Wenn Menschen KI-Ausgaben ungeprüft übernehmen,
entstehen Fehlerketten, die sich schnell multiplizieren.
</p>
<blockquote class="highlight-quote">
Diese Risiken treten selten einzeln auf <br>
oft verstärken sie sich gegenseitig.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/1" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/3" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,59 @@
{% extends "base.html" %}
{% block content %}
<h2>A3 Datenqualität</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 2 Warum Datenqualität die Grundlage jedes KI-Risikos ist</h2>
<p class="lead">
„Der wichtigste Satz dieses Moduls lautet:
</p>
<blockquote class="highlight-quote">
➡️ Schlechte Daten = schlechte KI.<br>
Einseitige Daten = einseitige KI.<br>
Fehlende Daten = halluzinierende KI.
</blockquote>
<p>
KI lernt ausschließlich aus den Beispielen, die sie sieht.
</p>
<p><strong>Wenn diese Beispiele:</strong></p>
<ul class="example-list">
<li>veraltet</li>
<li>fehlerhaft</li>
<li>stereotyp</li>
<li>unvollständig</li>
<li>oder ungeeignet</li>
</ul>
<p>
sind, dann wird auch die KI-Ausgabe entsprechend schlecht.
</p>
<p><strong>Beispiele:</strong></p>
<ul class="key-points">
<li>Ein Recruiting-Datensatz, der überwiegend männliche Lebensläufe enthält → KI bevorzugt Männer.</li>
<li>Ein medizinischer Datensatz, der nur bestimmte Ethnien abbildet → KI erkennt Symptome anderer Bevölkerungsteile schlechter.</li>
<li>Ein Textkorpus, in dem bestimmte Narrative oft vorkommen → KI reproduziert diese Narrative, selbst wenn sie politisch, kulturell oder wirtschaftlich fragwürdig sind.</li>
</ul>
<blockquote class="highlight-quote">
Deshalb ist Datenqualität der wichtigste Hebel zur Risikoreduktion.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/2" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/4" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,80 @@
{% extends "base.html" %}
{% block content %}
<h2>A3 Halluzinationen</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 3 Halluzinationen in der Praxis: Wenn plausible Fehler gefährlich werden</h2>
<p class="lead">
„In Modul A1 haben wir die Funktionsweise von Halluzinationen erklärt.
</p>
<p>
Hier geht es darum, wie sie konkret Schaden anrichten können.
</p>
<p><strong>Beispiele:</strong></p>
<p><strong>1. Recht &amp; Compliance:</strong></p>
<p>
Die KI erfindet Paragraphen („§ 21a Datenschutzfortschrittsgesetz“), die es nie gab.
</p>
<p>
Wenn solche Texte in Kundendokumente gelangen,
kann das zu Haftungsrisiken führen.
</p>
<p><strong>2. Medizin &amp; Gesundheit:</strong></p>
<p>
Eine KI liefert plausible Gesundheitsratschläge,
die aber wissenschaftlich falsch sind.
</p>
<p>
Hier können Zulassungspflichten verletzt oder Menschen gefährdet werden.
</p>
<p><strong>3. Produktinformationen:</strong></p>
<p>
KI generiert erfundene technische Details,
die ein Gerät gar nicht besitzt.
</p>
<p>
Im Marketing ist das eine Irreführung und rechtlich verboten.
</p>
<p><strong>4. Personenbezug:</strong></p>
<p>
KI dichtet Personen fiktive Ereignisse, Bücher, Aussagen oder Kompetenzen an.
</p>
<p>
Das ist nicht nur peinlich
es kann reputationsschädigend oder sogar rechtswidrig sein.
</p>
<blockquote class="highlight-quote">
Halluzinationen sind kein Ausnahmefehler —<br>
sie sind ein systemisches Verhalten.<br><br>
Der sicherste Umgang ist:<br>
➡️ KI-Ergebnisse niemals ungeprüft übernehmen
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/3" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/5" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,94 @@
{% extends "base.html" %}
{% block content %}
<h2>A3 Kritische Einsatzbereiche</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 4 Kritische Einsatzbereiche im Unternehmen</h2>
<p class="lead">
„In manchen Bereichen sind KI-Risiken besonders hoch,
</p>
<p>
weil schon kleine Fehler große Konsequenzen haben können.
</p>
<p><strong>Hochkritische Bereiche:</strong></p>
<p><strong>1. HR (Human Resources)</strong></p>
<ul class="example-list">
<li>Auswahl von Bewerber:innen</li>
<li>Formulierungen in Stellenanzeigen</li>
<li>interne Bewertungen</li>
</ul>
<p>
Bias kann hier zu Diskriminierung führen ein rechtlicher Hochrisikobereich.
</p>
<p><strong>2. Marketing &amp; externe Kommunikation</strong></p>
<ul class="example-list">
<li>Produktbeschreibungen</li>
<li>Werbeslogans</li>
<li>Kundentexte</li>
</ul>
<p>
Fehler, Irreführungen oder fehlende Kennzeichnung können zu Abmahnungen führen.
</p>
<p><strong>3. Kundenservice &amp; Chatbots</strong></p>
<ul class="example-list">
<li>Antworten auf Beschwerden</li>
<li>Kulanzentscheidungen</li>
</ul>
<p>
Ein Chatbot, der Kund:innen unfair oder unangemessen behandelt,
kann massiv schaden.
</p>
<p><strong>4. Recht, Compliance &amp; Finanzen</strong></p>
<ul class="example-list">
<li>Gesetzesinterpretationen</li>
<li>Vertragszusammenfassungen</li>
<li>Risikobewertungen</li>
</ul>
<p>
Eine halluzinierende KI ist hier schlicht unbrauchbar und gefährlich.
</p>
<p><strong>5. IT &amp; Technik</strong></p>
<ul class="example-list">
<li>Skriptvorschläge</li>
<li>Codegenerierung</li>
<li>Analyse von Fehlermeldungen</li>
</ul>
<p>
Fehler können hier Sicherheitsrisiken erzeugen.
</p>
<blockquote class="highlight-quote">
Je sensibler der Bereich,<br>
desto höher der menschliche Prüfungsbedarf.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/4" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/6" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,77 @@
{% extends "base.html" %}
{% block content %}
<h2>A3 Sicheres Arbeiten mit KI</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 5 Sicheres Arbeiten mit KI: Risikobewusstsein im Alltag</h2>
<p class="lead">
„Risikobewusstsein heißt nicht, KI zu verbieten
</p>
<p>
sondern sie bewusst und kontrolliert einzusetzen.
</p>
<p><strong>Die wichtigsten Regeln für Mitarbeitende:</strong></p>
<p><strong>1. Ergebnisse immer prüfen</strong></p>
<p>
Keine KI-Ausgabe darf 1:1 übernommen werden,
vor allem nicht in rechtlichen, fachlichen oder kundennahen Bereichen.
</p>
<p><strong>2. Quellen und Fakten verifizieren</strong></p>
<p>
Bei Fachinhalten gilt:<br>
„Vertraue nichts ohne Quelle.“
</p>
<p><strong>3. Sensible Bereiche doppelt prüfen</strong></p>
<p>
HR, Recht, Compliance, Gesundheit, Preisgestaltung → immer menschliche Entscheidung.
</p>
<p><strong>4. Keine sensiblen Daten in öffentliche KI-Systeme</strong></p>
<p>
Kein Textbaustein, keine Kundendaten, keine Gesundheitsinfos.
</p>
<p><strong>5. Dokumentation bei kritischen Prozessen</strong></p>
<p>
Wenn KI Einfluss auf Entscheidungen hat, sollte dokumentiert werden:
</p>
<ul class="example-list">
<li>Warum wurde KI genutzt?</li>
<li>Wurde der Output geprüft?</li>
<li>Wer trägt die Verantwortung?</li>
</ul>
<blockquote class="highlight-quote">
Im Zweifel gilt: Rückfrage statt KI<br><br>
Wenn ein Inhalt wichtig, sensibel oder rechtlich relevant ist →<br>
immer menschliche Expertise hinzuziehen.
</blockquote>
<p>
Risikobewusstsein entsteht durch Wissen, nicht durch Angst.
</p>
<p>
Wer versteht, wie KI Fehler erzeugt,
kann sicher und verantwortungsvoll damit umgehen.
</p>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/5" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/7" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,42 @@
{% extends "base.html" %}
{% block content %}
<h2>A3 Abschluss</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Abschluss Überblick &amp; Ausblick</h2>
<p class="lead">
Damit haben Sie gelernt, wie KI-Risiken entstehen,
wie sie sich im Arbeitsalltag auswirken
und wie Sie sie zuverlässig erkennen.
</p>
<p>
Sie wissen nun, welche Bereiche kritisch sind
und welche Grundregeln Sie im Alltag anwenden müssen,
um Fehler, Diskriminierung und rechtliche Verstöße zu vermeiden.
</p>
<p>
Im nächsten Modul geht es um Transparenz und Kundenoffenlegung,
ein zentraler Bestandteil des EU AI Act:
</p>
<blockquote class="highlight-quote">
Wann müssen Sie offenlegen, dass KI verwendet wurde?<br>
Wie kennzeichnet man AI-generated oder AI-assisted Inhalte korrekt?<br>
Und welche Pflichten gelten im Marketing, im Kundendienst und bei der externen Kommunikation?
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/6" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/assessment" class="btn-primary">Zum Assessment</a>
</div>
{% endblock %}

View File

@ -0,0 +1,16 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Ethical AI</h2>
<section class="content-section ai-explainer">
content
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/2" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,17 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Ethikrahmen</h2>
<section class="content-section ai-explainer">
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/1" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/3" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,16 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Was ist Bias?</h2>
<section class="content-section ai-explainer">
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/2" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/4" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,16 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Diskriminierung</h2>
<section class="content-section ai-explainer">
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/3" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/5" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,16 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Praxisbeispiele</h2>
<section class="content-section ai-explainer">
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/4" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/6" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,16 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Fairness</h2>
<section class="content-section ai-explainer">
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/5" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/7" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,16 @@
{% extends "base.html" %}
{% block content %}
<h2>A2 Abschluss</h2>
<section class="content-section ai-explainer">
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/6" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/assessment" class="btn-primary">Zum Assessment</a>
</div>
{% endblock %}

View File

@ -4,9 +4,35 @@
<h2>B1 AI Privacy Basics</h2>
<p>
KI-Systeme müssen die Privatsphäre schützen sein...
</p>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Willkommen zu Compliance Verification und zum Modul B1 Data &amp; Privacy Compliance im KI-Kontext</h2>
<p class="lead">
In diesem Kurs lernen Sie,
</p>
<ul class="example-list">
<li>wann die Nutzung von KI datenschutzrechtlich kritisch wird,</li>
<li>welche Arten von Daten besonders geschützt sind,</li>
<li>welche rechtlichen Grundlagen für die Verarbeitung gelten,</li>
<li>wie Datenübermittlungen an externe Anbieter einzuordnen sind</li>
<li>und welche Grundprinzipien für einen sicheren Umgang mit Daten im KI-Kontext gelten.</li>
</ul>
<p>
Unser Ziel ist nicht,
Sie zu Datenschutzexpertinnen oder Datenschutzexperten zu machen.
</p>
<p>
Unser Ziel ist,
dass Sie ein klares Verständnis dafür entwickeln,
wann ein Prompt rechtliche Risiken auslösen kann
und wie Sie im Arbeitsalltag sicher und verantwortungsvoll mit KI umgehen.
</p>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}" class="btn-secondary">Zurück</a>

View File

@ -2,11 +2,80 @@
{% block content %}
<h2>B1 AI Privacy Basics</h2>
<h2>B 1 Personenbezogene Daten und KI</h2>
<p>
KI-Systeme müssen die Privatsphäre schützen sein...
</p>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 1 Personenbezogene Daten und KI: Wann ein Prompt kritisch wird</h2>
<p class="lead">
„Ein verbreiteter Irrtum lautet:
</p>
<p>
<strong>„Ich gebe der KI nur neutrale Informationen.“</strong>
</p>
<p>
Tatsächlich kann bereits ein Prompt personenbezogene Daten enthalten.
</p>
<p>
Personenbezogene Daten sind alle Informationen,
die sich auf eine identifizierte oder identifizierbare Person beziehen.
</p>
<p><strong>Das kann direkt sein:</strong></p>
<ul class="example-list">
<li>Name</li>
<li>E-Mail-Adresse</li>
<li>Kundennummer</li>
</ul>
<p><strong>Oder indirekt:</strong></p>
<ul class="example-list">
<li>„der Mitarbeiter aus dem Vertrieb, der letzte Woche krank war“</li>
<li>„die Kundin mit der großen Bestellung aus Köln“</li>
</ul>
<p>
Auch Kombinationen von Informationen können dazu führen,
dass eine Person identifizierbar wird.
</p>
<p><strong>Ein weiterer wichtiger Punkt ist der Unterschied zwischen anonymisiert und pseudonymisiert:</strong></p>
<p><strong>Anonymisiert bedeutet:</strong></p>
<p>
Eine Person ist nicht mehr identifizierbar.
</p>
<p><strong>Pseudonymisiert bedeutet:</strong></p>
<p>
Die Identität wurde ersetzt,
kann aber mit zusätzlichen Informationen wiederhergestellt werden.
</p>
<blockquote class="highlight-quote">
Pseudonymisierte Daten gelten weiterhin als personenbezogene Daten.
</blockquote>
<p>
Und genau hier liegt das Risiko:
</p>
<p>
Wenn solche Daten in KI-Systeme eingegeben werden,
besteht die Gefahr,
dass sie unbeabsichtigt an externe Anbieter weitergegeben werden.
</p>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/1" class="btn-secondary">Zurück</a>

View File

@ -0,0 +1,68 @@
{% extends "base.html" %}
{% block content %}
<h2>B1 Teil 2 Rechtsgrundlagen der Verarbeitung</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 2 Rechtsgrundlagen der Verarbeitung: Was erlaubt ist und was nicht</h2>
<p class="lead">
„Sobald personenbezogene Daten verarbeitet werden,
</p>
<p>
benötigt jede Verarbeitung eine rechtliche Grundlage.
</p>
<p>
Die zentrale Vorschrift ist <strong>Artikel 6 der Datenschutz-Grundverordnung</strong>.
</p>
<p><strong>Typische Erlaubnistatbestände sind:</strong></p>
<ul class="example-list">
<li>Einwilligung der betroffenen Person</li>
<li>Vertragserfüllung</li>
<li>berechtigtes Interesse</li>
</ul>
<p><strong>Ein zentraler Konflikt im KI-Kontext ist:</strong></p>
<p>
Viele KI-Systeme verarbeiten Eingaben weiter,
zum Beispiel zur Verbesserung ihrer Modelle.
</p>
<p>
Das bedeutet:
</p>
<p>
Daten können im Rahmen der Nutzung
für Trainingszwecke verwendet werden.
</p>
<blockquote class="highlight-quote">
Für diese Weiterverarbeitung liegt häufig
keine ausreichende Rechtsgrundlage vor.
</blockquote>
<p><strong>Deshalb gilt:</strong></p>
<p>
Nicht jede Nutzung von KI,
die technisch möglich ist,
ist auch rechtlich zulässig.
</p>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/1" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/3" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,57 @@
{% extends "base.html" %}
{% block content %}
<h2>B1 Besondere Kategorien personenbezogener Daten</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 3 Besondere Kategorien personenbezogener Daten</h2>
<p class="lead">
„Noch strengere Regeln gelten
</p>
<p>
für sogenannte besondere Kategorien personenbezogener Daten.
</p>
<p>
Diese sind in <strong>Artikel 9 der Datenschutz-Grundverordnung</strong> geregelt.
</p>
<p><strong>Dazu gehören unter anderem:</strong></p>
<ul class="example-list">
<li>Gesundheitsdaten</li>
<li>ethnische Herkunft</li>
<li>politische Meinungen</li>
<li>religiöse Überzeugungen</li>
</ul>
<p>
Für diese Daten gelten erhöhte Schutzanforderungen.
</p>
<p><strong>Im KI-Kontext bedeutet das:</strong></p>
<p>
Solche Daten dürfen grundsätzlich
nicht in offene oder externe Systeme eingegeben werden.
</p>
<blockquote class="highlight-quote">
Denn hier besteht ein besonders hohes Risiko<br>
für Datenschutzverstöße<br>
und für erhebliche rechtliche Konsequenzen.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/1" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/3" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,59 @@
{% extends "base.html" %}
{% block content %}
<h2>B1 Datenübermittlung an Dritte und Drittlandtransfer</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 4 Datenübermittlung an Dritte und Drittlandtransfer</h2>
<p class="lead">
„Ein weiterer zentraler Punkt ist die Datenübermittlung an Dritte.
</p>
<p>
Viele KI-Anbieter haben ihren Sitz außerhalb der Europäischen Union,
insbesondere in den Vereinigten Staaten.
</p>
<p><strong>Das bedeutet:</strong></p>
<p>
Daten können in sogenannte Drittländer übertragen werden.
</p>
<p>
Für solche Übermittlungen gelten besondere Anforderungen,
zum Beispiel Standardvertragsklauseln.
</p>
<p>
Auch rechtliche Entwicklungen wie das <strong>Schrems-II-Urteil</strong>
haben gezeigt,
dass solche Übermittlungen mit Risiken verbunden sind.
</p>
<p><strong>Insbesondere bei offenen KI-Tools besteht die Gefahr:</strong></p>
<ul class="key-points">
<li>dass Daten gespeichert werden,</li>
<li>weiterverarbeitet werden</li>
<li>oder für Trainingszwecke genutzt werden.</li>
</ul>
<blockquote class="highlight-quote">
Deshalb gilt als Grundregel:<br>
Keine vertraulichen oder personenbezogenen Daten<br>
in offene KI-Systeme eingeben.
</blockquote>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/1" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/3" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,61 @@
{% extends "base.html" %}
{% block content %}
<h2>B1 Privacy by Design</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Teil 5 Privacy by Design und sichere Nutzung im Alltag</h2>
<p class="lead">
„Der wichtigste Grundsatz im Umgang mit Daten lautet:
</p>
<blockquote class="highlight-quote">
➡️ Privacy by Design und Privacy by Default.
</blockquote>
<p><strong>Das bedeutet:</strong></p>
<p>
Datenschutz muss von Anfang an mitgedacht werden.
</p>
<p><strong>Im Arbeitsalltag heißt das konkret:</strong></p>
<ul class="example-list">
<li>Eingaben minimieren</li>
<li>keine vertraulichen Daten in Prompts verwenden</li>
<li>nur notwendige Informationen eingeben</li>
<li>interne Schutzmechanismen beachten</li>
</ul>
<p>
Ziel ist es,
Risiken gar nicht erst entstehen zu lassen.
</p>
<blockquote class="highlight-quote">
Denn:<br>
Was nicht eingegeben wird,<br>
kann auch nicht weitergegeben werden.
</blockquote>
<p><strong>Diese Grundprinzipien schützen:</strong></p>
<ul class="key-points">
<li>betroffene Personen</li>
<li>Mitarbeitende</li>
<li>und das Unternehmen</li>
</ul>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/1" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/page/3" class="btn-primary">Weiter</a>
</div>
{% endblock %}

View File

@ -0,0 +1,38 @@
{% extends "base.html" %}
{% block content %}
<h2>B1 Abschluss</h2>
<section class="content-section ai-explainer">
<div class="content-wrapper">
<h2 class="section-title">Abschluss Überblick &amp; Ausblick</h2>
<p class="lead">
Damit haben Sie die Grundlagen des Datenschutzes im KI-Kontext verstanden.
</p>
<p>
Sie wissen jetzt,
wann ein Prompt personenbezogene Daten enthalten kann,
welche rechtlichen Grundlagen gelten,
welche Daten besonders sensibel sind,
welche Risiken bei der Nutzung externer KI-Systeme bestehen
und wie Sie durch Privacy by Design sicher arbeiten.
</p>
<p>
Im nächsten Modul geht es darum,
wie Unternehmen klare und verbindliche Regeln
für den Einsatz von KI festlegen.
</p>
</div>
</section>
<div class="course-nav">
<a href="/course/{{ course_id }}/page/1" class="btn-secondary">Zurück</a>
<a href="/course/{{ course_id }}/assessment" class="btn-primary">Zum Assessment</a>
</div>
{% endblock %}

View File

@ -0,0 +1,31 @@
{% extends "base.html" %}
{% block content %}
<h1>Assessment {{ course.code }} {{ course.title }}</h1>
<form method="post">
{% for q in questions %}
<div class="admin-panel">
<h3>{{ loop.index }}. {{ q.title or "Frage" }}</h3>
<p>{{ q.question_text }}</p>
{% for a in q.answers %}
<div class="form-row">
<label>
<input type="radio" name="question_{{
q.id }}" value="{{ a.id }}" required>
{{ a.answer_text }}
</label>
</div>
{% endfor %}
</div>
{% endfor %}
<div class="admin-actions">
<button type="submit" class="btn-primary">Assessment abschließen</button>
<a href="/courses" class="btn-secondary">Abbrechen</a>
</div>
</form>
{% endblock %}

View File

@ -0,0 +1,27 @@
{% extends "base.html" %}
{% block content %}
<div class="admin-panel">
<h1>Assessment Ergebnis</h1>
<p><strong>Kurs:</strong> {{ course.code }} {{ course.title }}</p>
<p><strong>Punkte:</strong> {{ score }} / {{ total_questions }}</p>
{% if passed %}
<div class="success-box">
Assessment bestanden.
</div>
{% else %}
<div class="error-box">
Assessment nicht bestanden.
</div>
{% endif %}
<div class="admin-actions">
<a href="/courses" class="btn-primary">Zurück zu den Kursen</a>
<a href="/course/{{ course.id }}/assessment" class="btn-secondary">Erneut versuchen</a>
</div>
</div>
{% endblock %}

View File

@ -31,32 +31,15 @@
</div>
<div class="card">
<h3>Schulung</h3>
<h3>Gesamtinfo</h3>
<p>
Aufbau von Wissen im Unternehmen mit Trainings und nachvollziehbarer Dokumentation.
Detaillierte Informationen finden Sie unter <a href="https://www.certification-verification.info" target="_new">Marketing</a>
</p>
</div>
</div>
</section>
<!-- WARUM -->
<section class="section alt">
<div class="two-col">
<div>
<h2>Warum Compliance Verification?</h2>
<ul class="check-list">
<li>Rechtssicherheit für Ihr Unternehmen</li>
<li>Klare Dokumentation und Nachweise</li>
<li>Strukturierte Umsetzung von KI-Richtlinien</li>
<li>Effiziente Schulung Ihrer Mitarbeitenden</li>
</ul>
</div>
<div class="image-panel">
<img src="/images/schulung.png" alt="Schulung">
</div>
</div>
</section>
<!-- MODULE -->
<section class="section">
@ -80,27 +63,7 @@
</div>
</section>
<!-- ABLAUF -->
<section class="section alt">
<h2>So funktioniert es</h2>
<div class="steps-grid">
<div class="step-card">
<h3>Analyse</h3>
<p>Wir analysieren Ihre aktuelle Situation und Anforderungen.</p>
</div>
<div class="step-card">
<h3>Umsetzung</h3>
<p>Einführung von Prozessen, Richtlinien und Schulungen.</p>
</div>
<div class="step-card">
<h3>Verifikation</h3>
<p>Nachweisbare Compliance und nachhaltige Absicherung.</p>
</div>
</div>
</section>
<!-- CTA -->
<section class="section cta-section">

View File

@ -935,3 +935,89 @@ button {
grid-template-columns: 1fr;
}
}
.admin-grid-form textarea {
width: 100%;
min-height: 110px;
padding: 10px 12px;
border: 1px solid #cfd8e3;
border-radius: 10px;
font-size: 16px;
box-sizing: border-box;
resize: vertical;
font-family: Arial, Helvetica, sans-serif;
}
/* assessment fragen */
/* Grundlayout */
.content-section.ai-explainer {
padding: 40px 20px;
background: #f9fafb;
}
.content-wrapper {
max-width: 900px;
margin: 0 auto;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
color: #1f2937;
line-height: 1.6;
}
/* Titel */
.section-title {
font-size: 28px;
font-weight: 700;
margin-bottom: 20px;
color: #111827;
}
/* Lead Text */
.lead {
font-size: 18px;
margin-bottom: 20px;
}
/* Standard Paragraph */
.content-wrapper p {
margin-bottom: 16px;
}
/* Listen */
.example-list,
.key-points {
margin: 15px 0 20px 20px;
padding: 0;
}
.example-list li,
.key-points li {
margin-bottom: 8px;
}
/* Quote / Highlight */
.highlight-quote {
margin: 25px 0;
padding: 20px;
background: #eef2ff;
border-left: 5px solid #6366f1;
font-size: 18px;
font-weight: 500;
color: #1e3a8a;
border-radius: 6px;
}
/* Responsive */
@media (max-width: 768px) {
.section-title {
font-size: 22px;
}
.lead {
font-size: 16px;
}
.highlight-quote {
font-size: 16px;
}
}