Compare commits
2 Commits
3f47532e2d
...
81cfff96e5
| Author | SHA1 | Date | |
|---|---|---|---|
| 81cfff96e5 | |||
| 7b97575c5f |
@ -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()
|
||||
)
|
||||
@ -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>
|
||||
|
||||
36
app/flask-postgres/app/templates/admin_questions.html
Normal file
36
app/flask-postgres/app/templates/admin_questions.html
Normal 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 %}
|
||||
152
app/flask-postgres/app/templates/admin_questions_course.html
Normal file
152
app/flask-postgres/app/templates/admin_questions_course.html
Normal 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 %}
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -4,13 +4,61 @@
|
||||
|
||||
<h2>AI Governance Basics</h2>
|
||||
|
||||
<p>
|
||||
KI-Systeme müssen einen hübschen Avatar haben sein...
|
||||
<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 %}
|
||||
82
app/flask-postgres/app/templates/course/A1_page3.html
Normal file
82
app/flask-postgres/app/templates/course/A1_page3.html
Normal 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 %}
|
||||
49
app/flask-postgres/app/templates/course/A1_page4.html
Normal file
49
app/flask-postgres/app/templates/course/A1_page4.html
Normal 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 %}
|
||||
92
app/flask-postgres/app/templates/course/A1_page5.html
Normal file
92
app/flask-postgres/app/templates/course/A1_page5.html
Normal 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 %}
|
||||
38
app/flask-postgres/app/templates/course/A1_page6.html
Normal file
38
app/flask-postgres/app/templates/course/A1_page6.html
Normal 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 %}
|
||||
35
app/flask-postgres/app/templates/course/A2_page1.html
Normal file
35
app/flask-postgres/app/templates/course/A2_page1.html
Normal 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 %}
|
||||
57
app/flask-postgres/app/templates/course/A2_page2.html
Normal file
57
app/flask-postgres/app/templates/course/A2_page2.html
Normal 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 %}
|
||||
57
app/flask-postgres/app/templates/course/A2_page3.html
Normal file
57
app/flask-postgres/app/templates/course/A2_page3.html
Normal 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 %}
|
||||
66
app/flask-postgres/app/templates/course/A2_page4.html
Normal file
66
app/flask-postgres/app/templates/course/A2_page4.html
Normal 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 %}
|
||||
65
app/flask-postgres/app/templates/course/A2_page5.html
Normal file
65
app/flask-postgres/app/templates/course/A2_page5.html
Normal 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 & 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 & 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 & 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 %}
|
||||
65
app/flask-postgres/app/templates/course/A2_page6.html
Normal file
65
app/flask-postgres/app/templates/course/A2_page6.html
Normal 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 & 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 & 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 & 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 %}
|
||||
42
app/flask-postgres/app/templates/course/A2_page7.html
Normal file
42
app/flask-postgres/app/templates/course/A2_page7.html
Normal 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 & 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 %}
|
||||
38
app/flask-postgres/app/templates/course/A3_page1.html
Normal file
38
app/flask-postgres/app/templates/course/A3_page1.html
Normal 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 & 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 %}
|
||||
65
app/flask-postgres/app/templates/course/A3_page2.html
Normal file
65
app/flask-postgres/app/templates/course/A3_page2.html
Normal 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 & 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 & Ungleichbehandlung)</strong></p>
|
||||
|
||||
<p>
|
||||
Daten, die gesellschaftliche Stereotype enthalten, können zu diskriminierenden Ergebnissen führen.
|
||||
</p>
|
||||
|
||||
<p><strong>3. Datenschutz- & 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 %}
|
||||
59
app/flask-postgres/app/templates/course/A3_page3.html
Normal file
59
app/flask-postgres/app/templates/course/A3_page3.html
Normal 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 %}
|
||||
80
app/flask-postgres/app/templates/course/A3_page4.html
Normal file
80
app/flask-postgres/app/templates/course/A3_page4.html
Normal 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 & 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 & 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 %}
|
||||
94
app/flask-postgres/app/templates/course/A3_page5.html
Normal file
94
app/flask-postgres/app/templates/course/A3_page5.html
Normal 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 & 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 & 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 & 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 & 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 %}
|
||||
77
app/flask-postgres/app/templates/course/A3_page6.html
Normal file
77
app/flask-postgres/app/templates/course/A3_page6.html
Normal 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 %}
|
||||
42
app/flask-postgres/app/templates/course/A3_page7.html
Normal file
42
app/flask-postgres/app/templates/course/A3_page7.html
Normal 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 & 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 %}
|
||||
16
app/flask-postgres/app/templates/course/A4_page1.html
Normal file
16
app/flask-postgres/app/templates/course/A4_page1.html
Normal 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 %}
|
||||
17
app/flask-postgres/app/templates/course/A4_page2.html
Normal file
17
app/flask-postgres/app/templates/course/A4_page2.html
Normal 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 %}
|
||||
16
app/flask-postgres/app/templates/course/A4_page3.html
Normal file
16
app/flask-postgres/app/templates/course/A4_page3.html
Normal 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 %}
|
||||
16
app/flask-postgres/app/templates/course/A4_page4.html
Normal file
16
app/flask-postgres/app/templates/course/A4_page4.html
Normal 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 %}
|
||||
16
app/flask-postgres/app/templates/course/A4_page5.html
Normal file
16
app/flask-postgres/app/templates/course/A4_page5.html
Normal 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 %}
|
||||
16
app/flask-postgres/app/templates/course/A4_page6.html
Normal file
16
app/flask-postgres/app/templates/course/A4_page6.html
Normal 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 %}
|
||||
16
app/flask-postgres/app/templates/course/A4_page7.html
Normal file
16
app/flask-postgres/app/templates/course/A4_page7.html
Normal 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 %}
|
||||
@ -4,10 +4,36 @@
|
||||
|
||||
<h2>B1 AI Privacy Basics</h2>
|
||||
|
||||
<p>
|
||||
KI-Systeme müssen die Privatsphäre schützen sein...
|
||||
<section class="content-section ai-explainer">
|
||||
<div class="content-wrapper">
|
||||
<h2 class="section-title">Willkommen zu Compliance Verification und zum Modul B1 – Data & 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>
|
||||
<a href="/course/{{ course_id }}/page/2" class="btn-primary">Weiter</a>
|
||||
|
||||
@ -2,12 +2,81 @@
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h2>B1 AI Privacy Basics</h2>
|
||||
<h2>B 1 – Personenbezogene Daten und KI</h2>
|
||||
|
||||
<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>
|
||||
KI-Systeme müssen die Privatsphäre schützen sein...
|
||||
<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>
|
||||
<a href="/courses" class="btn-primary">Fertig</a>
|
||||
|
||||
68
app/flask-postgres/app/templates/course/B1_page3.html
Normal file
68
app/flask-postgres/app/templates/course/B1_page3.html
Normal 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 %}
|
||||
57
app/flask-postgres/app/templates/course/B1_page4.html
Normal file
57
app/flask-postgres/app/templates/course/B1_page4.html
Normal 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 %}
|
||||
59
app/flask-postgres/app/templates/course/B1_page5.html
Normal file
59
app/flask-postgres/app/templates/course/B1_page5.html
Normal 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 %}
|
||||
61
app/flask-postgres/app/templates/course/B1_page6.html
Normal file
61
app/flask-postgres/app/templates/course/B1_page6.html
Normal 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 %}
|
||||
38
app/flask-postgres/app/templates/course/B1_page7.html
Normal file
38
app/flask-postgres/app/templates/course/B1_page7.html
Normal 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 & 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 %}
|
||||
31
app/flask-postgres/app/templates/course_assessment.html
Normal file
31
app/flask-postgres/app/templates/course_assessment.html
Normal 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 %}
|
||||
@ -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 %}
|
||||
@ -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">
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user