Entwicklung und Referenz¶
Dokumentierter Stand:
mainbei Commitf7fe401caa7891ad8aa64ae57dfbf678bde1781fvom 21. Juli 2026. Einzelne Details können durch spätere Änderungen überholt sein.
Bauen und testen¶
Voraussetzungen¶
| Werkzeug | Version / Rolle |
|---|---|
| Node.js | mindestens 24 |
| npm | Installation und Skripte |
| JDK | 21 für native Android-Builds |
| Android SDK | API 36 |
| Python | nur für diese Dokumentations-Site |
Webentwicklung¶
Vite lauscht standardmäßig unter http://localhost:5173 und wegen --host 0.0.0.0 auch im
lokalen Netzwerk.
Prüfungen¶
Android¶
Unter Windows kann das vorhandene Skript verwendet werden:
Abhängigkeiten unter Windows gesperrt¶
Wenn npm ci mit EPERM ... unlink ... .node scheitert, läuft meistens noch ein Node-/Vite-
Prozess. Erst alle Node-Prozesse beenden, danach node_modules löschen und npm ci erneut
starten.
Quellen¶
Dokumentation pflegen¶
Grundprinzip¶
Die Markdown-Dateien sind die Quelle. Quellcode-Links zeigen bewusst auf den dokumentierten Commit, damit alte Dokumentationsstände reproduzierbar bleiben.
Wann welche Seite aktualisiert werden muss¶
| Codeänderung | Dokumentationsseite |
|---|---|
| neuer Store oder Persistenzpfad | Datenmodell, Systemarchitektur |
| neuer Feldtyp oder Zielmodus | Bereich/Feld/Typ/Wert |
Änderung an VERSIONED_PROPERTIES |
Versionierung |
| neue Eventart | Dynamische Ereignisse, Analytics |
Änderung an RADAR_SCORE_CONFIG oder Formeln |
Lebensrad |
| neue Explorer-Aggregation | Analytics-Pipeline |
| neue Korrelation | Explorer und Korrelationen |
| neue native Sicherheitsgrenze | Sicherheit |
| neuer Companion-Provider | AI Companion |
Aktualisierungsablauf¶
- aktuellen
main-Commit notieren, - Quellenlinks auf diesen Commit setzen,
- betroffene Diagramme und Tabellen ändern,
- interne Links prüfen,
- Markdown in GitHub kontrollieren.
Mermaid-Diagramme¶
Diagramme bleiben als Text im Markdown und können dadurch gemeinsam mit dem Code reviewed werden. Keine binären Diagrammdateien erforderlich.
Formeln¶
Formeln verwenden LaTeX/MathJax-Syntax. Variablennamen sollten unmittelbar unter der Formel erklärt werden; Nachvollziehbarkeit ist wichtiger als reine mathematische Eleganz.
Quellcode-Landkarte¶
Alle Links sind auf Commit f7fe401c fixiert.
Begriffe¶
| Begriff | Bedeutung in Steady |
|---|---|
| Bereich / Section | sichtbare Gruppe von Feldern im Tages-Check-in |
| Feld | Definition eines einzelnen täglichen Werts |
| Feldversion | konkrete historische Ausprägung eines Felds |
logicalId |
gemeinsame fachliche Identität mehrerer Feldversionen |
| Entry | ein Tagesdatensatz mit sparse Feldwerten |
| Event | wiederholbares Ereignis an einem Datum |
| Catalog Item | wiederverwendbare Person, Sportart, Mahlzeit oder Trigger |
| Evidenz | wie stark ein Signal zum aktuellen Analysebild beiträgt |
| Qualität | wie günstig ein Signal gemäß Zielrichtung bewertet wird |
| Momentum | sättigende Funktion der aktuellen, zeitgewichteten Evidenz |
| Lebensrad | kompakter 0–100-Überblick mehrerer konfigurierbarer Achsen |
| Aggregation | Zusammenfassung nach Tag, Woche, Monat, Quartal oder Jahr |
| Spearman-ρ | Korrelation der Ränge zweier Messreihen |
| Recovery-Profil | ausgewählte Veränderungsbereiche und optionale Programmkontexte |
| Counter | aus Start-/Resetzeitpunkten berechneter laufender Zeitraum |
| Sparse | nur tatsächlich vorhandene Werte werden gespeichert |
| Atomar | mehrere Änderungen werden vollständig gemeinsam oder gar nicht gespeichert |
Grenzen und offene Punkte¶
Aktuelle Grenzen der Feld-/Achsen-Zuordnung¶
- Lebensrad-Achsen sind konfigurierbar.
- Gruppen können jeweils genau einer Achse zugeordnet werden.
- Felder erben die Achse ihrer Gruppe.
- Ein Feld kann nicht gleichzeitig gewichtet zu mehreren Achsen beitragen.
- Feldgewichte sind nicht frei konfigurierbar.
- Ein Feld mit
goal: neutralliefert keinen Lebensrad-Beitrag. - Auswahl- und Textfelder fließen nicht automatisch in das Lebensrad ein.
Analytische Grenzen¶
- Lebensradparameter sind global im Code festgelegt, nicht in der UI.
- Die vordefinierten Korrelationen decken nur ausgewählte Beziehungen ab.
- Korrelationen sind beobachtend und nicht kausal.
- Häufiges Tracking beeinflusst Momentum; die Interpretation muss deshalb immer die Datenabdeckung berücksichtigen.
- Ein Score ist eine Produktmetrik und keine klinisch validierte Kennzahl.
Architektonische Grenzen¶
App.jsxträgt weiterhin viel Orchestrierungslogik.- Statistiken werden im Frontend berechnet.
- Browser und Android verwenden verschiedene Persistenzadapter.
- Es gibt keinen Server, keine Synchronisierung und keine Mehrgeräteauflösung.
Nächste saubere Ausbaustufe¶
Eine mögliche Weiterentwicklung wäre eine versionierte Feldzuordnung wie:
{
"radar": {
"links": [
{ "axis": "regulation", "weight": 0.7 },
{ "axis": "connection", "weight": 0.3 }
],
"mode": "goal"
}
}
Das würde Feld- statt Gruppenzuordnung ermöglichen, müsste aber gemeinsam in Feldeditor, Versionierung, Konfigurationsimport, Validierung und Radar-Engine umgesetzt werden.