# Datenformat Mawari speichert alles in einer JSON-Datei: ``` ~/Library/Application Support/Mawari/ ├── daten.json aktueller Stand, wird nach jeder Änderung (300 ms verzögert) atomar geschrieben └── Sicherungen/ ├── daten-YYYY-MM-DD.json eine Kopie pro Tag beim Start, die letzten 60 bleiben └── vor-import-.json Stand vor jedem Import ``` Das Format ist identisch mit `leben-und-dienst.json` aus dem früheren HTML-Tool. Dateien lassen sich in beide Richtungen austauschen (*Ablage › Sicherung speichern / laden*). ## Aufbau ```json { "app": "leben-und-dienst-uebersicht", "version": 1, "updated": "2026-10-22T11:00:00Z", "tasks": [ { "id": "vorsitz", "name": "Vorsitz", "group": "diener", "withPartner": false }, { "id": "gespraeche", "name": "Gespräche beginnen", "group": "schulung", "withPartner": true }, { "id": "partner", "name": "Partner", "group": "schulung", "withPartner": false, "isPartner": true } ], "persons": [ { "id": "p1a2b3c4d", "name": "Max Muster", "gender": "", "note": "", "tasks": ["gebet", "bibellesung"] } ], "entries": [ { "id": "e5f6a7b8c", "date": "2026-10-16", "task": "gespraeche", "person": "p1a2b3c4d", "partner": "p9z8y7x6w", "note": "" } ] } ``` | Feld | Bedeutung | |---|---| | `tasks[].group` | `diener` (Aufgaben für Ernannte) oder `schulung` | | `tasks[].withPartner` | Eintrag hat ein Partner-Feld | | `tasks[].isPartner` | Sonderspalte „Partner“: zeigt, wann jemand zuletzt **als Partner** dabei war (wird aus `entries[].partner` berechnet, nicht direkt eingetragen) | | `persons[].tasks` | Aufgaben, für die die Person freigegeben ist. Nicht freigegeben = „–“ in der Übersicht | | `entries[].date` | `YYYY-MM-DD`; Datum in der Zukunft wird als „geplant“ angezeigt | ## Toleranz beim Laden Fehlende Felder werden mit Standardwerten ergänzt. Fehlt `tasks` oder ist die Liste leer, gelten die 15 Standardaufgaben aus `Database.defaultTasks` (`App/Sources/Model.swift`). Pflicht sind nur `persons` und `entries`. Wird eine Person gelöscht, verschwinden ihre Einträge; wo sie Partner war, wird das Feld geleert.