|
|
# 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-<unixzeit>.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.
|