SE-TINF22B2 / G5-DuoGradus

Sammle Schritte, Tritt gegen Freunde an und steig in deiner Liga auf!
https://docs.duo-gradus.de
Apache License 2.0
3 stars 1 forks source link

Austauschformat für Drittanbieter-Daten #139

Closed henrybrink closed 4 months ago

henrybrink commented 5 months ago

Die Daten von Drittanbietern sollen über eine Standardtisierte Schnittstelle geladen werden, sodass es aus Anwendungssicht einfach ist den Anbieter auszutauschen.

Abhängig davon wie viele Anbieter für die initiale Integration herangezogen werden sollen ist es ausreichend dieses Austauschformat an den Daten des ersten Anbieters zu orientieren.

Es ist empfehlenswert, dieses Format so zu wählen, dass möglichst wenig Informationen über die Aktivitäten enthalten sind, damit die Drittanbieter so austauschbar wie möglich bleiben können.

Zudem ist es aus der Datenschutzperspektive empfehlenswert nicht zu viele Informationen über eine Aktivität zu speichern. Attribute wie z.B. der Ort sind beispielsweise als eine Angabe (z.B. "Karlsruhe" als nächste Stadt) ausreichend (sofern es möglich ist an diese Informationen leicht zu kommen).

Mindestens vorhanden sein sollten:

Wichtig: Neben den Aktivitäten müssen auch noch die Daten zu den Schritten ausgetauscht werden.

Die Idee dafür ist folgende: Schritte werden pro Tag protokolliert (eventuell auch per Stunde, allerdings würde dies die Implementierung erschweren und keinen großen Vorteil bringen. Die Tagesschritte werden bei der Synchronisation mit dem aktuellen Wert überschrieben.

henrybrink commented 5 months ago

Auf der Basis des Datenschemas von FitBit habe ich folgendes Daten-Format vorzuschlagen:

Screenshot 2024-04-29 at 16 23 39

Beispiel-Daten in JSON (Austauschformat muss nicht unbedingt als JSON serialisiert werden, dass dient nur der Veranschaulichung):

{
  "dataSource": "fitbit",
  "syncDate": "2024-04-29T16:17:000S",
  "owner": "867ad0ae-597d-448e-924c-f8369298115e",
  "activities": [
    {
      "type": "bicycle",
      "start": "2024-04-29T12:00:000S",
      "end": "2024-04-29T14:00:000S",
      "steps": 0,
      "elevation": 195,
      "reporting": "tracked"
    },
    {
      "type": "walk",
      "start": "2024-04-29T15:00:000S",
      "end": "2024-04-29T16:00:000S",
      "steps": 5215,
      "elevation": 231,
      "reporting": "auto"
    }
  ],
  "goals": [
    {
      "type": "steps",
      "goal": 10000,
      "value":  7612,
      "unit": "N/A"
    }
  ]
}

Das Datenformat ist an dem orientiert was uns FitBit liefert, wir können es stellenweise noch erweitern, aber ich empfehle zunächst so wenig Daten wie möglich aufzurufen.

Ich werde gleich noch die Komponente weiter beschreiben um zu zeigen, wie man diese Daten dann abrufen kann.

henrybrink commented 5 months ago

@benedictweis @OG-NI

benedictweis commented 5 months ago

Klingt Schlüssig, wir werden aber keine Aktivität "Radfahren" anbieten oder? Also es geht nur um "Gehen", "Laufen", etc.

henrybrink commented 4 months ago

Mit Anpassungen umgesetzt (bereits gemerged)