Übersicht: Empfehlung nur aus AKTUELLER Leistung (Recency)
Denkfehler behoben — eine Empfehlung reagiert auf das Zuletzt-Gesehene, nicht auf einen Allzeit-Rückblick. live.php cockpit liefert jetzt recentErfolg (Ø letzte 3 Läufe), earlyErfolg (frühere Läufe), daysSince, recentPlays. Triage rechnet darauf: >14 Tage weg → Nachfassen; recent schwach → Fördern; recent+viel → Begleiten; recent stark, kaum gefordert → Fordern; recent > früher → Bestätigen. Neue Spalte „Zuletzt", Legende erklärt: Erfolg = letzte Läufe, Verlauf = nur Historie. 4b-Daten mit kontrollierter Recency neu (jede Gruppe besetzt). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,267 @@
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
DELETE FROM player_progress WHERE student_id IN (SELECT id FROM students WHERE class_id=99 AND username IN ('noah','felix','leon','hannes','david','emma','katharina','ida','ben','clara','greta','jakob_s','marlene','olivia'));
|
||||
DELETE FROM student_results WHERE class_id=99 AND student_id IN (SELECT id FROM students WHERE class_id=99 AND username IN ('noah','felix','leon','hannes','david','emma','katharina','ida','ben','clara','greta','jakob_s','marlene','olivia'));
|
||||
DELETE FROM assessments WHERE class_id=99 AND session_id IN (SELECT id FROM student_sessions WHERE class_id=99 AND created_at='2025-10-01 08:00:00' AND display_name IN ('Noah','Felix','Leon','Hannes','David','Emma','Katharina','Ida','Ben','Clara','Greta','Jakob','Marlene','Olivia'));
|
||||
DELETE FROM student_sessions WHERE class_id=99 AND created_at='2025-10-01 08:00:00' AND display_name IN ('Noah','Felix','Leon','Hannes','David','Emma','Katharina','Ida','Ben','Clara','Greta','Jakob','Marlene','Olivia');
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('528680bb-54db-6443-5152-bdeb18ce218f',99,'Noah','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('528680bb-54db-6443-5152-bdeb18ce218f','energiemanager',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJibG9ja3NCYWxhbmNlZCI6IDQsICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDIsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),528000,'2026-06-23 08:20:12');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='noah' AND class_id=99 LIMIT 1),99,'energiemanager',36,528,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJibG9ja3NCYWxhbmNlZCI6IDQsICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDIsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),'2026-06-23 08:20:12');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('528680bb-54db-6443-5152-bdeb18ce218f','weltkueche',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJjb21wbGV0ZWREaXNoZXMiOiA1LCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogOH0=') USING utf8mb4),222000,'2026-06-24 10:03:28');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='noah' AND class_id=99 LIMIT 1),99,'weltkueche',48,222,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJjb21wbGV0ZWREaXNoZXMiOiA1LCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogOH0=') USING utf8mb4),'2026-06-24 10:03:28');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('528680bb-54db-6443-5152-bdeb18ce218f','kofferdetektiv',99,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiAyLCAiY29ycmVjdF9maXJzdF90cnkiOiAyLCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDYuNH0=') USING utf8mb4),552000,'2026-06-23 09:17:25');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='noah' AND class_id=99 LIMIT 1),99,'kofferdetektiv',40,552,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiAyLCAiY29ycmVjdF9maXJzdF90cnkiOiAyLCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDYuNH0=') USING utf8mb4),'2026-06-23 09:17:25');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('528680bb-54db-6443-5152-bdeb18ce218f','energiemanager',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJibG9ja3NCYWxhbmNlZCI6IDQsICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDIsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),499000,'2026-06-24 08:35:45');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='noah' AND class_id=99 LIMIT 1),99,'energiemanager',31,499,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJibG9ja3NCYWxhbmNlZCI6IDQsICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDIsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),'2026-06-24 08:35:45');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('528680bb-54db-6443-5152-bdeb18ce218f','kofferdetektiv',99,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiAyLCAiY29ycmVjdF9maXJzdF90cnkiOiAyLCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDYuN30=') USING utf8mb4),261000,'2026-06-24 11:31:23');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='noah' AND class_id=99 LIMIT 1),99,'kofferdetektiv',37,261,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiAyLCAiY29ycmVjdF9maXJzdF90cnkiOiAyLCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDYuN30=') USING utf8mb4),'2026-06-24 11:31:23');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='noah' AND class_id=99 LIMIT 1),'energiemanager',1,40,2,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='noah' AND class_id=99 LIMIT 1),'weltkueche',1,20,1,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='noah' AND class_id=99 LIMIT 1),'kofferdetektiv',1,40,2,2);
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('c4f8ed3b-c8ae-f936-3486-09debfcf4132',99,'Felix','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('c4f8ed3b-c8ae-f936-3486-09debfcf4132','kofferdetektiv',99,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiAzLCAiY29ycmVjdF9maXJzdF90cnkiOiAzLCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDUuMX0=') USING utf8mb4),419000,'2026-05-19 13:50:44');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='felix' AND class_id=99 LIMIT 1),99,'kofferdetektiv',54,419,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiAzLCAiY29ycmVjdF9maXJzdF90cnkiOiAzLCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDUuMX0=') USING utf8mb4),'2026-05-19 13:50:44');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('c4f8ed3b-c8ae-f936-3486-09debfcf4132','heli',99,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiAyLCAicGxhblBjdCI6IDQxLCAic3RhcnRTY29yZSI6IDIsICJsYW5kaW5nU2NvcmUiOiAyfQ==') USING utf8mb4),296000,'2026-06-06 10:56:12');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='felix' AND class_id=99 LIMIT 1),99,'heli',41,296,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiAyLCAicGxhblBjdCI6IDQxLCAic3RhcnRTY29yZSI6IDIsICJsYW5kaW5nU2NvcmUiOiAyfQ==') USING utf8mb4),'2026-06-06 10:56:12');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('c4f8ed3b-c8ae-f936-3486-09debfcf4132','busfahrt',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJ3b25PcmRlcnMiOiAzLCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogMywgImF2Z1RhcEttIjogMTMyfQ==') USING utf8mb4),126000,'2026-07-10 15:15:59');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='felix' AND class_id=99 LIMIT 1),99,'busfahrt',40,126,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJ3b25PcmRlcnMiOiAzLCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogMywgImF2Z1RhcEttIjogMTMyfQ==') USING utf8mb4),'2026-07-10 15:15:59');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('c4f8ed3b-c8ae-f936-3486-09debfcf4132','heli',99,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiAyLCAicGxhblBjdCI6IDM3LCAic3RhcnRTY29yZSI6IDIsICJsYW5kaW5nU2NvcmUiOiAyfQ==') USING utf8mb4),317000,'2026-07-14 12:41:31');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='felix' AND class_id=99 LIMIT 1),99,'heli',37,317,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiAyLCAicGxhblBjdCI6IDM3LCAic3RhcnRTY29yZSI6IDIsICJsYW5kaW5nU2NvcmUiOiAyfQ==') USING utf8mb4),'2026-07-14 12:41:31');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('c4f8ed3b-c8ae-f936-3486-09debfcf4132','klima',99,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE3LjQ1LCAiZmluYWxfZmxvb2RlZF9wY3QiOiA2NSwgImZpbmFsX2J1ZGdldCI6IC0yNSwgImZpbmFsX2NvMiI6IDQ3OCwgImZpbmFsX3BvcHVsYXRpb24iOiAyNTB9') USING utf8mb4),390000,'2026-07-11 12:51:44');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='felix' AND class_id=99 LIMIT 1),99,'klima',35,390,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE3LjQ1LCAiZmluYWxfZmxvb2RlZF9wY3QiOiA2NSwgImZpbmFsX2J1ZGdldCI6IC0yNSwgImZpbmFsX2NvMiI6IDQ3OCwgImZpbmFsX3BvcHVsYXRpb24iOiAyNTB9') USING utf8mb4),'2026-07-11 12:51:44');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('c4f8ed3b-c8ae-f936-3486-09debfcf4132','heli',99,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiAyLCAicGxhblBjdCI6IDQ0LCAic3RhcnRTY29yZSI6IDIsICJsYW5kaW5nU2NvcmUiOiAyfQ==') USING utf8mb4),355000,'2026-07-18 11:05:43');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='felix' AND class_id=99 LIMIT 1),99,'heli',44,355,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiAyLCAicGxhblBjdCI6IDQ0LCAic3RhcnRTY29yZSI6IDIsICJsYW5kaW5nU2NvcmUiOiAyfQ==') USING utf8mb4),'2026-07-18 11:05:43');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='felix' AND class_id=99 LIMIT 1),'kofferdetektiv',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='felix' AND class_id=99 LIMIT 1),'heli',2,60,3,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='felix' AND class_id=99 LIMIT 1),'busfahrt',1,20,1,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='felix' AND class_id=99 LIMIT 1),'klima',1,20,1,2);
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('5085a253-98c2-2d8b-9024-c51036051cb8',99,'Leon','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5085a253-98c2-2d8b-9024-c51036051cb8','energiemanager',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJibG9ja3NCYWxhbmNlZCI6IDcsICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDMsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),270000,'2026-05-17 09:33:57');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='leon' AND class_id=99 LIMIT 1),99,'energiemanager',56,270,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJibG9ja3NCYWxhbmNlZCI6IDcsICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDMsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),'2026-05-17 09:33:57');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5085a253-98c2-2d8b-9024-c51036051cb8','logistik',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJvcmRlcnNEZWxpdmVyZWQiOiA1LCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogMjQwfQ==') USING utf8mb4),280000,'2026-05-27 15:49:15');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='leon' AND class_id=99 LIMIT 1),99,'logistik',52,280,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJvcmRlcnNEZWxpdmVyZWQiOiA1LCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogMjQwfQ==') USING utf8mb4),'2026-05-27 15:49:15');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5085a253-98c2-2d8b-9024-c51036051cb8','tourismusregion',99,CONVERT(FROM_BASE64('eyJzY29yZSI6IDUzfQ==') USING utf8mb4),269000,'2026-07-15 10:32:07');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='leon' AND class_id=99 LIMIT 1),99,'tourismusregion',53,269,CONVERT(FROM_BASE64('eyJzY29yZSI6IDUzfQ==') USING utf8mb4),'2026-07-15 10:32:07');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5085a253-98c2-2d8b-9024-c51036051cb8','heli',99,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiAyLCAicGxhblBjdCI6IDQ2LCAic3RhcnRTY29yZSI6IDIsICJsYW5kaW5nU2NvcmUiOiAyfQ==') USING utf8mb4),387000,'2026-07-14 13:48:01');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='leon' AND class_id=99 LIMIT 1),99,'heli',46,387,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiAyLCAicGxhblBjdCI6IDQ2LCAic3RhcnRTY29yZSI6IDIsICJsYW5kaW5nU2NvcmUiOiAyfQ==') USING utf8mb4),'2026-07-14 13:48:01');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5085a253-98c2-2d8b-9024-c51036051cb8','energiemanager',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJibG9ja3NCYWxhbmNlZCI6IDQsICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDIsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),594000,'2026-07-15 09:22:45');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='leon' AND class_id=99 LIMIT 1),99,'energiemanager',36,594,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJibG9ja3NCYWxhbmNlZCI6IDQsICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDIsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),'2026-07-15 09:22:45');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='leon' AND class_id=99 LIMIT 1),'energiemanager',2,50,2,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='leon' AND class_id=99 LIMIT 1),'logistik',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='leon' AND class_id=99 LIMIT 1),'tourismusregion',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='leon' AND class_id=99 LIMIT 1),'heli',1,20,1,2);
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('058044fd-e54e-037e-7d90-aca97303aecb',99,'Hannes','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('058044fd-e54e-037e-7d90-aca97303aecb','logistik',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDEsICJvcmRlcnNEZWxpdmVyZWQiOiAzLCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogLTMwMH0=') USING utf8mb4),475000,'2026-06-13 12:35:30');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),99,'logistik',28,475,CONVERT(FROM_BASE64('eyJzdGFycyI6IDEsICJvcmRlcnNEZWxpdmVyZWQiOiAzLCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogLTMwMH0=') USING utf8mb4),'2026-06-13 12:35:30');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('058044fd-e54e-037e-7d90-aca97303aecb','klima',99,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE3LjMzLCAiZmluYWxfZmxvb2RlZF9wY3QiOiA2MSwgImZpbmFsX2J1ZGdldCI6IC01LCAiZmluYWxfY28yIjogNDcyLCAiZmluYWxfcG9wdWxhdGlvbiI6IDI1MH0=') USING utf8mb4),142000,'2026-06-16 13:41:07');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),99,'klima',39,142,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE3LjMzLCAiZmluYWxfZmxvb2RlZF9wY3QiOiA2MSwgImZpbmFsX2J1ZGdldCI6IC01LCAiZmluYWxfY28yIjogNDcyLCAiZmluYWxfcG9wdWxhdGlvbiI6IDI1MH0=') USING utf8mb4),'2026-06-16 13:41:07');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('058044fd-e54e-037e-7d90-aca97303aecb','busfahrt',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJ3b25PcmRlcnMiOiAyLCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogMiwgImF2Z1RhcEttIjogMTQ5fQ==') USING utf8mb4),551000,'2026-06-24 15:20:55');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),99,'busfahrt',30,551,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJ3b25PcmRlcnMiOiAyLCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogMiwgImF2Z1RhcEttIjogMTQ5fQ==') USING utf8mb4),'2026-06-24 15:20:55');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('058044fd-e54e-037e-7d90-aca97303aecb','farmer',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJoaXRfcmF0ZSI6IDMzLCAieWVhciI6IDUsICJjcm9wc191c2VkIjogMn0=') USING utf8mb4),186000,'2026-06-14 09:19:26');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),99,'farmer',33,186,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJoaXRfcmF0ZSI6IDMzLCAieWVhciI6IDUsICJjcm9wc191c2VkIjogMn0=') USING utf8mb4),'2026-06-14 09:19:26');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('058044fd-e54e-037e-7d90-aca97303aecb','farmer',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDEsICJoaXRfcmF0ZSI6IDI2LCAieWVhciI6IDQsICJjcm9wc191c2VkIjogMn0=') USING utf8mb4),184000,'2026-07-12 13:30:45');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),99,'farmer',26,184,CONVERT(FROM_BASE64('eyJzdGFycyI6IDEsICJoaXRfcmF0ZSI6IDI2LCAieWVhciI6IDQsICJjcm9wc191c2VkIjogMn0=') USING utf8mb4),'2026-07-12 13:30:45');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('058044fd-e54e-037e-7d90-aca97303aecb','busfahrt',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJ3b25PcmRlcnMiOiAzLCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogMywgImF2Z1RhcEttIjogMTQwfQ==') USING utf8mb4),281000,'2026-07-19 12:23:05');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),99,'busfahrt',35,281,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJ3b25PcmRlcnMiOiAzLCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogMywgImF2Z1RhcEttIjogMTQwfQ==') USING utf8mb4),'2026-07-19 12:23:05');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('058044fd-e54e-037e-7d90-aca97303aecb','eu-werkstatt',99,CONVERT(FROM_BASE64('eyJlbmRUeXBlIjogImFib3J0ZWQiLCAic3RlcHNUb3RhbCI6IDEwLCAiZmlyc3RUcnlIaXRzIjogMywgInRvdGFsQXR0ZW1wdHMiOiAxMiwgIm11ZWxsZWltZXJDb3VudCI6IDF9') USING utf8mb4),279000,'2026-07-10 15:13:05');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),99,'eu-werkstatt',33,279,CONVERT(FROM_BASE64('eyJlbmRUeXBlIjogImFib3J0ZWQiLCAic3RlcHNUb3RhbCI6IDEwLCAiZmlyc3RUcnlIaXRzIjogMywgInRvdGFsQXR0ZW1wdHMiOiAxMiwgIm11ZWxsZWltZXJDb3VudCI6IDF9') USING utf8mb4),'2026-07-10 15:13:05');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('058044fd-e54e-037e-7d90-aca97303aecb','fluss',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJiaW9kaXYiOiA0MCwgImVjb25vbXkiOiA0MCwgImZsb29kIjogNjAsICJmb29kIjogNDB9') USING utf8mb4),580000,'2026-07-15 10:13:31');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),99,'fluss',40,580,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJiaW9kaXYiOiA0MCwgImVjb25vbXkiOiA0MCwgImZsb29kIjogNjAsICJmb29kIjogNDB9') USING utf8mb4),'2026-07-15 10:13:31');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('058044fd-e54e-037e-7d90-aca97303aecb','busfahrt',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJ3b25PcmRlcnMiOiAzLCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogMywgImF2Z1RhcEttIjogMTQwfQ==') USING utf8mb4),421000,'2026-07-12 10:28:23');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),99,'busfahrt',35,421,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJ3b25PcmRlcnMiOiAzLCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogMywgImF2Z1RhcEttIjogMTQwfQ==') USING utf8mb4),'2026-07-12 10:28:23');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('058044fd-e54e-037e-7d90-aca97303aecb','weltkueche',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJjb21wbGV0ZWREaXNoZXMiOiAzLCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogMTB9') USING utf8mb4),364000,'2026-07-10 10:03:57');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),99,'weltkueche',34,364,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJjb21wbGV0ZWREaXNoZXMiOiAzLCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogMTB9') USING utf8mb4),'2026-07-10 10:03:57');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('058044fd-e54e-037e-7d90-aca97303aecb','busfahrt',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJ3b25PcmRlcnMiOiAzLCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogMywgImF2Z1RhcEttIjogMTQ2fQ==') USING utf8mb4),226000,'2026-07-19 10:41:39');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),99,'busfahrt',32,226,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJ3b25PcmRlcnMiOiAzLCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogMywgImF2Z1RhcEttIjogMTQ2fQ==') USING utf8mb4),'2026-07-19 10:41:39');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),'logistik',1,10,1,1);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),'klima',1,20,1,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),'busfahrt',2,80,4,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),'farmer',1,30,2,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),'eu-werkstatt',1,20,1,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),'fluss',1,20,1,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='hannes' AND class_id=99 LIMIT 1),'weltkueche',1,20,1,2);
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('c34bbbcb-1f22-a337-87b8-4636d0fb9ca1',99,'David','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('c34bbbcb-1f22-a337-87b8-4636d0fb9ca1','klima',99,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE1LjgzLCAiZmluYWxfZmxvb2RlZF9wY3QiOiAxMSwgImZpbmFsX2J1ZGdldCI6IDQ5MCwgImZpbmFsX2NvMiI6IDM5NiwgImZpbmFsX3BvcHVsYXRpb24iOiAyNTB9') USING utf8mb4),150000,'2026-06-18 13:50:08');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='david' AND class_id=99 LIMIT 1),99,'klima',89,150,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE1LjgzLCAiZmluYWxfZmxvb2RlZF9wY3QiOiAxMSwgImZpbmFsX2J1ZGdldCI6IDQ5MCwgImZpbmFsX2NvMiI6IDM5NiwgImZpbmFsX3BvcHVsYXRpb24iOiAyNTB9') USING utf8mb4),'2026-06-18 13:50:08');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('c34bbbcb-1f22-a337-87b8-4636d0fb9ca1','tourismusregion',99,CONVERT(FROM_BASE64('eyJzY29yZSI6IDc4fQ==') USING utf8mb4),203000,'2026-05-25 14:54:06');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='david' AND class_id=99 LIMIT 1),99,'tourismusregion',78,203,CONVERT(FROM_BASE64('eyJzY29yZSI6IDc4fQ==') USING utf8mb4),'2026-05-25 14:54:06');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('c34bbbcb-1f22-a337-87b8-4636d0fb9ca1','fluss',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJiaW9kaXYiOiA4MSwgImVjb25vbXkiOiA4MSwgImZsb29kIjogMTksICJmb29kIjogODF9') USING utf8mb4),546000,'2026-05-30 10:41:11');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='david' AND class_id=99 LIMIT 1),99,'fluss',81,546,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJiaW9kaXYiOiA4MSwgImVjb25vbXkiOiA4MSwgImZsb29kIjogMTksICJmb29kIjogODF9') USING utf8mb4),'2026-05-30 10:41:11');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('c34bbbcb-1f22-a337-87b8-4636d0fb9ca1','busfahrt',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJ3b25PcmRlcnMiOiA3LCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogNywgImF2Z1RhcEttIjogNDd9') USING utf8mb4),200000,'2026-07-10 13:53:52');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='david' AND class_id=99 LIMIT 1),99,'busfahrt',90,200,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJ3b25PcmRlcnMiOiA3LCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogNywgImF2Z1RhcEttIjogNDd9') USING utf8mb4),'2026-07-10 13:53:52');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('c34bbbcb-1f22-a337-87b8-4636d0fb9ca1','logistik',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJvcmRlcnNEZWxpdmVyZWQiOiA4LCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogOTAwfQ==') USING utf8mb4),245000,'2026-07-12 08:08:50');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='david' AND class_id=99 LIMIT 1),99,'logistik',85,245,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJvcmRlcnNEZWxpdmVyZWQiOiA4LCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogOTAwfQ==') USING utf8mb4),'2026-07-12 08:08:50');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='david' AND class_id=99 LIMIT 1),'klima',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='david' AND class_id=99 LIMIT 1),'tourismusregion',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='david' AND class_id=99 LIMIT 1),'fluss',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='david' AND class_id=99 LIMIT 1),'busfahrt',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='david' AND class_id=99 LIMIT 1),'logistik',1,40,1,4);
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('cbf2baff-97f1-4637-8bc2-c5a17de952ab',99,'Emma','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('cbf2baff-97f1-4637-8bc2-c5a17de952ab','logistik',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJvcmRlcnNEZWxpdmVyZWQiOiA3LCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogNjgwfQ==') USING utf8mb4),543000,'2026-05-18 12:43:47');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='emma' AND class_id=99 LIMIT 1),99,'logistik',74,543,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJvcmRlcnNEZWxpdmVyZWQiOiA3LCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogNjgwfQ==') USING utf8mb4),'2026-05-18 12:43:47');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('cbf2baff-97f1-4637-8bc2-c5a17de952ab','heli',99,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiA0LCAicGxhblBjdCI6IDgyLCAic3RhcnRTY29yZSI6IDQsICJsYW5kaW5nU2NvcmUiOiA0fQ==') USING utf8mb4),375000,'2026-06-23 11:08:06');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='emma' AND class_id=99 LIMIT 1),99,'heli',82,375,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiA0LCAicGxhblBjdCI6IDgyLCAic3RhcnRTY29yZSI6IDQsICJsYW5kaW5nU2NvcmUiOiA0fQ==') USING utf8mb4),'2026-06-23 11:08:06');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('cbf2baff-97f1-4637-8bc2-c5a17de952ab','weltkueche',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJjb21wbGV0ZWREaXNoZXMiOiA5LCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogMn0=') USING utf8mb4),232000,'2026-05-28 11:20:52');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='emma' AND class_id=99 LIMIT 1),99,'weltkueche',87,232,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJjb21wbGV0ZWREaXNoZXMiOiA5LCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogMn0=') USING utf8mb4),'2026-05-28 11:20:52');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('cbf2baff-97f1-4637-8bc2-c5a17de952ab','fluss',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJiaW9kaXYiOiA4NywgImVjb25vbXkiOiA4NywgImZsb29kIjogMTMsICJmb29kIjogODd9') USING utf8mb4),443000,'2026-07-13 14:22:47');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='emma' AND class_id=99 LIMIT 1),99,'fluss',87,443,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJiaW9kaXYiOiA4NywgImVjb25vbXkiOiA4NywgImZsb29kIjogMTMsICJmb29kIjogODd9') USING utf8mb4),'2026-07-13 14:22:47');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('cbf2baff-97f1-4637-8bc2-c5a17de952ab','energiemanager',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJibG9ja3NCYWxhbmNlZCI6IDksICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDUsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),269000,'2026-07-09 09:58:38');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='emma' AND class_id=99 LIMIT 1),99,'energiemanager',79,269,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJibG9ja3NCYWxhbmNlZCI6IDksICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDUsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),'2026-07-09 09:58:38');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='emma' AND class_id=99 LIMIT 1),'logistik',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='emma' AND class_id=99 LIMIT 1),'heli',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='emma' AND class_id=99 LIMIT 1),'weltkueche',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='emma' AND class_id=99 LIMIT 1),'fluss',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='emma' AND class_id=99 LIMIT 1),'energiemanager',1,40,1,4);
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('b6582d11-b238-5ca2-e08d-491894ba15ba',99,'Katharina','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('b6582d11-b238-5ca2-e08d-491894ba15ba','sonnensystem',99,CONVERT(FROM_BASE64('eyJjb21wbGV0ZWQiOiA4LCAidG90YWwiOiAyMCwgImZpcnN0VHJ5IjogZmFsc2V9') USING utf8mb4),573000,'2026-06-09 08:20:40');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),99,'sonnensystem',40,573,CONVERT(FROM_BASE64('eyJjb21wbGV0ZWQiOiA4LCAidG90YWwiOiAyMCwgImZpcnN0VHJ5IjogZmFsc2V9') USING utf8mb4),'2026-06-09 08:20:40');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('b6582d11-b238-5ca2-e08d-491894ba15ba','weltkueche',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJjb21wbGV0ZWREaXNoZXMiOiA0LCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogMTB9') USING utf8mb4),572000,'2026-06-21 15:58:01');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),99,'weltkueche',36,572,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJjb21wbGV0ZWREaXNoZXMiOiA0LCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogMTB9') USING utf8mb4),'2026-06-21 15:58:01');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('b6582d11-b238-5ca2-e08d-491894ba15ba','klima',99,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE3LjEyLCAiZmluYWxfZmxvb2RlZF9wY3QiOiA1NCwgImZpbmFsX2J1ZGdldCI6IDYwLCAiZmluYWxfY28yIjogNDYxLCAiZmluYWxfcG9wdWxhdGlvbiI6IDI1MH0=') USING utf8mb4),342000,'2026-06-18 11:32:40');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),99,'klima',46,342,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE3LjEyLCAiZmluYWxfZmxvb2RlZF9wY3QiOiA1NCwgImZpbmFsX2J1ZGdldCI6IDYwLCAiZmluYWxfY28yIjogNDYxLCAiZmluYWxfcG9wdWxhdGlvbiI6IDI1MH0=') USING utf8mb4),'2026-06-18 11:32:40');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('b6582d11-b238-5ca2-e08d-491894ba15ba','energiemanager',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJibG9ja3NCYWxhbmNlZCI6IDYsICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDMsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),338000,'2026-05-22 11:13:33');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),99,'energiemanager',46,338,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJibG9ja3NCYWxhbmNlZCI6IDYsICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDMsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),'2026-05-22 11:13:33');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('b6582d11-b238-5ca2-e08d-491894ba15ba','fluss',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJiaW9kaXYiOiA0NSwgImVjb25vbXkiOiA0NSwgImZsb29kIjogNTUsICJmb29kIjogNDV9') USING utf8mb4),195000,'2026-05-19 15:03:23');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),99,'fluss',45,195,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJiaW9kaXYiOiA0NSwgImVjb25vbXkiOiA0NSwgImZsb29kIjogNTUsICJmb29kIjogNDV9') USING utf8mb4),'2026-05-19 15:03:23');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('b6582d11-b238-5ca2-e08d-491894ba15ba','kofferdetektiv',99,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA0LCAiY29ycmVjdF9maXJzdF90cnkiOiA0LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDQuNn0=') USING utf8mb4),487000,'2026-07-16 09:19:46');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),99,'kofferdetektiv',60,487,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA0LCAiY29ycmVjdF9maXJzdF90cnkiOiA0LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDQuNn0=') USING utf8mb4),'2026-07-16 09:19:46');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('b6582d11-b238-5ca2-e08d-491894ba15ba','tourismustal',99,CONVERT(FROM_BASE64('eyJnb2Fsc0RvbmUiOiA0LCAiZ29hbHNUb3RhbCI6IDYsICJzYXRpc2ZhY3Rpb24iOiA2MSwgIm5hdHVyZSI6IDYxLCAibW9uZXkiOiAxMDB9') USING utf8mb4),465000,'2026-07-17 10:24:16');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),99,'tourismustal',61,465,CONVERT(FROM_BASE64('eyJnb2Fsc0RvbmUiOiA0LCAiZ29hbHNUb3RhbCI6IDYsICJzYXRpc2ZhY3Rpb24iOiA2MSwgIm5hdHVyZSI6IDYxLCAibW9uZXkiOiAxMDB9') USING utf8mb4),'2026-07-17 10:24:16');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('b6582d11-b238-5ca2-e08d-491894ba15ba','busfahrt',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJ3b25PcmRlcnMiOiA1LCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogNSwgImF2Z1RhcEttIjogODh9') USING utf8mb4),241000,'2026-07-11 09:51:44');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),99,'busfahrt',66,241,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJ3b25PcmRlcnMiOiA1LCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogNSwgImF2Z1RhcEttIjogODh9') USING utf8mb4),'2026-07-11 09:51:44');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),'sonnensystem',1,20,1,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),'weltkueche',1,20,1,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),'klima',1,20,1,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),'energiemanager',1,20,1,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),'fluss',1,20,1,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),'kofferdetektiv',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),'tourismustal',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='katharina' AND class_id=99 LIMIT 1),'busfahrt',1,30,1,3);
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('2c66a48b-8cdc-ad1f-0d68-d90bf3648205',99,'Ida','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('2c66a48b-8cdc-ad1f-0d68-d90bf3648205','sonnensystem',99,CONVERT(FROM_BASE64('eyJjb21wbGV0ZWQiOiA4LCAidG90YWwiOiAyMCwgImZpcnN0VHJ5IjogZmFsc2V9') USING utf8mb4),507000,'2026-06-11 12:13:19');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='ida' AND class_id=99 LIMIT 1),99,'sonnensystem',42,507,CONVERT(FROM_BASE64('eyJjb21wbGV0ZWQiOiA4LCAidG90YWwiOiAyMCwgImZpcnN0VHJ5IjogZmFsc2V9') USING utf8mb4),'2026-06-11 12:13:19');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('2c66a48b-8cdc-ad1f-0d68-d90bf3648205','logistik',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJvcmRlcnNEZWxpdmVyZWQiOiA0LCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogNjB9') USING utf8mb4),317000,'2026-06-09 11:23:18');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='ida' AND class_id=99 LIMIT 1),99,'logistik',43,317,CONVERT(FROM_BASE64('eyJzdGFycyI6IDIsICJvcmRlcnNEZWxpdmVyZWQiOiA0LCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogNjB9') USING utf8mb4),'2026-06-09 11:23:18');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('2c66a48b-8cdc-ad1f-0d68-d90bf3648205','eu-werkstatt',99,CONVERT(FROM_BASE64('eyJlbmRUeXBlIjogImFib3J0ZWQiLCAic3RlcHNUb3RhbCI6IDEwLCAiZmlyc3RUcnlIaXRzIjogNCwgInRvdGFsQXR0ZW1wdHMiOiAxMiwgIm11ZWxsZWltZXJDb3VudCI6IDF9') USING utf8mb4),448000,'2026-06-13 08:51:55');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='ida' AND class_id=99 LIMIT 1),99,'eu-werkstatt',40,448,CONVERT(FROM_BASE64('eyJlbmRUeXBlIjogImFib3J0ZWQiLCAic3RlcHNUb3RhbCI6IDEwLCAiZmlyc3RUcnlIaXRzIjogNCwgInRvdGFsQXR0ZW1wdHMiOiAxMiwgIm11ZWxsZWltZXJDb3VudCI6IDF9') USING utf8mb4),'2026-06-13 08:51:55');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('2c66a48b-8cdc-ad1f-0d68-d90bf3648205','tourismustal',99,CONVERT(FROM_BASE64('eyJnb2Fsc0RvbmUiOiAyLCAiZ29hbHNUb3RhbCI6IDYsICJzYXRpc2ZhY3Rpb24iOiAzMywgIm5hdHVyZSI6IDMzLCAibW9uZXkiOiAxMDB9') USING utf8mb4),576000,'2026-06-13 12:26:43');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='ida' AND class_id=99 LIMIT 1),99,'tourismustal',33,576,CONVERT(FROM_BASE64('eyJnb2Fsc0RvbmUiOiAyLCAiZ29hbHNUb3RhbCI6IDYsICJzYXRpc2ZhY3Rpb24iOiAzMywgIm5hdHVyZSI6IDMzLCAibW9uZXkiOiAxMDB9') USING utf8mb4),'2026-06-13 12:26:43');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('2c66a48b-8cdc-ad1f-0d68-d90bf3648205','kofferdetektiv',99,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA0LCAiY29ycmVjdF9maXJzdF90cnkiOiA0LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDQuM30=') USING utf8mb4),483000,'2026-07-14 12:59:04');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='ida' AND class_id=99 LIMIT 1),99,'kofferdetektiv',63,483,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA0LCAiY29ycmVjdF9maXJzdF90cnkiOiA0LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDQuM30=') USING utf8mb4),'2026-07-14 12:59:04');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('2c66a48b-8cdc-ad1f-0d68-d90bf3648205','heli',99,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiA0LCAicGxhblBjdCI6IDcxLCAic3RhcnRTY29yZSI6IDQsICJsYW5kaW5nU2NvcmUiOiA0fQ==') USING utf8mb4),460000,'2026-07-10 13:42:09');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='ida' AND class_id=99 LIMIT 1),99,'heli',71,460,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiA0LCAicGxhblBjdCI6IDcxLCAic3RhcnRTY29yZSI6IDQsICJsYW5kaW5nU2NvcmUiOiA0fQ==') USING utf8mb4),'2026-07-10 13:42:09');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('2c66a48b-8cdc-ad1f-0d68-d90bf3648205','sonnensystem',99,CONVERT(FROM_BASE64('eyJjb21wbGV0ZWQiOiAxMywgInRvdGFsIjogMjAsICJmaXJzdFRyeSI6IGZhbHNlfQ==') USING utf8mb4),386000,'2026-07-14 15:08:11');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='ida' AND class_id=99 LIMIT 1),99,'sonnensystem',63,386,CONVERT(FROM_BASE64('eyJjb21wbGV0ZWQiOiAxMywgInRvdGFsIjogMjAsICJmaXJzdFRyeSI6IGZhbHNlfQ==') USING utf8mb4),'2026-07-14 15:08:11');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='ida' AND class_id=99 LIMIT 1),'sonnensystem',2,50,2,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='ida' AND class_id=99 LIMIT 1),'logistik',1,20,1,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='ida' AND class_id=99 LIMIT 1),'eu-werkstatt',1,20,1,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='ida' AND class_id=99 LIMIT 1),'tourismustal',1,20,1,2);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='ida' AND class_id=99 LIMIT 1),'kofferdetektiv',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='ida' AND class_id=99 LIMIT 1),'heli',1,40,1,4);
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('86dfc304-d381-749b-ab7f-f91286fcee48',99,'Ben','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('86dfc304-d381-749b-ab7f-f91286fcee48','farmer',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJoaXRfcmF0ZSI6IDcyLCAieWVhciI6IDExLCAiY3JvcHNfdXNlZCI6IDR9') USING utf8mb4),359000,'2026-06-20 10:04:42');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='ben' AND class_id=99 LIMIT 1),99,'farmer',72,359,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJoaXRfcmF0ZSI6IDcyLCAieWVhciI6IDExLCAiY3JvcHNfdXNlZCI6IDR9') USING utf8mb4),'2026-06-20 10:04:42');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('86dfc304-d381-749b-ab7f-f91286fcee48','klima',99,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE2LjUyLCAiZmluYWxfZmxvb2RlZF9wY3QiOiAzNCwgImZpbmFsX2J1ZGdldCI6IDI2MCwgImZpbmFsX2NvMiI6IDQzMSwgImZpbmFsX3BvcHVsYXRpb24iOiAyNTB9') USING utf8mb4),265000,'2026-06-08 13:26:54');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='ben' AND class_id=99 LIMIT 1),99,'klima',66,265,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE2LjUyLCAiZmluYWxfZmxvb2RlZF9wY3QiOiAzNCwgImZpbmFsX2J1ZGdldCI6IDI2MCwgImZpbmFsX2NvMiI6IDQzMSwgImZpbmFsX3BvcHVsYXRpb24iOiAyNTB9') USING utf8mb4),'2026-06-08 13:26:54');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('86dfc304-d381-749b-ab7f-f91286fcee48','energiemanager',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJibG9ja3NCYWxhbmNlZCI6IDgsICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDQsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),347000,'2026-06-06 12:54:04');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='ben' AND class_id=99 LIMIT 1),99,'energiemanager',68,347,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJibG9ja3NCYWxhbmNlZCI6IDgsICJibG9ja3NUb3RhbCI6IDEyLCAiZGF5c1BsYXllZCI6IDQsICJkYXlzVG90YWwiOiA2fQ==') USING utf8mb4),'2026-06-06 12:54:04');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('86dfc304-d381-749b-ab7f-f91286fcee48','fluss',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJiaW9kaXYiOiA3NCwgImVjb25vbXkiOiA3NCwgImZsb29kIjogMjYsICJmb29kIjogNzR9') USING utf8mb4),328000,'2026-07-13 08:01:47');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='ben' AND class_id=99 LIMIT 1),99,'fluss',74,328,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJiaW9kaXYiOiA3NCwgImVjb25vbXkiOiA3NCwgImZsb29kIjogMjYsICJmb29kIjogNzR9') USING utf8mb4),'2026-07-13 08:01:47');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('86dfc304-d381-749b-ab7f-f91286fcee48','tourismustal',99,CONVERT(FROM_BASE64('eyJnb2Fsc0RvbmUiOiA1LCAiZ29hbHNUb3RhbCI6IDYsICJzYXRpc2ZhY3Rpb24iOiA4MSwgIm5hdHVyZSI6IDgxLCAibW9uZXkiOiAxMDB9') USING utf8mb4),152000,'2026-07-13 12:44:45');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='ben' AND class_id=99 LIMIT 1),99,'tourismustal',81,152,CONVERT(FROM_BASE64('eyJnb2Fsc0RvbmUiOiA1LCAiZ29hbHNUb3RhbCI6IDYsICJzYXRpc2ZhY3Rpb24iOiA4MSwgIm5hdHVyZSI6IDgxLCAibW9uZXkiOiAxMDB9') USING utf8mb4),'2026-07-13 12:44:45');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('86dfc304-d381-749b-ab7f-f91286fcee48','heli',99,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiA0LCAicGxhblBjdCI6IDcyLCAic3RhcnRTY29yZSI6IDQsICJsYW5kaW5nU2NvcmUiOiA0fQ==') USING utf8mb4),375000,'2026-07-08 15:39:20');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='ben' AND class_id=99 LIMIT 1),99,'heli',72,375,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiA0LCAicGxhblBjdCI6IDcyLCAic3RhcnRTY29yZSI6IDQsICJsYW5kaW5nU2NvcmUiOiA0fQ==') USING utf8mb4),'2026-07-08 15:39:20');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='ben' AND class_id=99 LIMIT 1),'farmer',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='ben' AND class_id=99 LIMIT 1),'klima',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='ben' AND class_id=99 LIMIT 1),'energiemanager',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='ben' AND class_id=99 LIMIT 1),'fluss',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='ben' AND class_id=99 LIMIT 1),'tourismustal',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='ben' AND class_id=99 LIMIT 1),'heli',1,40,1,4);
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('100a9ed2-8004-6bf3-dd5e-41a392632bd3',99,'Clara','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('100a9ed2-8004-6bf3-dd5e-41a392632bd3','sonnensystem',99,CONVERT(FROM_BASE64('eyJjb21wbGV0ZWQiOiAxMiwgInRvdGFsIjogMjAsICJmaXJzdFRyeSI6IGZhbHNlfQ==') USING utf8mb4),516000,'2026-06-02 10:24:25');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='clara' AND class_id=99 LIMIT 1),99,'sonnensystem',62,516,CONVERT(FROM_BASE64('eyJjb21wbGV0ZWQiOiAxMiwgInRvdGFsIjogMjAsICJmaXJzdFRyeSI6IGZhbHNlfQ==') USING utf8mb4),'2026-06-02 10:24:25');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('100a9ed2-8004-6bf3-dd5e-41a392632bd3','eu-werkstatt',99,CONVERT(FROM_BASE64('eyJlbmRUeXBlIjogImFib3J0ZWQiLCAic3RlcHNUb3RhbCI6IDEwLCAiZmlyc3RUcnlIaXRzIjogNiwgInRvdGFsQXR0ZW1wdHMiOiAxMiwgIm11ZWxsZWltZXJDb3VudCI6IDF9') USING utf8mb4),188000,'2026-06-23 14:28:54');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='clara' AND class_id=99 LIMIT 1),99,'eu-werkstatt',56,188,CONVERT(FROM_BASE64('eyJlbmRUeXBlIjogImFib3J0ZWQiLCAic3RlcHNUb3RhbCI6IDEwLCAiZmlyc3RUcnlIaXRzIjogNiwgInRvdGFsQXR0ZW1wdHMiOiAxMiwgIm11ZWxsZWltZXJDb3VudCI6IDF9') USING utf8mb4),'2026-06-23 14:28:54');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('100a9ed2-8004-6bf3-dd5e-41a392632bd3','farmer',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJoaXRfcmF0ZSI6IDc0LCAieWVhciI6IDExLCAiY3JvcHNfdXNlZCI6IDR9') USING utf8mb4),352000,'2026-05-15 08:29:29');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='clara' AND class_id=99 LIMIT 1),99,'farmer',74,352,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJoaXRfcmF0ZSI6IDc0LCAieWVhciI6IDExLCAiY3JvcHNfdXNlZCI6IDR9') USING utf8mb4),'2026-05-15 08:29:29');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('100a9ed2-8004-6bf3-dd5e-41a392632bd3','fluss',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJiaW9kaXYiOiA1OCwgImVjb25vbXkiOiA1OCwgImZsb29kIjogNDIsICJmb29kIjogNTh9') USING utf8mb4),204000,'2026-07-08 13:11:14');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='clara' AND class_id=99 LIMIT 1),99,'fluss',58,204,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJiaW9kaXYiOiA1OCwgImVjb25vbXkiOiA1OCwgImZsb29kIjogNDIsICJmb29kIjogNTh9') USING utf8mb4),'2026-07-08 13:11:14');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('100a9ed2-8004-6bf3-dd5e-41a392632bd3','fluss',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJiaW9kaXYiOiA2MSwgImVjb25vbXkiOiA2MSwgImZsb29kIjogMzksICJmb29kIjogNjF9') USING utf8mb4),150000,'2026-07-19 08:11:22');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='clara' AND class_id=99 LIMIT 1),99,'fluss',61,150,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJiaW9kaXYiOiA2MSwgImVjb25vbXkiOiA2MSwgImZsb29kIjogMzksICJmb29kIjogNjF9') USING utf8mb4),'2026-07-19 08:11:22');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('100a9ed2-8004-6bf3-dd5e-41a392632bd3','heli',99,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiAzLCAicGxhblBjdCI6IDY0LCAic3RhcnRTY29yZSI6IDMsICJsYW5kaW5nU2NvcmUiOiAzfQ==') USING utf8mb4),526000,'2026-07-15 12:58:23');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='clara' AND class_id=99 LIMIT 1),99,'heli',64,526,CONVERT(FROM_BASE64('eyJzdGVybmVHZXNhbXQiOiAzLCAicGxhblBjdCI6IDY0LCAic3RhcnRTY29yZSI6IDMsICJsYW5kaW5nU2NvcmUiOiAzfQ==') USING utf8mb4),'2026-07-15 12:58:23');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='clara' AND class_id=99 LIMIT 1),'sonnensystem',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='clara' AND class_id=99 LIMIT 1),'eu-werkstatt',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='clara' AND class_id=99 LIMIT 1),'farmer',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='clara' AND class_id=99 LIMIT 1),'fluss',2,60,2,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='clara' AND class_id=99 LIMIT 1),'heli',1,30,1,3);
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('d9c65815-39ce-6c05-6280-1c5f87e844e0',99,'Greta','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('d9c65815-39ce-6c05-6280-1c5f87e844e0','tourismustal',99,CONVERT(FROM_BASE64('eyJnb2Fsc0RvbmUiOiA0LCAiZ29hbHNUb3RhbCI6IDYsICJzYXRpc2ZhY3Rpb24iOiA2OSwgIm5hdHVyZSI6IDY5LCAibW9uZXkiOiAxMDB9') USING utf8mb4),513000,'2026-06-07 09:50:24');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='greta' AND class_id=99 LIMIT 1),99,'tourismustal',69,513,CONVERT(FROM_BASE64('eyJnb2Fsc0RvbmUiOiA0LCAiZ29hbHNUb3RhbCI6IDYsICJzYXRpc2ZhY3Rpb24iOiA2OSwgIm5hdHVyZSI6IDY5LCAibW9uZXkiOiAxMDB9') USING utf8mb4),'2026-06-07 09:50:24');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('d9c65815-39ce-6c05-6280-1c5f87e844e0','farmer',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJoaXRfcmF0ZSI6IDcxLCAieWVhciI6IDExLCAiY3JvcHNfdXNlZCI6IDR9') USING utf8mb4),190000,'2026-06-24 08:16:11');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='greta' AND class_id=99 LIMIT 1),99,'farmer',71,190,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJoaXRfcmF0ZSI6IDcxLCAieWVhciI6IDExLCAiY3JvcHNfdXNlZCI6IDR9') USING utf8mb4),'2026-06-24 08:16:11');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('d9c65815-39ce-6c05-6280-1c5f87e844e0','kofferdetektiv',99,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA0LCAiY29ycmVjdF9maXJzdF90cnkiOiA0LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDQuMn0=') USING utf8mb4),523000,'2026-05-16 08:58:02');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='greta' AND class_id=99 LIMIT 1),99,'kofferdetektiv',64,523,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA0LCAiY29ycmVjdF9maXJzdF90cnkiOiA0LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDQuMn0=') USING utf8mb4),'2026-05-16 08:58:02');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('d9c65815-39ce-6c05-6280-1c5f87e844e0','logistik',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJvcmRlcnNEZWxpdmVyZWQiOiA3LCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogNjAwfQ==') USING utf8mb4),561000,'2026-07-19 10:30:17');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='greta' AND class_id=99 LIMIT 1),99,'logistik',70,561,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJvcmRlcnNEZWxpdmVyZWQiOiA3LCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogNjAwfQ==') USING utf8mb4),'2026-07-19 10:30:17');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('d9c65815-39ce-6c05-6280-1c5f87e844e0','weltkueche',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJjb21wbGV0ZWREaXNoZXMiOiA4LCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogM30=') USING utf8mb4),452000,'2026-07-08 09:08:00');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='greta' AND class_id=99 LIMIT 1),99,'weltkueche',77,452,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJjb21wbGV0ZWREaXNoZXMiOiA4LCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogM30=') USING utf8mb4),'2026-07-08 09:08:00');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('d9c65815-39ce-6c05-6280-1c5f87e844e0','kofferdetektiv',99,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA0LCAiY29ycmVjdF9maXJzdF90cnkiOiA0LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDMuOX0=') USING utf8mb4),494000,'2026-07-19 09:22:33');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='greta' AND class_id=99 LIMIT 1),99,'kofferdetektiv',68,494,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA0LCAiY29ycmVjdF9maXJzdF90cnkiOiA0LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDMuOX0=') USING utf8mb4),'2026-07-19 09:22:33');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='greta' AND class_id=99 LIMIT 1),'tourismustal',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='greta' AND class_id=99 LIMIT 1),'farmer',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='greta' AND class_id=99 LIMIT 1),'kofferdetektiv',2,60,2,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='greta' AND class_id=99 LIMIT 1),'logistik',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='greta' AND class_id=99 LIMIT 1),'weltkueche',1,40,1,4);
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('5d0e8345-23d5-601a-9dc9-7e78d8651909',99,'Jakob','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5d0e8345-23d5-601a-9dc9-7e78d8651909','busfahrt',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJ3b25PcmRlcnMiOiA3LCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogNywgImF2Z1RhcEttIjogNTR9') USING utf8mb4),136000,'2026-06-04 15:50:28');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='jakob_s' AND class_id=99 LIMIT 1),99,'busfahrt',86,136,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJ3b25PcmRlcnMiOiA3LCAidG90YWxPcmRlcnMiOiA4LCAicXVpekZpcnN0VHJ5IjogNywgImF2Z1RhcEttIjogNTR9') USING utf8mb4),'2026-06-04 15:50:28');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5d0e8345-23d5-601a-9dc9-7e78d8651909','kofferdetektiv',99,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA1LCAiY29ycmVjdF9maXJzdF90cnkiOiA1LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDIuNH0=') USING utf8mb4),405000,'2026-06-10 14:38:31');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='jakob_s' AND class_id=99 LIMIT 1),99,'kofferdetektiv',84,405,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA1LCAiY29ycmVjdF9maXJzdF90cnkiOiA1LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDIuNH0=') USING utf8mb4),'2026-06-10 14:38:31');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5d0e8345-23d5-601a-9dc9-7e78d8651909','tourismustal',99,CONVERT(FROM_BASE64('eyJnb2Fsc0RvbmUiOiA1LCAiZ29hbHNUb3RhbCI6IDYsICJzYXRpc2ZhY3Rpb24iOiA3NywgIm5hdHVyZSI6IDc3LCAibW9uZXkiOiAxMDB9') USING utf8mb4),597000,'2026-06-24 08:47:36');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='jakob_s' AND class_id=99 LIMIT 1),99,'tourismustal',77,597,CONVERT(FROM_BASE64('eyJnb2Fsc0RvbmUiOiA1LCAiZ29hbHNUb3RhbCI6IDYsICJzYXRpc2ZhY3Rpb24iOiA3NywgIm5hdHVyZSI6IDc3LCAibW9uZXkiOiAxMDB9') USING utf8mb4),'2026-06-24 08:47:36');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5d0e8345-23d5-601a-9dc9-7e78d8651909','weltkueche',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJjb21wbGV0ZWREaXNoZXMiOiA3LCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogNH0=') USING utf8mb4),376000,'2026-07-13 14:30:03');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='jakob_s' AND class_id=99 LIMIT 1),99,'weltkueche',74,376,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJjb21wbGV0ZWREaXNoZXMiOiA3LCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogNH0=') USING utf8mb4),'2026-07-13 14:30:03');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5d0e8345-23d5-601a-9dc9-7e78d8651909','logistik',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJvcmRlcnNEZWxpdmVyZWQiOiA3LCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogNjAwfQ==') USING utf8mb4),245000,'2026-07-16 15:08:49');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='jakob_s' AND class_id=99 LIMIT 1),99,'logistik',70,245,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJvcmRlcnNEZWxpdmVyZWQiOiA3LCAidG90YWxPcmRlcnMiOiAxMCwgIm9yZGVyc0xhdGUiOiAwLCAiZmluYWxCYWxhbmNlIjogNjAwfQ==') USING utf8mb4),'2026-07-16 15:08:49');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5d0e8345-23d5-601a-9dc9-7e78d8651909','tourismustal',99,CONVERT(FROM_BASE64('eyJnb2Fsc0RvbmUiOiA1LCAiZ29hbHNUb3RhbCI6IDYsICJzYXRpc2ZhY3Rpb24iOiA4NCwgIm5hdHVyZSI6IDg0LCAibW9uZXkiOiAxMDB9') USING utf8mb4),234000,'2026-07-18 14:56:13');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='jakob_s' AND class_id=99 LIMIT 1),99,'tourismustal',84,234,CONVERT(FROM_BASE64('eyJnb2Fsc0RvbmUiOiA1LCAiZ29hbHNUb3RhbCI6IDYsICJzYXRpc2ZhY3Rpb24iOiA4NCwgIm5hdHVyZSI6IDg0LCAibW9uZXkiOiAxMDB9') USING utf8mb4),'2026-07-18 14:56:13');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='jakob_s' AND class_id=99 LIMIT 1),'busfahrt',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='jakob_s' AND class_id=99 LIMIT 1),'kofferdetektiv',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='jakob_s' AND class_id=99 LIMIT 1),'tourismustal',2,80,2,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='jakob_s' AND class_id=99 LIMIT 1),'weltkueche',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='jakob_s' AND class_id=99 LIMIT 1),'logistik',1,40,1,4);
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('5fa5c0e3-214d-e523-b81f-d2866dd6ad07',99,'Marlene','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5fa5c0e3-214d-e523-b81f-d2866dd6ad07','weltkueche',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJjb21wbGV0ZWREaXNoZXMiOiA2LCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogNX0=') USING utf8mb4),437000,'2026-05-28 12:20:08');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='marlene' AND class_id=99 LIMIT 1),99,'weltkueche',64,437,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJjb21wbGV0ZWREaXNoZXMiOiA2LCAidG90YWxEaXNoZXMiOiAxMCwgIm1pc3Rha2VzSW5EaXNoIjogNX0=') USING utf8mb4),'2026-05-28 12:20:08');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5fa5c0e3-214d-e523-b81f-d2866dd6ad07','klima',99,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE2LjU1LCAiZmluYWxfZmxvb2RlZF9wY3QiOiAzNSwgImZpbmFsX2J1ZGdldCI6IDI1MCwgImZpbmFsX2NvMiI6IDQzMiwgImZpbmFsX3BvcHVsYXRpb24iOiAyNTB9') USING utf8mb4),171000,'2026-06-14 15:32:07');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='marlene' AND class_id=99 LIMIT 1),99,'klima',65,171,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE2LjU1LCAiZmluYWxfZmxvb2RlZF9wY3QiOiAzNSwgImZpbmFsX2J1ZGdldCI6IDI1MCwgImZpbmFsX2NvMiI6IDQzMiwgImZpbmFsX3BvcHVsYXRpb24iOiAyNTB9') USING utf8mb4),'2026-06-14 15:32:07');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5fa5c0e3-214d-e523-b81f-d2866dd6ad07','klima',99,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE2LjQzLCAiZmluYWxfZmxvb2RlZF9wY3QiOiAzMSwgImZpbmFsX2J1ZGdldCI6IDI5MCwgImZpbmFsX2NvMiI6IDQyNiwgImZpbmFsX3BvcHVsYXRpb24iOiAyNTB9') USING utf8mb4),466000,'2026-05-16 13:16:38');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='marlene' AND class_id=99 LIMIT 1),99,'klima',69,466,CONVERT(FROM_BASE64('eyJmaW5hbF90ZW1wZXJhdHVyZSI6IDE2LjQzLCAiZmluYWxfZmxvb2RlZF9wY3QiOiAzMSwgImZpbmFsX2J1ZGdldCI6IDI5MCwgImZpbmFsX2NvMiI6IDQyNiwgImZpbmFsX3BvcHVsYXRpb24iOiAyNTB9') USING utf8mb4),'2026-05-16 13:16:38');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5fa5c0e3-214d-e523-b81f-d2866dd6ad07','farmer',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJoaXRfcmF0ZSI6IDY4LCAieWVhciI6IDEwLCAiY3JvcHNfdXNlZCI6IDR9') USING utf8mb4),186000,'2026-07-14 09:30:21');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='marlene' AND class_id=99 LIMIT 1),99,'farmer',68,186,CONVERT(FROM_BASE64('eyJzdGFycyI6IDMsICJoaXRfcmF0ZSI6IDY4LCAieWVhciI6IDEwLCAiY3JvcHNfdXNlZCI6IDR9') USING utf8mb4),'2026-07-14 09:30:21');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5fa5c0e3-214d-e523-b81f-d2866dd6ad07','eu-werkstatt',99,CONVERT(FROM_BASE64('eyJlbmRUeXBlIjogInN1Y2Nlc3MiLCAic3RlcHNUb3RhbCI6IDEwLCAiZmlyc3RUcnlIaXRzIjogNywgInRvdGFsQXR0ZW1wdHMiOiAxMiwgIm11ZWxsZWltZXJDb3VudCI6IDB9') USING utf8mb4),214000,'2026-07-12 08:55:12');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='marlene' AND class_id=99 LIMIT 1),99,'eu-werkstatt',68,214,CONVERT(FROM_BASE64('eyJlbmRUeXBlIjogInN1Y2Nlc3MiLCAic3RlcHNUb3RhbCI6IDEwLCAiZmlyc3RUcnlIaXRzIjogNywgInRvdGFsQXR0ZW1wdHMiOiAxMiwgIm11ZWxsZWltZXJDb3VudCI6IDB9') USING utf8mb4),'2026-07-12 08:55:12');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('5fa5c0e3-214d-e523-b81f-d2866dd6ad07','sonnensystem',99,CONVERT(FROM_BASE64('eyJjb21wbGV0ZWQiOiAxMywgInRvdGFsIjogMjAsICJmaXJzdFRyeSI6IGZhbHNlfQ==') USING utf8mb4),198000,'2026-07-17 10:35:17');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='marlene' AND class_id=99 LIMIT 1),99,'sonnensystem',63,198,CONVERT(FROM_BASE64('eyJjb21wbGV0ZWQiOiAxMywgInRvdGFsIjogMjAsICJmaXJzdFRyeSI6IGZhbHNlfQ==') USING utf8mb4),'2026-07-17 10:35:17');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='marlene' AND class_id=99 LIMIT 1),'weltkueche',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='marlene' AND class_id=99 LIMIT 1),'klima',2,60,2,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='marlene' AND class_id=99 LIMIT 1),'farmer',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='marlene' AND class_id=99 LIMIT 1),'eu-werkstatt',1,30,1,3);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='marlene' AND class_id=99 LIMIT 1),'sonnensystem',1,30,1,3);
|
||||
INSERT INTO student_sessions (id, class_id, display_name, created_at, last_seen, country) VALUES ('decc2aab-27fe-cd71-2778-cced389c7b35',99,'Olivia','2025-10-01 08:00:00','2026-07-19 12:00:00','AT');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('decc2aab-27fe-cd71-2778-cced389c7b35','tourismusregion',99,CONVERT(FROM_BASE64('eyJzY29yZSI6IDg3fQ==') USING utf8mb4),373000,'2026-06-09 08:50:52');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='olivia' AND class_id=99 LIMIT 1),99,'tourismusregion',87,373,CONVERT(FROM_BASE64('eyJzY29yZSI6IDg3fQ==') USING utf8mb4),'2026-06-09 08:50:52');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('decc2aab-27fe-cd71-2778-cced389c7b35','fluss',99,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJiaW9kaXYiOiA4OSwgImVjb25vbXkiOiA4OSwgImZsb29kIjogMTEsICJmb29kIjogODl9') USING utf8mb4),351000,'2026-06-25 13:31:16');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='olivia' AND class_id=99 LIMIT 1),99,'fluss',89,351,CONVERT(FROM_BASE64('eyJzdGFycyI6IDQsICJiaW9kaXYiOiA4OSwgImVjb25vbXkiOiA4OSwgImZsb29kIjogMTEsICJmb29kIjogODl9') USING utf8mb4),'2026-06-25 13:31:16');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('decc2aab-27fe-cd71-2778-cced389c7b35','kofferdetektiv',99,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA2LCAiY29ycmVjdF9maXJzdF90cnkiOiA2LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDEuNn0=') USING utf8mb4),179000,'2026-05-28 12:00:17');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='olivia' AND class_id=99 LIMIT 1),99,'kofferdetektiv',93,179,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA2LCAiY29ycmVjdF9maXJzdF90cnkiOiA2LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDEuNn0=') USING utf8mb4),'2026-05-28 12:00:17');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('decc2aab-27fe-cd71-2778-cced389c7b35','tourismusregion',99,CONVERT(FROM_BASE64('eyJzY29yZSI6IDgxfQ==') USING utf8mb4),580000,'2026-07-14 11:30:30');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='olivia' AND class_id=99 LIMIT 1),99,'tourismusregion',81,580,CONVERT(FROM_BASE64('eyJzY29yZSI6IDgxfQ==') USING utf8mb4),'2026-07-14 11:30:30');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('decc2aab-27fe-cd71-2778-cced389c7b35','kofferdetektiv',99,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA1LCAiY29ycmVjdF9maXJzdF90cnkiOiA1LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDIuN30=') USING utf8mb4),381000,'2026-07-14 09:05:10');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='olivia' AND class_id=99 LIMIT 1),99,'kofferdetektiv',81,381,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA1LCAiY29ycmVjdF9maXJzdF90cnkiOiA1LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDIuN30=') USING utf8mb4),'2026-07-14 09:05:10');
|
||||
INSERT INTO assessments (session_id, sim_id, class_id, results, duration_ms, submitted_at) VALUES ('decc2aab-27fe-cd71-2778-cced389c7b35','kofferdetektiv',99,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA1LCAiY29ycmVjdF9maXJzdF90cnkiOiA1LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDIuM30=') USING utf8mb4),520000,'2026-07-16 11:35:02');
|
||||
INSERT INTO student_results (student_id, class_id, module_id, score, duration_sec, detail_json, completed_at) VALUES ((SELECT id FROM students WHERE username='olivia' AND class_id=99 LIMIT 1),99,'kofferdetektiv',86,520,CONVERT(FROM_BASE64('eyJjYXNlc190b3RhbCI6IDYsICJjYXNlc19zb2x2ZWQiOiA1LCAiY29ycmVjdF9maXJzdF90cnkiOiA1LCAid3JvbmdfZ3Vlc3NlcyI6IDAsICJoaW50c191c2VkX2F2ZyI6IDIuM30=') USING utf8mb4),'2026-07-16 11:35:02');
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='olivia' AND class_id=99 LIMIT 1),'tourismusregion',2,80,2,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='olivia' AND class_id=99 LIMIT 1),'fluss',1,40,1,4);
|
||||
INSERT INTO player_progress (student_id, sim_id, level, xp, plays, best_stars) VALUES ((SELECT id FROM students WHERE username='olivia' AND class_id=99 LIMIT 1),'kofferdetektiv',2,135,3,5);
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
@@ -605,6 +605,39 @@ if ($method === 'GET') {
|
||||
$benchByStudent[$sid]['n']++;
|
||||
}
|
||||
|
||||
// 4b) RECENCY — Grundlage für die Interventions-Empfehlung: nur die AKTUELLE
|
||||
// Leistung zählt (kein Allzeit-Rückblick). Aus student_results:
|
||||
// recentErfolg = Ø der letzten 3 Läufe · daysSince = Tage seit letztem Lauf
|
||||
// recentPlays = Läufe der letzten 14 Tage
|
||||
$recentByStudent = [];
|
||||
foreach ($db->fetchAll(
|
||||
"SELECT student_id,
|
||||
DATEDIFF(NOW(), MAX(completed_at)) AS days_since,
|
||||
SUM(completed_at >= NOW() - INTERVAL 14 DAY) AS recent_plays
|
||||
FROM student_results WHERE class_id = ? GROUP BY student_id",
|
||||
[$classId]) as $r) {
|
||||
$recentByStudent[(int)$r['student_id']] = [
|
||||
'daysSince' => $r['days_since'] !== null ? (int)$r['days_since'] : null,
|
||||
'recentPlays' => (int)$r['recent_plays'],
|
||||
'recentErfolg' => null,
|
||||
];
|
||||
}
|
||||
foreach ($db->fetchAll(
|
||||
"SELECT student_id,
|
||||
ROUND(AVG(CASE WHEN rn <= 3 THEN score END)) AS recent_erfolg,
|
||||
ROUND(AVG(CASE WHEN rn > 3 THEN score END)) AS early_erfolg
|
||||
FROM (
|
||||
SELECT student_id, score,
|
||||
ROW_NUMBER() OVER (PARTITION BY student_id ORDER BY completed_at DESC, id DESC) rn
|
||||
FROM student_results WHERE class_id = ?
|
||||
) x GROUP BY student_id",
|
||||
[$classId]) as $r) {
|
||||
$sid = (int)$r['student_id'];
|
||||
if (!isset($recentByStudent[$sid])) $recentByStudent[$sid] = ['daysSince'=>null,'recentPlays'=>0,'recentErfolg'=>null];
|
||||
$recentByStudent[$sid]['recentErfolg'] = $r['recent_erfolg'] !== null ? (int)$r['recent_erfolg'] : null;
|
||||
$recentByStudent[$sid]['earlyErfolg'] = $r['early_erfolg'] !== null ? (int)$r['early_erfolg'] : null;
|
||||
}
|
||||
|
||||
// 5) needsHelp-Heuristik aus Live-State (pro aktivem Schüler:in)
|
||||
$needsHelp = function($simId, $state) {
|
||||
if (!is_array($state)) return false;
|
||||
@@ -701,6 +734,10 @@ if ($method === 'GET') {
|
||||
'lastSeen' => $lastSeen,
|
||||
'lastSeenTs' => $lastSeen ? strtotime($lastSeen) : null,
|
||||
'benchmarkPct' => $bench,
|
||||
'recentErfolg' => $recentByStudent[$sid]['recentErfolg'] ?? null,
|
||||
'earlyErfolg' => $recentByStudent[$sid]['earlyErfolg'] ?? null,
|
||||
'daysSince' => $recentByStudent[$sid]['daysSince'] ?? null,
|
||||
'recentPlays' => $recentByStudent[$sid]['recentPlays'] ?? 0,
|
||||
'activeSim' => $active ? $active['module_id'] : null,
|
||||
'activeSimName'=> $active && isset($moduleMap[$active['module_id']]) ? $moduleMap[$active['module_id']]['title'] : null,
|
||||
'activeSimIcon'=> $active && isset($moduleMap[$active['module_id']]) ? $moduleMap[$active['module_id']]['icon'] : null,
|
||||
|
||||
+39
-24
@@ -2111,9 +2111,10 @@ var IV_CSS = ''
|
||||
+ '.iv-ic svg{width:19px;height:19px;stroke:currentColor;stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round}'
|
||||
+ '.iv-ct{flex:1}.iv-ct h4{margin:0;font-size:.9rem;font-weight:750;color:var(--iva)}.iv-ct p{margin:0;font-size:.72rem;color:var(--ivmut)}'
|
||||
+ '.iv-cn{font-size:1.05rem;font-weight:750;color:var(--iva)}'
|
||||
+ '.iv-cols{display:grid;grid-template-columns:78px 1fr 30px 58px 14px;gap:9px;padding:0 8px 3px;font-size:.54rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ivmut);border-bottom:1px solid var(--ivline)}'
|
||||
+ '.iv-cols span:nth-child(2){justify-self:end}.iv-cols span:nth-child(3),.iv-cols span:nth-child(4){justify-self:center}'
|
||||
+ '.iv-prow{display:grid;grid-template-columns:78px 1fr 30px 58px 14px;gap:9px;align-items:center;width:100%;text-align:left;cursor:pointer;background:none;border:0;border-radius:8px;padding:7px 8px;font:inherit;color:inherit}'
|
||||
+ '.iv-cols{display:grid;grid-template-columns:72px 1fr 28px 50px 46px 14px;gap:9px;padding:0 8px 3px;font-size:.52rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ivmut);border-bottom:1px solid var(--ivline)}'
|
||||
+ '.iv-cols span:nth-child(2){justify-self:end}.iv-cols span:nth-child(3),.iv-cols span:nth-child(4){justify-self:center}.iv-cols span:nth-child(5){justify-self:end}'
|
||||
+ '.iv-prow{display:grid;grid-template-columns:72px 1fr 28px 50px 46px 14px;gap:9px;align-items:center;width:100%;text-align:left;cursor:pointer;background:none;border:0;border-radius:8px;padding:7px 8px;font:inherit;color:inherit}'
|
||||
+ '.iv-last{justify-self:end;font-size:.7rem;color:var(--ivmut);white-space:nowrap}.iv-last-old{color:var(--ivr);font-weight:700}'
|
||||
+ '.iv-prow:hover{background:var(--ivsoft)}'
|
||||
+ '.iv-nm{font-size:.86rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}'
|
||||
+ '.iv-erf{display:flex;align-items:center;gap:7px;justify-self:end}.iv-ebar{width:70px;height:9px;border-radius:5px;background:var(--ivtrack);overflow:hidden}.iv-ebar>i{display:block;height:100%;border-radius:5px}.iv-erf b{font-size:.78rem;font-weight:700;width:1.7em}'
|
||||
@@ -2161,18 +2162,27 @@ var IV_ICON={
|
||||
work:'<circle cx="12" cy="12" r="9"/><path d="m15 9-3.6 1.4L10 14l3.6-1.4L15 9Z"/>',
|
||||
good:'<path d="m4 15 5-5 4 4 7-8"/><path d="M17 6h3v3"/>',
|
||||
idle:'<circle cx="12" cy="12" r="9" stroke-dasharray="3 3"/><path d="M12 8v4l2 2"/>'};
|
||||
var IV_META={support:['Fördern','strengen sich an, kommen nicht weiter','--ivns'],more:['Fordern','lösen sicher, kaum ausgelastet','--ivnm'],
|
||||
work:['Begleiten','viel Aktivität, wenig Ertrag','--ivnw'],good:['Bestätigen','noch nicht am Ziel, aber im Aufwind','--ivngd'],idle:['Beteiligen','kaum Daten – zuerst ins Arbeiten holen','--ivni']};
|
||||
var IV_META={support:['Fördern','zuletzt schwächere Läufe','--ivns'],more:['Fordern','zuletzt sicher, kaum gefordert','--ivnm'],
|
||||
work:['Begleiten','zuletzt viel gearbeitet, wenig Ertrag','--ivnw'],good:['Bestätigen','zuletzt besser geworden','--ivngd'],idle:['Nachfassen','länger nicht mehr dran (oder noch nie)','--ivni']};
|
||||
|
||||
// Triage-Zuordnung aus Erfolg (benchmarkPct) × Beteiligung (plays) + Verlaufs-Trend.
|
||||
function ivTriage(erfolg, plays, rising){
|
||||
if (plays < 2 || erfolg==null) return 'idle';
|
||||
if (erfolg < 48 && plays >= 9) return 'work';
|
||||
if (erfolg < 48) return 'support';
|
||||
if (erfolg >= 65 && plays < 6) return 'more';
|
||||
if (erfolg < 65 && rising) return 'good';
|
||||
// Triage NUR aus der AKTUELLEN Leistung (Empfehlung = Reaktion auf das Zuletzt-
|
||||
// Gesehene, kein Allzeit-Rückblick): recentErfolg = Ø letzte 3 Läufe, daysSince =
|
||||
// Tage seit letztem Lauf, recentPlays = Läufe der letzten 14 Tage, rising =
|
||||
// zuletzt besser als der bisherige Schnitt.
|
||||
function ivTriage(recErf, daysSince, recentPlays, rising){
|
||||
if (daysSince == null || daysSince > 14) return 'idle'; // länger nicht dran / nie
|
||||
if (recErf == null) return 'idle';
|
||||
if (recErf < 48 && recentPlays >= 5) return 'work'; // zuletzt viel, wenig Ertrag
|
||||
if (recErf < 48) return 'support'; // zuletzt schwach
|
||||
if (recErf >= 65 && recentPlays <= 2) return 'more'; // zuletzt sicher, kaum gefordert
|
||||
if (rising) return 'good'; // zuletzt besser geworden
|
||||
return null; // läuft rund
|
||||
}
|
||||
function ivZuletzt(days){
|
||||
if (days == null) return '<span class="iv-last iv-last-old">nie</span>';
|
||||
var t = days<=0 ? 'heute' : (days==1 ? 'gestern' : 'vor '+days+' T');
|
||||
return '<span class="iv-last'+(days>14?' iv-last-old':'')+'">'+t+'</span>';
|
||||
}
|
||||
|
||||
function ivBuildOverview(cockpit, weeks, studentsCount, matrix){
|
||||
ivInjectCss();
|
||||
@@ -2188,17 +2198,19 @@ function ivBuildOverview(cockpit, weeks, studentsCount, matrix){
|
||||
|
||||
var groups={support:[],more:[],work:[],good:[],idle:[]}, calm=[], erfSum=0,erfN=0, weekTotals=[];
|
||||
cs.forEach(function(s){
|
||||
var sid=s.studentId||s.id, erf=(s.benchmarkPct!=null)?s.benchmarkPct:null, plays=playsById[sid]||0;
|
||||
var sid=s.studentId||s.id;
|
||||
var recErf=(s.recentErfolg!=null)?s.recentErfolg:null; // Ø letzte 3 Läufe
|
||||
var allErf=(s.benchmarkPct!=null)?s.benchmarkPct:null; // Allzeit (nur für „rising")
|
||||
var days=(s.daysSince!=null)?s.daysSince:null;
|
||||
var rplays=s.recentPlays||0;
|
||||
var w=wById[sid], secs=w?w.buckets.map(function(b){return Math.min(IV_WEEK_CAP, b.sum||0);}):[];
|
||||
while(secs.length<10) secs.unshift(0);
|
||||
secs.forEach(function(v){ if(v>maxSec) maxSec=v; });
|
||||
// Trend: Mittel letzte 3 vs erste 3
|
||||
var last3=secs.slice(-3).reduce(function(a,b){return a+b;},0), first3=secs.slice(0,3).reduce(function(a,b){return a+b;},0);
|
||||
var rising = last3>first3*1.2 && last3>0;
|
||||
if(erf!=null){ erfSum+=erf; erfN++; }
|
||||
var rising=(recErf!=null && s.earlyErfolg!=null && recErf > s.earlyErfolg+10); // letzte 3 besser als frühere
|
||||
if(recErf!=null){ erfSum+=recErf; erfN++; }
|
||||
weekTotals.push(secs);
|
||||
var g=ivTriage(erf,plays,rising);
|
||||
var row={name:s.displayName,erf:erf,status:s.status,secs:secs};
|
||||
var g=ivTriage(recErf, days, rplays, rising);
|
||||
var row={name:s.displayName, erf:recErf, status:s.status, secs:secs, days:days};
|
||||
if(g) groups[g].push(row); else calm.push(s.displayName);
|
||||
});
|
||||
|
||||
@@ -2215,7 +2227,7 @@ function ivBuildOverview(cockpit, weeks, studentsCount, matrix){
|
||||
h+='<div class="iv-h1">Klassenübersicht</div>';
|
||||
// Stat-Karten
|
||||
h+='<div class="iv-stats">';
|
||||
h+='<div class="iv-stat"><span class="iv-lab">Erfolg Klassenschnitt</span><div class="iv-gfx"><span class="iv-ebar2 '+(erfAvg!=null?ivAmp(erfAvg):'')+'"><i style="width:'+(erfAvg||0)+'%"></i></span><span class="iv-bign num" style="font-size:1.05rem">'+(erfAvg!=null?erfAvg:'–')+'</span></div><span class="iv-exp">0 – 100, Mittel über alle Module</span></div>';
|
||||
h+='<div class="iv-stat"><span class="iv-lab">Erfolg Klassenschnitt</span><div class="iv-gfx"><span class="iv-ebar2 '+(erfAvg!=null?ivAmp(erfAvg):'')+'"><i style="width:'+(erfAvg||0)+'%"></i></span><span class="iv-bign num" style="font-size:1.05rem">'+(erfAvg!=null?erfAvg:'–')+'</span></div><span class="iv-exp">0 – 100, aus den letzten Läufen</span></div>';
|
||||
h+='<div class="iv-stat"><span class="iv-lab">Aktuell aktiv</span><div class="iv-gfx"><span class="iv-stripe"><i class="iv-g" style="width:'+(aktiv/tot*100)+'%"></i><i class="iv-y" style="width:'+(idle/tot*100)+'%"></i><i class="iv-r" style="width:'+(rest/tot*100)+'%"></i></span></div><span class="iv-exp">'+aktiv+' aktiv · '+idle+' teilweise · '+rest+' inaktiv</span></div>';
|
||||
h+='<div class="iv-stat"><span class="iv-lab">Verlauf Klassenschnitt<span class="iv-maxv">max <b class="num">'+maxLabel+'</b></span></span><div class="iv-gfx"><span class="iv-cav">'+classWeeks.map(function(sec){var frac=sec/classMax;var cls=sec<=0?'iv-z':(frac<.2?'iv-r':frac<.4?'iv-o':frac<.62?'iv-y':frac<.82?'iv-li':'iv-g');return '<i class="'+cls+'" style="height:'+Math.max(2,Math.round(frac*30))+'px"></i>';}).join('')+'</span></div><span class="iv-exp">aktive Zeit pro Woche · 10 Wochen</span></div>';
|
||||
h+='<div class="iv-stat"><span class="iv-lab">Schüler:innen</span><div class="iv-gfx"><span class="iv-bign num">'+studentsCount+'</span></div><span class="iv-exp">'+aktiv+' gerade aktiv</span></div>';
|
||||
@@ -2228,9 +2240,9 @@ function ivBuildOverview(cockpit, weeks, studentsCount, matrix){
|
||||
var rows=groups[key]; if(!rows.length) return;
|
||||
var m=IV_META[key];
|
||||
h+='<div class="iv-card" style="--iva:var('+m[2]+')"><div class="iv-chead"><span class="iv-ic"><svg viewBox="0 0 24 24">'+IV_ICON[key]+'</svg></span><div class="iv-ct"><h4>'+m[0]+'</h4><p>'+m[1]+'</p></div><span class="iv-cn num">'+rows.length+'</span></div>';
|
||||
h+='<div class="iv-cols"><span></span><span title="Wie gut die Sim gemeistert wird, 0–100">Erfolg</span><span title="arbeitet gerade? blinkt live">Aktiv</span><span title="aktive Zeit pro Woche">Verlauf</span><span></span></div>';
|
||||
h+='<div class="iv-cols"><span></span><span title="Ø der letzten 3 Läufe, 0–100">Erfolg</span><span title="arbeitet gerade? blinkt live">Aktiv</span><span title="aktive Zeit pro Woche">Verlauf</span><span title="Tage seit dem letzten Lauf">Zuletzt</span><span></span></div>';
|
||||
rows.forEach(function(r){
|
||||
h+='<button class="iv-prow" onclick="switchTab(\'results\')"><span class="iv-nm">'+esc(r.name)+'</span><span style="display:contents">'+ivErf(r.erf)+ivAkt(r.status)+ivSpark(r.secs,maxSec,IV_WEEK_CAP)+'</span><svg class="iv-chev" viewBox="0 0 24 24"><path d="m9 6 6 6-6 6"/></svg></button>';
|
||||
h+='<button class="iv-prow" onclick="switchTab(\'results\')"><span class="iv-nm">'+esc(r.name)+'</span><span style="display:contents">'+ivErf(r.erf)+ivAkt(r.status)+ivSpark(r.secs,maxSec,IV_WEEK_CAP)+'</span>'+ivZuletzt(r.days)+'<svg class="iv-chev" viewBox="0 0 24 24"><path d="m9 6 6 6-6 6"/></svg></button>';
|
||||
});
|
||||
h+='</div>';
|
||||
});
|
||||
@@ -2238,13 +2250,16 @@ function ivBuildOverview(cockpit, weeks, studentsCount, matrix){
|
||||
if(calm.length) h+='<div class="iv-calm"><span class="iv-dot"></span><span><b>Läuft rund — '+calm.length+'</b></span><span class="iv-names">'+calm.map(esc).join(' · ')+'</span></div>';
|
||||
// Legende
|
||||
h+='<div class="iv-legend">'
|
||||
+'<div><b>Erfolg</b> Wie gut die Simulation gemeistert wird, 0 – 100. Normiert: 0 = gescheitert, 100 = „sehr gut" (90 % des Bestwerts). Beispiel: <b style="color:#2f3a34">56</b> = solide über dem Durchschnitt.'
|
||||
+'<div style="grid-column:1/-1;font-size:.72rem;color:#8a8a8a;margin-bottom:-.2rem">Die <b>Empfehlung</b> beruht nur auf der <b>aktuellen</b> Leistung: dem Erfolg der letzten Läufe und den Tagen seit dem letzten Mal. Der Verlauf daneben ist nur Historie.</div>'
|
||||
+'<div><b>Erfolg</b> Ø der <b>letzten 3 Läufe</b> (aktueller Stand), 0 – 100: 0 = gescheitert, 100 = „sehr gut". Alte Durchläufe zählen für die Empfehlung nicht mehr mit.'
|
||||
+'<div class="iv-lgrow"><span class="iv-lgbar"></span><span>rot → grün</span></div></div>'
|
||||
+'<div><b>Zuletzt</b> Tage seit dem letzten Lauf. Wer <b>länger als 14 Tage</b> nicht mehr dran war (oder noch nie), landet bei „Nachfassen" — unabhängig von früheren Werten.'
|
||||
+'<div class="iv-lgrow"><span class="iv-last">heute</span><span style="color:#cbc6b8">·</span><span class="iv-last iv-last-old">vor 20 T</span></div></div>'
|
||||
+'<div><b>Aktuell aktiv</b> Interaktionen der letzten Minuten, live. Blinkt bei jeder Eingabe.'
|
||||
+'<div class="iv-lgrow"><span class="iv-lgdot" style="background:var(--ivg)"></span>aktiv'
|
||||
+'<span class="iv-lgdot" style="background:var(--ivy)"></span>teilweise'
|
||||
+'<span class="iv-lgdot" style="background:var(--ivr)"></span>inaktiv (10 Min nichts)</div></div>'
|
||||
+'<div><b>Verlauf</b> Aktive Zeit pro Woche, letzte 10 Wochen, gleiches Raster für alle. Farbe = Aktivität der Woche; rote Kappe = bei 3 h gedeckelt.'
|
||||
+'<div><b>Verlauf</b> Aktive Zeit pro Woche, letzte 10 Wochen — nur <b>Historie</b>, nicht Grundlage der Empfehlung. Rote Kappe = bei 3 h gedeckelt.'
|
||||
+'<div class="iv-lgrow"><span class="iv-lgv"><i class="iv-r" style="height:4px"></i><i class="iv-o" style="height:6px"></i><i class="iv-y" style="height:9px"></i><i class="iv-li" style="height:11px"></i><i class="iv-g" style="height:14px"></i></span><span>wenig → viel</span></div></div>'
|
||||
+'</div>';
|
||||
h+='</div>';
|
||||
|
||||
Reference in New Issue
Block a user