Volle Mindflux-App ins Deploy-Repo übernehmen
Ersetzt das Hello-World-Gerüst durch die vollständige Anwendung (com.example.mindflux: 64 Klassen, Thymeleaf-Templates, Static-Assets, Flyway V1–V6). Deploy-Infrastruktur (.gitea, Dockerfile) bleibt erhalten. - pom: volle Abhängigkeiten (Security, Thymeleaf, JPA, Flyway), Spring Boot 3.4.4 / Java 17 - docker-compose: SPRING_DATASOURCE_* unverändert; App lauscht auf 8080 (nginx -> mindflux:8080); Uploads-Volume; Admin-Passwörter via Gitea-Secrets - Workflow: Deploy-Step injiziert MINDFLUX_ADMIN*_PASSWORD aus Secrets - .dockerignore ergänzt; Hello-World (com.mindflux) und Test-Datei 'main' entfernt Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,5 +16,4 @@ CREATE TABLE achievements (
|
||||
date_achieved TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX idx_achievements_username
|
||||
ON achievements (username);
|
||||
CREATE INDEX idx_achievements_username ON achievements (username);
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
-- Generische Spiel-Ergebnistabelle für alle Mindflux-Spiele
|
||||
-- (MindMatch ist das erste Spiel, das hier schreibt – die übrigen docken später an).
|
||||
CREATE TABLE game_scores (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
username VARCHAR(100) NOT NULL,
|
||||
game VARCHAR(50) NOT NULL,
|
||||
deck VARCHAR(100),
|
||||
score INT NOT NULL,
|
||||
moves INT,
|
||||
duration_seconds INT,
|
||||
played_at TIMESTAMP NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX idx_game_scores_user_game ON game_scores (username, game);
|
||||
@@ -0,0 +1,68 @@
|
||||
-- MindMatch-Inhalte in die DB verlagern, damit Admins Decks (Kategorien) und
|
||||
-- Paare jederzeit zur Laufzeit erweitern können (vorher statische JSON-Dateien).
|
||||
|
||||
CREATE TABLE mindmatch_decks (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
slug VARCHAR(100) NOT NULL UNIQUE,
|
||||
title VARCHAR(150) NOT NULL,
|
||||
sort_order INT NOT NULL DEFAULT 0,
|
||||
active BOOLEAN NOT NULL DEFAULT TRUE
|
||||
);
|
||||
|
||||
CREATE TABLE mindmatch_pairs (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
deck_id BIGINT NOT NULL REFERENCES mindmatch_decks (id) ON DELETE CASCADE,
|
||||
term VARCHAR(255) NOT NULL,
|
||||
match_text VARCHAR(255) NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX idx_mindmatch_pairs_deck ON mindmatch_pairs (deck_id);
|
||||
|
||||
-- Seed: die bisherigen 3 Decks plus das neue SQL-Befehle-Deck.
|
||||
INSERT INTO mindmatch_decks (slug, title, sort_order, active) VALUES
|
||||
('netzwerk', 'Netzwerk-Grundlagen', 1, TRUE),
|
||||
('hardware', 'Hardware & Komponenten', 2, TRUE),
|
||||
('it-sicherheit', 'IT-Sicherheit', 3, TRUE),
|
||||
('sql-befehle', 'SQL-Befehle', 4, TRUE);
|
||||
|
||||
INSERT INTO mindmatch_pairs (deck_id, term, match_text)
|
||||
SELECT d.id, v.term, v.match_text
|
||||
FROM mindmatch_decks d
|
||||
JOIN (
|
||||
VALUES
|
||||
('netzwerk', 'DNS', 'Löst Namen in IP-Adressen auf'),
|
||||
('netzwerk', 'DHCP', 'Vergibt IP-Adressen automatisch'),
|
||||
('netzwerk', 'Router', 'Verbindet verschiedene Netze'),
|
||||
('netzwerk', 'Switch', 'Verbindet Geräte im LAN'),
|
||||
('netzwerk', 'Gateway', 'Übergang in ein anderes Netz'),
|
||||
('netzwerk', 'Firewall', 'Filtert den Netzwerkverkehr'),
|
||||
('netzwerk', 'MAC-Adresse', 'Physische Hardware-Adresse'),
|
||||
('netzwerk', 'Subnetzmaske', 'Trennt Netz- und Hostanteil'),
|
||||
|
||||
('hardware', 'CPU', 'Zentrale Recheneinheit'),
|
||||
('hardware', 'RAM', 'Flüchtiger Arbeitsspeicher'),
|
||||
('hardware', 'SSD', 'Schneller Flash-Speicher'),
|
||||
('hardware', 'GPU', 'Grafikprozessor'),
|
||||
('hardware', 'Mainboard', 'Hauptplatine des Rechners'),
|
||||
('hardware', 'BIOS', 'Startet die Hardware'),
|
||||
('hardware', 'Netzteil', 'Wandelt die Netzspannung um'),
|
||||
('hardware', 'Cache', 'Schneller Zwischenspeicher der CPU'),
|
||||
|
||||
('it-sicherheit', 'Phishing', 'Täuschung zum Datenklau'),
|
||||
('it-sicherheit', 'Verschlüsselung', 'Macht Daten unlesbar'),
|
||||
('it-sicherheit', 'Backup', 'Sicherungskopie von Daten'),
|
||||
('it-sicherheit', 'VPN', 'Verschlüsselter Tunnel'),
|
||||
('it-sicherheit', '2FA', 'Zwei-Faktor-Anmeldung'),
|
||||
('it-sicherheit', 'Malware', 'Schädliche Software'),
|
||||
('it-sicherheit', 'Patch', 'Schließt Sicherheitslücken'),
|
||||
('it-sicherheit', 'Brute Force', 'Systematisches Passwortraten'),
|
||||
|
||||
('sql-befehle', 'SELECT', 'Daten abfragen'),
|
||||
('sql-befehle', 'INSERT', 'Datensatz einfügen'),
|
||||
('sql-befehle', 'UPDATE', 'Datensatz ändern'),
|
||||
('sql-befehle', 'DELETE', 'Datensatz löschen'),
|
||||
('sql-befehle', 'WHERE', 'Zeilen filtern'),
|
||||
('sql-befehle', 'JOIN', 'Tabellen verknüpfen'),
|
||||
('sql-befehle', 'GROUP BY', 'Zeilen gruppieren'),
|
||||
('sql-befehle', 'ORDER BY', 'Ergebnis sortieren')
|
||||
) AS v(slug, term, match_text) ON v.slug = d.slug;
|
||||
@@ -0,0 +1,152 @@
|
||||
-- Weitere MindMatch-Decks aus dem Dokument "Memory-Kategorien – Fachinformatiker".
|
||||
-- 5 Themen-Decks + die Oberkategorie "Abkürzungen" als 6 eigene Decks (Deck-Modell ist flach).
|
||||
|
||||
INSERT INTO mindmatch_decks (slug, title, sort_order, active) VALUES
|
||||
('betriebssysteme', 'Betriebssysteme', 5, TRUE),
|
||||
('programmierung', 'Programmierung', 6, TRUE),
|
||||
('webentwicklung', 'Webentwicklung', 7, TRUE),
|
||||
('softwareentwicklung', 'Softwareentwicklung', 8, TRUE),
|
||||
('cloud-devops', 'Cloud & DevOps', 9, TRUE),
|
||||
('abk-netzwerk', 'Abkürzungen: Netzwerk', 10, TRUE),
|
||||
('abk-hardware', 'Abkürzungen: Hardware', 11, TRUE),
|
||||
('abk-programmierung-datenformate','Abkürzungen: Programmierung & Datenformate', 12, TRUE),
|
||||
('abk-web', 'Abkürzungen: Web', 13, TRUE),
|
||||
('abk-it-sicherheit', 'Abkürzungen: IT-Sicherheit', 14, TRUE),
|
||||
('abk-betriebssysteme-devops', 'Abkürzungen: Betriebssysteme & DevOps', 15, TRUE);
|
||||
|
||||
INSERT INTO mindmatch_pairs (deck_id, term, match_text)
|
||||
SELECT d.id, v.term, v.match_text
|
||||
FROM mindmatch_decks d
|
||||
JOIN (
|
||||
VALUES
|
||||
-- Betriebssysteme
|
||||
('betriebssysteme', 'Windows', 'Microsoft'),
|
||||
('betriebssysteme', 'Linux', 'Open Source'),
|
||||
('betriebssysteme', 'Kernel', 'Betriebssystemkern'),
|
||||
('betriebssysteme', 'Prozess', 'Laufendes Programm'),
|
||||
('betriebssysteme', 'Thread', 'Ausführungsstrang'),
|
||||
('betriebssysteme', 'Dateisystem', 'Datenorganisation'),
|
||||
('betriebssysteme', 'NTFS', 'Windows-Dateisystem'),
|
||||
('betriebssysteme', 'ext4', 'Linux-Dateisystem'),
|
||||
('betriebssysteme', 'Shell', 'Kommandozeile'),
|
||||
('betriebssysteme', 'Terminal', 'Konsolenzugriff'),
|
||||
('betriebssysteme', 'Dienst', 'Hintergrundprozess'),
|
||||
('betriebssysteme', 'Rechte', 'Zugriffskontrolle'),
|
||||
|
||||
-- Programmierung
|
||||
('programmierung', 'Variable', 'Speicherplatz'),
|
||||
('programmierung', 'Schleife', 'Wiederholung'),
|
||||
('programmierung', 'Array', 'Feld'),
|
||||
('programmierung', 'Objekt', 'Instanz'),
|
||||
('programmierung', 'Klasse', 'Bauplan'),
|
||||
('programmierung', 'Methode', 'Funktion'),
|
||||
('programmierung', 'Interface', 'Vertrag'),
|
||||
('programmierung', 'Vererbung', 'OOP-Konzept'),
|
||||
('programmierung', 'Exception', 'Fehlerbehandlung'),
|
||||
('programmierung', 'Compiler', 'Übersetzer'),
|
||||
('programmierung', 'Debugger', 'Fehlersuche'),
|
||||
('programmierung', 'Git', 'Versionsverwaltung'),
|
||||
|
||||
-- Webentwicklung
|
||||
('webentwicklung', 'HTML', 'Struktur'),
|
||||
('webentwicklung', 'CSS', 'Gestaltung'),
|
||||
('webentwicklung', 'JavaScript', 'Interaktivität'),
|
||||
('webentwicklung', 'DOM', 'Dokumentenmodell'),
|
||||
('webentwicklung', 'API', 'Programmierschnittstelle'),
|
||||
('webentwicklung', 'JSON', 'Datenaustausch'),
|
||||
('webentwicklung', 'REST', 'Architekturstil'),
|
||||
('webentwicklung', 'HTTP', 'Übertragungsprotokoll'),
|
||||
('webentwicklung', 'Cookie', 'Browserdaten'),
|
||||
('webentwicklung', 'Session', 'Benutzersitzung'),
|
||||
('webentwicklung', 'Backend', 'Serverlogik'),
|
||||
('webentwicklung', 'Frontend', 'Benutzeroberfläche'),
|
||||
|
||||
-- Softwareentwicklung
|
||||
('softwareentwicklung', 'Scrum', 'Agiles Vorgehen'),
|
||||
('softwareentwicklung', 'Sprint', 'Entwicklungszyklus'),
|
||||
('softwareentwicklung', 'Product Owner', 'Produktverantwortung'),
|
||||
('softwareentwicklung', 'Kanban', 'Aufgabenfluss'),
|
||||
('softwareentwicklung', 'UML', 'Modellierung'),
|
||||
('softwareentwicklung', 'Use Case', 'Anwendungsfall'),
|
||||
('softwareentwicklung', 'ER-Modell', 'Datenmodell'),
|
||||
('softwareentwicklung', 'Testfall', 'Prüfung'),
|
||||
('softwareentwicklung', 'CI/CD', 'Automatisierte Auslieferung'),
|
||||
('softwareentwicklung', 'Refactoring', 'Codeverbesserung'),
|
||||
('softwareentwicklung', 'Repository', 'Quellcodeablage'),
|
||||
('softwareentwicklung', 'Merge', 'Zusammenführen'),
|
||||
|
||||
-- Cloud & DevOps
|
||||
('cloud-devops', 'Docker', 'Container'),
|
||||
('cloud-devops', 'Kubernetes', 'Container-Orchestrierung'),
|
||||
('cloud-devops', 'VM', 'Virtuelle Maschine'),
|
||||
('cloud-devops', 'Cloud', 'Ressourcen aus dem Internet'),
|
||||
('cloud-devops', 'Azure', 'Microsoft Cloud'),
|
||||
('cloud-devops', 'AWS', 'Amazon Web Services'),
|
||||
('cloud-devops', 'GitHub', 'Codehosting'),
|
||||
('cloud-devops', 'Jenkins', 'CI-Server'),
|
||||
('cloud-devops', 'Pipeline', 'Automatisierung'),
|
||||
('cloud-devops', 'YAML', 'Konfigurationsdatei'),
|
||||
('cloud-devops', 'Deployment', 'Bereitstellung'),
|
||||
('cloud-devops', 'Monitoring', 'Überwachung'),
|
||||
|
||||
-- Abkürzungen: Netzwerk
|
||||
('abk-netzwerk', 'DNS', 'Domain Name System'),
|
||||
('abk-netzwerk', 'DHCP', 'Dynamic Host Configuration Protocol'),
|
||||
('abk-netzwerk', 'IP', 'Internet Protocol'),
|
||||
('abk-netzwerk', 'TCP', 'Transmission Control Protocol'),
|
||||
('abk-netzwerk', 'UDP', 'User Datagram Protocol'),
|
||||
('abk-netzwerk', 'FTP', 'File Transfer Protocol'),
|
||||
('abk-netzwerk', 'SSH', 'Secure Shell'),
|
||||
('abk-netzwerk', 'VPN', 'Virtual Private Network'),
|
||||
|
||||
-- Abkürzungen: Hardware
|
||||
('abk-hardware', 'CPU', 'Central Processing Unit'),
|
||||
('abk-hardware', 'GPU', 'Graphics Processing Unit'),
|
||||
('abk-hardware', 'RAM', 'Random Access Memory'),
|
||||
('abk-hardware', 'ROM', 'Read Only Memory'),
|
||||
('abk-hardware', 'SSD', 'Solid State Drive'),
|
||||
('abk-hardware', 'HDD', 'Hard Disk Drive'),
|
||||
('abk-hardware', 'PSU', 'Power Supply Unit'),
|
||||
('abk-hardware', 'BIOS', 'Basic Input/Output System'),
|
||||
('abk-hardware', 'UEFI', 'Unified Extensible Firmware Interface'),
|
||||
('abk-hardware', 'PCIe', 'Peripheral Component Interconnect Express'),
|
||||
|
||||
-- Abkürzungen: Programmierung & Datenformate
|
||||
('abk-programmierung-datenformate', 'SQL', 'Structured Query Language'),
|
||||
('abk-programmierung-datenformate', 'IDE', 'Integrated Development Environment'),
|
||||
('abk-programmierung-datenformate', 'SDK', 'Software Development Kit'),
|
||||
('abk-programmierung-datenformate', 'OOP', 'Object Oriented Programming'),
|
||||
('abk-programmierung-datenformate', 'CRUD', 'Create Read Update Delete'),
|
||||
('abk-programmierung-datenformate', 'MVC', 'Model View Controller'),
|
||||
('abk-programmierung-datenformate', 'ORM', 'Object Relational Mapping'),
|
||||
('abk-programmierung-datenformate', 'XML', 'Extensible Markup Language'),
|
||||
|
||||
-- Abkürzungen: Web
|
||||
('abk-web', 'URL', 'Uniform Resource Locator'),
|
||||
('abk-web', 'URI', 'Uniform Resource Identifier'),
|
||||
('abk-web', 'CDN', 'Content Delivery Network'),
|
||||
('abk-web', 'SOAP', 'Simple Object Access Protocol'),
|
||||
('abk-web', 'JWT', 'JSON Web Token'),
|
||||
('abk-web', 'CORS', 'Cross Origin Resource Sharing'),
|
||||
|
||||
-- Abkürzungen: IT-Sicherheit
|
||||
('abk-it-sicherheit', 'MFA', 'Multi Factor Authentication'),
|
||||
('abk-it-sicherheit', '2FA', 'Two Factor Authentication'),
|
||||
('abk-it-sicherheit', 'TLS', 'Transport Layer Security'),
|
||||
('abk-it-sicherheit', 'AES', 'Advanced Encryption Standard'),
|
||||
('abk-it-sicherheit', 'RSA', 'Rivest Shamir Adleman'),
|
||||
('abk-it-sicherheit', 'PKI', 'Public Key Infrastructure'),
|
||||
('abk-it-sicherheit', 'IDS', 'Intrusion Detection System'),
|
||||
('abk-it-sicherheit', 'IPS', 'Intrusion Prevention System'),
|
||||
('abk-it-sicherheit', 'SIEM', 'Security Information and Event Management'),
|
||||
('abk-it-sicherheit', 'CVE', 'Common Vulnerabilities and Exposures'),
|
||||
|
||||
-- Abkürzungen: Betriebssysteme & DevOps
|
||||
('abk-betriebssysteme-devops', 'CLI', 'Command Line Interface'),
|
||||
('abk-betriebssysteme-devops', 'GUI', 'Graphical User Interface'),
|
||||
('abk-betriebssysteme-devops', 'VM', 'Virtual Machine'),
|
||||
('abk-betriebssysteme-devops', 'CI', 'Continuous Integration'),
|
||||
('abk-betriebssysteme-devops', 'CD', 'Continuous Delivery'),
|
||||
('abk-betriebssysteme-devops', 'LTS', 'Long Term Support'),
|
||||
('abk-betriebssysteme-devops', 'FQDN', 'Fully Qualified Domain Name')
|
||||
) AS v(slug, term, match_text) ON v.slug = d.slug;
|
||||
@@ -0,0 +1,30 @@
|
||||
-- TechTacular: IT-Quizduell im Jeopardy-Stil. Inhalte DB-basiert und Admin-pflegbar.
|
||||
-- Kategorie -> Fragen -> Antworten (genau eine korrekt). Gefüllt wird per Seeder
|
||||
-- aus den vorhandenen FinalFlux-Fragenkatalogen (siehe TechtacularSeeder).
|
||||
|
||||
CREATE TABLE techtacular_categories (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
slug VARCHAR(150) NOT NULL UNIQUE,
|
||||
title VARCHAR(200) NOT NULL,
|
||||
sort_order INT NOT NULL DEFAULT 0,
|
||||
active BOOLEAN NOT NULL DEFAULT TRUE
|
||||
);
|
||||
|
||||
CREATE TABLE techtacular_questions (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
category_id BIGINT NOT NULL REFERENCES techtacular_categories (id) ON DELETE CASCADE,
|
||||
question_text VARCHAR(1000) NOT NULL,
|
||||
explanation VARCHAR(1000),
|
||||
points INT NOT NULL DEFAULT 100
|
||||
);
|
||||
|
||||
CREATE TABLE techtacular_answers (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
question_id BIGINT NOT NULL REFERENCES techtacular_questions (id) ON DELETE CASCADE,
|
||||
answer_text VARCHAR(500) NOT NULL,
|
||||
correct BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
sort_order INT NOT NULL DEFAULT 0
|
||||
);
|
||||
|
||||
CREATE INDEX idx_techtacular_questions_cat ON techtacular_questions (category_id);
|
||||
CREATE INDEX idx_techtacular_answers_q ON techtacular_answers (question_id);
|
||||
@@ -0,0 +1,4 @@
|
||||
-- Umstellung auf das echte Jeopardy-Format (umgekehrt) mit kuratierten Inhalten.
|
||||
-- Der bisherige (templatehafte) FinalFlux-Import wird geleert; der TechtacularSeeder
|
||||
-- befüllt anschließend neu aus techtacular/content.json.
|
||||
TRUNCATE TABLE techtacular_categories RESTART IDENTITY CASCADE;
|
||||
Reference in New Issue
Block a user