Przejdź do głównej zawartości

Synchronizacja (Duo)

W trybie chmurowym plan należy do gospodarstwa domowego, a użytkownicy są z nim powiązani. Druga osoba dołącza kodem zaproszenia.

Model współdzielenia

  • Jedno gospodarstwo = wspólny stan (jsonb).
  • Członkowie powiązani przez tabelę członkostwa.
  • Dostęp egzekwowany przez Row Level Security — tylko członek widzi i zmienia stan swojego gospodarstwa.
  • Stan jest szyfrowany end-to-end; klucz szyfrujący gospodarstwa jest udostępniany zaproszonemu partnerowi przez wymianę kluczy, więc ani my, ani osoby trzecie nie odczytają danych.

Zapis ze scalaniem

Stan zapisywany jest w całości, z optymistyczną kontrolą współbieżności:

  1. Aplikacja zapamiętuje znacznik updated_at ostatnio pobranego stanu.
  2. Przy zapisie wysyła ten znacznik. Jeśli ktoś zapisał w międzyczasie, znaczniki się rozjadą → wykryty konflikt.
  3. Wtedy aplikacja pobiera świeży stan i scala: mapy kluczowane miesiącem (wpisy, snapshoty) są łączone, a pozostałe pola bierze nowsza strona wg updated_at. Dzięki temu „dwie osoby uzupełniają różne miesiące" nie gubi danych.

Pobieranie i odświeżanie

Stan pobierany jest po wejściu do gospodarstwa oraz przy powrocie do karty/okna, co utrzymuje obie osoby w synchronizacji.

Opuszczenie i usunięcie

  • Opuść gospodarstwo — cofa dostęp temu kontu; gdy wychodzi ostatni członek, gospodarstwo (wraz ze stanem) jest usuwane, by nie zostawiać osieroconych danych.
  • Usuń konto — kasuje gospodarstwa, w których jesteś jedynym członkiem (RODO).