diff --git a/apps/api/src/db/migrations/0004_wordeck_text_only.sql b/apps/api/src/db/migrations/0004_wordeck_text_only.sql new file mode 100644 index 0000000..24e121f --- /dev/null +++ b/apps/api/src/db/migrations/0004_wordeck_text_only.sql @@ -0,0 +1,52 @@ +-- Wordeck-Rebrand: Text-Only-Architektur (CardType-Cutoff). +-- +-- Mit dem Brand-Wechsel von Cards zu Wordeck (siehe +-- mana/docs/playbooks/WORDECK_REBRAND.md) entfallen die CardTypes +-- `image-occlusion` und `audio` ersatzlos. Wordeck speichert nur Worte. +-- +-- Vor-Audit gegen prod am 2026-05-17: +-- SELECT type, COUNT(*) FROM cards.cards GROUP BY type; +-- basic 123 +-- cloze 44 +-- multiple-choice 19 +-- basic-reverse 0 (keine in der DB — alle Marketplace-Decks) +-- type-in 0 +-- image-occlusion 0 ← Cutoff ist trivial +-- audio 0 ← Cutoff ist trivial +-- SELECT COUNT(*) FROM cards.media_files; → 0 +-- +-- Diese Migration ist deshalb defensiv: löscht eventuelle Karten der +-- gestrichenen Typen, fügt einen CHECK-Constraint hinzu und entfernt +-- die ungenutzte media_files-Tabelle + media_refs-Spalte. +-- +-- Idempotent geschrieben (IF EXISTS / DO-Blocks), damit Re-Runs +-- harmlos sind. + +-- 1. Verbleibende Karten der gestrichenen Typen löschen +-- (sollte nach Audit 0 betreffen). +DELETE FROM "cards"."cards" WHERE "type" IN ('image-occlusion', 'audio'); + +-- 2. CHECK-Constraint für erlaubte CardTypes. +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'cards_type_check' + ) THEN + ALTER TABLE "cards"."cards" + ADD CONSTRAINT "cards_type_check" + CHECK ("type" IN ('basic', 'basic-reverse', 'cloze', 'type-in', 'multiple-choice')); + END IF; +END$$; + +-- 3. media_refs-Spalte aus cards droppen (war nie produktiv genutzt). +ALTER TABLE "cards"."cards" DROP COLUMN IF EXISTS "media_refs"; + +-- 4. media_files-Tabelle droppen. +DROP TABLE IF EXISTS "cards"."media_files"; + +-- 5. Optional: Wenn fields ein image_ref-Key enthält, säubern. +-- (Image-Occlusion-Karten sind oben schon gelöscht — das ist ein +-- Defense-in-Depth-Schritt für falsch annotierte basic-Karten.) +UPDATE "cards"."cards" + SET "fields" = "fields" - 'image_ref' - 'mask_regions' + WHERE "fields" ?| array['image_ref', 'mask_regions']; diff --git a/apps/web/src/routes/privacy/+page.svelte b/apps/web/src/routes/privacy/+page.svelte index 9bc1f29..a6344e9 100644 --- a/apps/web/src/routes/privacy/+page.svelte +++ b/apps/web/src/routes/privacy/+page.svelte @@ -1,14 +1,15 @@ - Datenschutz — Cardecky - + Datenschutz — Wordeck +

Datenschutz

- Cardecky ist die Karteikarten-App des Vereins mana e.V. (in Gründung, - Sitz Schweiz). Wir hosten die Daten selbst, sammeln nur was wir für den Betrieb brauchen, und + Wordeck ist die text-first Lernkarten-App des Vereins mana e.V. (in + Gründung, Sitz Schweiz). Wir speichern nur Worte — keine Bilder, kein + Audio. Wir hosten die Daten selbst, sammeln nur was wir für den Betrieb brauchen, und geben nichts an Dritte weiter, die nicht in dieser Erklärung genannt sind.

@@ -25,8 +26,8 @@ Login-Zeitpunkte. Über auth.mana.how (mana-auth-Service).
  • - Inhalte: Decks, Karten, Tags, Hashtags, Bilder/Audio, die du selbst - erstellst. + Inhalte: Decks, Karten, Tags, Hashtags, die du selbst erstellst — + alles als Text (Markdown). Wordeck speichert keine Bilder und kein Audio.
  • Lernfortschritt: FSRS-Zustand pro Karte (next-due, stability, @@ -40,6 +41,10 @@

    Was wir NICHT machen