Pastro in Diagrammen
Acht Ansichten auf dasselbe System, von der Gesamtkarte bis zu den Stellen, deren Zusammenspiel
man aus keiner einzelnen Datei sieht. Jede Ansicht ist eine eigenständige HTML-Datei: anklickbar,
mit hellem und dunklem Schema, Fokus, Pfadverfolgung und Export.
Quelle ist jeweils die .json in quellen/. Die HTML-Dateien werden daraus erzeugt und liegen mit im Repo, weil die Diagramm-Site sie direkt ausliefert.
01
Pastro im Überblick Architektur
Was gehört überhaupt zum System und wer redet mit wem?
Ein Client, vier Cloud Functions, Appwrite als Plattform, Mistral, Buy Me a Coffee und Umami von außen.
Der Client ruft drei der vier Functions selbst auf; support wird nur vom Webhook angestoßen.
Jede Execution bekommt einen dynamischen API-Key, es liegt keiner fest hinterlegt.
Client und Offline KI-Funktionen Konto und Haushalt Unterstützung Alles zusammen
Hier einbetten
02
Offline-Schreibweg Lifecycle
Was passiert mit einer Änderung, wenn gerade kein Netz da ist?
Direkt an Appwrite geht nur, was mit Netz und leerer Warteschlange geschrieben wird.
Netzfehler, 401, 408, 429 und 5xx kommen an den Anfang der Schlange zurück, ein endgültiges 4xx wird verworfen.
Abgearbeitet wird bei online, Sichtbarkeitswechsel, App-Start und neuem Eintrag.
Hier einbetten
03
Bon und Sprachaufnahme werden Vorrat Datenfluss
Wie wird aus einem Foto oder einem gesprochenen Satz ein Eintrag im Vorrat?
Eine Function bedient Bon, PDF und Sprache, je mit eigenem Prompt.
OCR beziehungsweise Voxtral erzeugen Text, das Textmodell daraus TOON-Zeilen.
groceries und purchases entstehen in einer Transaktion, sonst bleibt kein halber Bon liegen.
Hier einbetten
04
Eine Rezeptanfrage im Chat Ablauf
Was läuft zwischen dem Absenden im Composer und den Karten im Chat?
Der Client legt die Anfrage-Row an, die Function schreibt die Rezepte.
Vor dem Modell stehen Team-Prüfung und Reservierung im Wochenlimit.
Abbrechen heißt: Anfrage-Row löschen, dann verwirft Appwrite die ganze Transaktion.
Hier einbetten
05
Das KI-Wochenlimit Lifecycle
Wie wird verhindert, dass die KI-Kosten davonlaufen?
Der Zähler geht hoch, bevor Mistral läuft, in einem atomaren Schritt.
Zwei Zähler: der sichtbare für den Haushalt, ein stiller Riegel für die Person.
Zurück geht ein Platz nur, wenn kein Modelllauf zustande kam: 503, fehlende Anfrage-Row, leerer Vorrat.
Hier einbetten
06
Einwilligung und Widerruf Lifecycle
Woran lässt sich belegen, dass jemand in die KI-Verarbeitung eingewilligt hat?
Erst schreibt die Function den Nachweis in consent_logs, dann erst gehen die Prefs raus.
Scheitert sie, bleibt alles wie es war: ohne Nachweis keine Einwilligung.
KI-Verarbeitung und Gesundheitsdaten zählen getrennt, mit vier Zeitstempeln.
Hier einbetten
07
Einladung annehmen und Haushalt wechseln Ablauf
Was verliert jemand, der einer Einladung folgt?
Wer allein in seinem Haushalt war, verliert ihn beim Wechsel unwiderruflich.
Deshalb wird die Einladung erst nach einer ausdrücklichen Bestätigung angenommen.
Erst austreten, dann umstellen: scheitert die Function, bleibt team_id beim alten Haushalt.
Hier einbetten
08
Konto löschen und Haushalt verlassen Ablauf
Was passiert wirklich, wenn jemand sein Konto löscht?
Ohne gestempelten Einwilligungsnachweis wird gar nichts gelöscht.
Die Teams kommen aus den Mitgliedschaften, nicht aus den Prefs.
Letztes bestätigtes Mitglied: alle Zeilen aus acht Tabellen und das Team selbst sind weg.
Hier einbetten
Fehlt eine HTML-Datei oder hat sich der Code geändert, wird sie aus ihrer Quelle
in quellen/ neu erzeugt:
node ~/.claude/skills/archify/bin/archify.mjs deliver <typ> \
docs/diagrams/quellen/<name>.json docs/diagrams/<name>.html --quality showcase
Neben dieser Seite liegen nur die acht Diagramme. quellen/ hält die
JSON-Dateien, aus denen sie entstehen, pruefung/ die Screenshots und
Protokolle der letzten Prüfung.
Welche Dateien zu welchem Diagramm gehören, steht in CLAUDE.md, Abschnitt 0.
Ein Diagramm, das nicht mehr zum Code passt, gehört gelöscht statt stehen gelassen.