feature/aufgaben-kopieren #19

Merged
ingo merged 3 commits from feature/aufgaben-kopieren into master 2026-06-03 13:20:31 +02:00
Owner
No description provided.
Zentrale Master-Bibliothek für Aufgaben und Gruppen mit Copy-on-Write-
Semantik: Beim Import in eine Vorlage entsteht ein Snapshot-Link
(source_type=linked); beim ersten Bearbeiten wird er automatisch zum
Fork (source_type=forked) — ohne expliziten Trenn-Schritt.

Backend:
- Migration 0033: library_tasks, library_task_groups, library_group_tasks;
  source_type + master_id auf tasks und task_groups
- Models: LibraryTask, LibraryTaskGroup, LibraryGroupTask
- Service: CRUD, mandantengebunden via resolve_app_admin_id, atomarer
  Gruppen-Import, Namens-Dedup (Suffix "(2)"), Regel-Reset-Tracking,
  Löschen-Guard (nur wenn keine linked-Kopien)
- Router /api/v1/admin/library/ (9 Endpunkte) + import/{rallye_id}
- Fork-Trigger in update_task_for_rallye: linked → forked beim ersten PATCH
- 21 Integrationstests (CRUD, Mandanten-Isolation, Import, Fork-Trigger,
  Löschen-Guard, native/linked/forked-Zustandsübergänge)

Frontend:
- AdminLibrary.tsx: neue Seite mit Aufgaben- und Gruppen-Tab, CRUD-Dialoge
- TaskImportDialog: neuer Tab "Aus Bibliothek" mit Gruppen-Aufklapp und
  Snackbar für zurückgesetzte Sichtbarkeitsregeln
- TaskListItem: 📚/🔀-Badges für linked/forked
- AdminTaskEditor: Status-Chip im Header (linked/forked)
- Sidebar-Eintrag "Bibliothek" + Route /admin/library
- API-Client admin_library.ts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Beim Löschen einer Vorlage oder eines Laufs muss jetzt eine zufällig
generierte zweistellige Zahl eingegeben werden statt des vollen Namens.
Schneller zu tippen, verhindert aber trotzdem unbeabsichtigtes Löschen.
Aufgaben werden über das bestehende ON DELETE CASCADE bereits mitentfernt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Vorlage und Instanz werden jetzt per Name geprüft bevor deserialize_rallye
aufgerufen wird. Seeding läuft nur wenn beide fehlen (wirklich leere DB).
Wurde die Vorlage manuell gelöscht, bleibt sie nach einem Restart gelöscht.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ingo merged commit f0823e76b8 into master 2026-06-03 13:20:31 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Projekte/TeamRallye!19
No description provided.