Quelle: D:/Claude-Projekte/PummelHummel/feedback_modul/ (Standard-Pattern, auch in arduino.lehrstun.de + meta.lehrstun.de erprobt). 1:1 nach 3d.lehrstun.de/feedback_modul/ kopiert. app.py erweitert: - init_feedback_modul-Aufruf mit unseren Adaptern - _alph_user_kontext: Lehrer = admin, SuS = profil mit Vorname+Tier, Anonym = kein Widget - _alph_widget_aktiv: liest einstellung.feedback_widget_aktiv - _alph_admin_unauthorized: Redirect zu admin.admin_login Hart-Aus via ENV ALPH_DEAKTIVIERT=1 weiterhin moeglich. Soft-Aus via einstellung.feedback_widget_aktiv='0' (per Admin-Inline-Edit). DB: - feedback-Tabelle via feedback_modul.schema.DDL angelegt (idempotent) - einstellung.feedback_widget_aktiv auf '1' gesetzt (Alpha-Test-Modus) Test: - Eingeloggter SuS sieht das Alph-Widget auf /lektion/1 - Anonym (kein Login) sieht es nicht (user_kontext gibt None) - Admin sieht es mit Rolle 'admin' Naechster Schritt: Deploy auf Hetzner (3d.lehrstun.de), Markus loggt sich als Test-Schueler ein und gibt Feedback zu den 14 Lektionen.
38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
"""Schema-DDL fuer das Alph-Feedback-Modul.
|
|
|
|
Idempotent — kann mehrfach ausgefuehrt werden.
|
|
"""
|
|
|
|
DDL = """
|
|
CREATE TABLE IF NOT EXISTS feedback (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
app_name TEXT NOT NULL,
|
|
kategorie TEXT NOT NULL,
|
|
text TEXT NOT NULL,
|
|
url_pfad TEXT NOT NULL,
|
|
seitentitel TEXT,
|
|
user_kontext TEXT, -- JSON: tier, kasten, kurs, gruppe_id, rolle
|
|
technik_kontext TEXT, -- JSON: viewport, ua, sprache, referer
|
|
element_selector TEXT,
|
|
element_text TEXT,
|
|
status TEXT NOT NULL DEFAULT 'neu', -- neu|triagiert|in_arbeit|erledigt|wontfix|spam
|
|
cluster_hash TEXT,
|
|
bearbeitet_von TEXT,
|
|
bearbeitet_notiz TEXT,
|
|
erstellt_am DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
aktualisiert_am DATETIME
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS feedback_status_idx ON feedback(status);
|
|
CREATE INDEX IF NOT EXISTS feedback_app_idx ON feedback(app_name);
|
|
CREATE INDEX IF NOT EXISTS feedback_cluster_idx ON feedback(cluster_hash);
|
|
"""
|
|
|
|
KATEGORIEN = [
|
|
("code", "Codefehler", "Sketch tut nicht, Compiler-Error"),
|
|
("link", "Link kaputt", "Knopf oder Link fuehrt ins Leere"),
|
|
("verstehen", "Versteh ich nicht", "Erklaerung unklar oder zu schwer"),
|
|
("fehlt", "Etwas fehlt", "Information, Bauteil, Schritt ist nicht da"),
|
|
("sonstiges", "Sonstiges", "Anderes Feedback / Idee / Lob"),
|
|
]
|