Pazy Flow · warstwa poza recepcją
Zegarek i widgety pokazują jedną rzecz: ile brakuje.
Na nadgarstku i na ekranie blokady nie ma miejsca na kalendarz. Jest miejsce na jedną liczbę wobec celu, cztery stanowiska i to, kto właśnie się spóźnia. Wszystkie makiety poniżej stoją w tej samej chwili: wtorek, 21.07.2026, 14:37, lokal Pazur Wrzeszcz.
- Chwila odniesienia
- wt., 21.07.2026 · 14:37
- Utarg wobec celu
- 1 480 / 2 800 zł · 53%
- Obłożenie stanowisk
- 82% · próg premii 85%
- Pole ekranu zegarka
- 208 × 256 pt
- Obszar treści
- 184 × 216 pt
01 Apple Watch
Kontrola sali, nie kartoteka.
Zegarek odpowiada na cztery pytania: kto jest na sali, kto następny, ile mamy utargu wobec celu i co się właśnie psuje. Kart klientek tu nie ma i nie będzie - do czytania historii jest telefon. Tło zawsze pełna czerń, bo panel jest OLED-owy i czerń nie kosztuje energii.
1.1 Ekrany aplikacji
5 ekranów w karuzeli + 1 stan kontekstowy · 208 × 256 pt
Sala · Wrzeszcz
- ST-1Patrycja N.+12 min
- ST-2Karolina Z.-53 min
- PED-1WOLNEod 14:30
- ST-4NIEOBSADZONEpotencjał 1 360 zł
Obłożenie82% / cel 85%
Następni
- 14:30 Patrycja N. Hybryda uzup. Spóźnienie
- 15:45 Monika L. Uzup. żelu Potwierdzona
- 16:15 Iga S. Hybryda uzup. Potwierdzona
Nic więcej dziś po 17:453 z 5
Utarg dnia
53% celu
Alerty · 3
Szybkie akcje
Stan kontekstowy · wizyta w toku
Poza karuzelą. Wchodzi automatycznie, gdy trwa wizyta, i znika po jej zamknięciu.
W toku · ST-2
Karolina Z.
HYB-N + zdobienia ×2 · Ola
Hierarchia danych · co dostaje największy glif
Na zegarku wygrywa liczba, którą porównujesz z czymś, co masz w głowie. Na W2 to godzina, bo w głowie masz „która jest teraz". Na W3 to kwota, bo w głowie masz cel dnia. Nazwisko klientki nigdy nie jest największe - skracamy je do imienia i pierwszej litery nazwiska (Karolina Z.), bo na 184 px pełne nazwisko zjada linię i nic za to nie daje.
Kolor niesie stan, nie ozdobę: bursztyn to spóźnienie, cyjan to wizyta w toku, zieleń to wolne, szary to nieobsadzone. Ten sam zestaw co w konsoli i w widgetach, żeby nie trzeba było uczyć się drugiego alfabetu.
Odświeżanie · aplikacja na zegarku
Aplikacja odświeża się z telefonu przez WCSession przy każdym otwarciu i dodatkowo w tle co 15 minut w oknie 8:00-20:00. Poza godzinami otwarcia nie budzimy się w ogóle.
Wyjątki, które mają wywołać natychmiastowy transfer: odbicie przyjścia, zamknięcie wizyty, przekroczenie 10 minut spóźnienia, powstanie wolnego okna dłuższego niż 45 minut. Licznik wizyty na W6 liczymy lokalnie z pary start i planowany koniec, więc nie potrzebuje ani jednego zapytania na minutę.
1.2 Tarcze z komplikacjami Pazy
3 style · Infograph · Modular Duo · X-Large
14:37
14:30PATRYCJA N.
Hybryda uzup. · ST-1 · 170 zł
1 480
zł z 2 800
1 480
zł · 53% celu
prognoza 2 253 zł
Decyzja · dlaczego trzy różne tarcze
Recepcja nosi Infograph, bo potrzebuje czterech rzeczy naraz i telefonu pod kciukiem. Manager nosi Modular Duo, bo pracuje kolejką i chce widzieć nazwisko następnej klientki bez podnoszenia ręki. Właścicielka nosi X-Large, bo do niej należy jedna liczba i jeden procent - reszta to praca kogoś innego.
Odświeżanie · tarcza
Budżet komplikacji dzielimy tak: 4 wpisy osi czasu na godzinę w oknie 8:00-20:00, plus jeden wpis o 7:45 z celem dnia i jeden o 20:05 z wynikiem. Oś budujemy do najbliższej zmiany stanu (koniec wizyty, początek wizyty, przekroczenie progu spóźnienia), nie co równą minutę - .after(nextBoundary) zamiast .atEnd.
1.3 Rodziny komplikacji
5 rodzin · rozmiary rzeczywiste
14:30 PATRYCJA N. SPÓŹNIENIE 12 MIN · ST-1 NIE DOTARŁA · ST-1
Hybryda uzup. · ST-1 · zaliczka 60 zł
Stan alarmowy · jedna reguła dla pięciu rodzin
Komplikacja nigdy nie dokłada ikony ostrzeżenia - zmienia akcent. Spóźnienie przestawia go na bursztyn, no-show na czerwień, a rodzina prostokątna dodatkowo podmienia pierwszą linię na SPÓŹNIENIE 12 MIN · ST-1. Dzięki temu na tarczy nie ma nowego elementu, tylko inny kolor tej samej liczby, i nie trzeba przeprojektowywać układu pod stan wyjątkowy.
Odświeżanie · komplikacje
Jedna oś czasu dla wszystkich pięciu rodzin, ten sam TimelineProvider, ta sama encja SalonSnapshot. Wpis powstaje przy każdej zmianie stanu sali, minimalny odstęp 60 sekund, maksymalny 30 minut. Przejście w stan alarmowy idzie pushem, nie czeka na budżet - to jedyny przypadek, w którym wolno wydać wpis poza harmonogramem.
1.4 Smart Stack
184 × 88 pt · widget systemowy
Pazy Flow · Wrzeszcz
1 480 zł82%
Następna 14:30 · Patrycja N. · spóźnienie 12 min
Hierarchia danych · dlaczego utarg, a nie następna wizyta
Smart Stack widzi się przez pół sekundy, przy podniesieniu ręki. W tym czasie mieści się jedna liczba i jedno zdanie. Liczbą jest utarg, bo to jedyna wartość, której nie da się odtworzyć z pamięci; nazwisko następnej klientki recepcja i tak zna. Obłożenie idzie na chip po prawej, bo jest wskaźnikiem, nie wynikiem, a problem schodzi na dół, gdzie oko kończy ruch.
Podpowiedzi · kiedy widget wypływa na wierzch stosu
- Spóźnienie powyżej 10 minut - trafność podniesiona na 30 minut albo do odbicia przyjścia.
- Wolne okno dłuższe niż 45 minut - trafność podniesiona do momentu domknięcia okna.
- 19:30 - jeden wpis dziennie z przypomnieniem
Czas zamknąć dzień, wygasa o 20:30.
Poza tymi trzema wyzwalaczami widget nie prosi o wierzch stosu. Jeżeli wypływa codziennie bez powodu, użytkowniczka go usuwa i tracimy cały kanał.
1.5 Powiadomienie - long look
potwierdzenie terminu przez klientkę
Pazy Flow14:37
Monika Lisowska potwierdziła termin
Kopia · co jest tytułem, a co treścią
Tytuł niesie zdarzenie i osobę: Monika Lisowska potwierdziła termin. Krótkie spojrzenie (short look) pokazuje sam tytuł, więc musi być zdaniem, a nie etykietą typu „Potwierdzenie". Karta pod spodem niesie fakty w kolejności decyzyjnej: kiedy, gdzie, za ile, czy pieniądze wpłynęły. Zaliczka jest zielona, bo to jedyna informacja, która zdejmuje ryzyko.
Dostarczanie · powiadomienia
Kategoria WIZYTA_POTWIERDZONA, dwie akcje w UNNotificationCategory. Powiadomienie z zegarka nigdy nie dubluje powiadomienia z telefonu - jeżeli telefon jest odblokowany i aktywny, zegarek milczy. Grupujemy po lokalu, żeby sieć trzech salonów nie zrobiła z nadgarstka taśmy.
1.6 Korona cyfrowa
nota interakcyjna
Zasada · korona przewija, nie zmienia wartości
- Korona działa wyłącznie w pionie, wewnątrz bieżącej strony. Przechodzenie między siedmioma stronami karuzeli to gest poziomy, nigdy korona.
- Na W1 Sala cztery tory mieszczą się w całości, więc korona nie robi nic i to jest poprawne. Brak reakcji jest lepszy niż sztuczne odbicie listy.
- Na W2 Następni korona przewija dzień do przodu i zatrzymuje się na ostatniej wizycie z komunikatem
Nic więcej dziś po 17:45. Nie zawija do jutra. - Na W3 Utarg korona przesuwa oś prognozy godzina po godzinie do 20:00; haptyka jedno kliknięcie na pełną godzinę, powrót w lewo wraca do 14:37.
- Na W5 Szybkie akcje korona przesuwa fokus po kaflach, żeby akcję dało się wykonać bez celowania palcem, także z VoiceOver.
Czego korona nie robi · nigdy
Korona nie zmienia żadnej wartości pieniężnej. Cel dnia, kwota zaliczki i cena wizyty są poza jej zasięgiem, bo obrót w kieszeni jest tańszy niż pomyłka w kasie. Każda zmiana kwoty wymaga potwierdzenia na telefonie.
Korona nie przewija też listy alertów tak, żeby akcja wjechała pod palec - przyciski Dzwoń i +15 min zostają przy pierwszym alercie, niezależnie od pozycji przewijania.
02 Widgety iOS i macOS
Cztery powierzchnie, jedna hierarchia.
Widget nie jest skrótem do aplikacji. Jest odpowiedzią, po której nie trzeba jej otwierać. Dlatego w każdym rozmiarze największy glif dostaje liczba, której nie da się zgadnąć: utarg wobec celu. Reszta to kontekst, który tłumaczy, dlaczego ta liczba jest taka, a nie inna.
2.1 Ekran główny
170 × 170 · 364 × 170 · 364 × 382 pt
Hierarchia danych · ekran główny
Small ma jedną pracę: kwota w pierścieniu. Właścicielka odblokowuje telefon między spotkaniami i musi dostać odpowiedź bez czytania. Nazwa lokalu jest u góry w 9 px, bo przy trzech lokalach to jedyna rzecz, która odróżnia dwa identyczne widgety.
Medium dzieli się 40/60: po lewej wynik, po prawej powód. Cztery stanowiska to najkrótsze wyjaśnienie, dlaczego utarg jest taki, a nie inny - dwa pracują, jedno stoi wolne, jedno nieobsadzone.
Large dodaje oś czasu, bo dopiero na 364 × 382 pt mieści się kształt dnia. Linia „teraz" jest jedynym elementem w akcencie w tym bloku, żeby oko trafiało w nią pierwszym ruchem.
Odświeżanie · widgety ekranu głównego
small: 12 wpisów na dzień, co godzinę od 8:00 do 20:00, plus wpis po każdym rozliczeniu wizyty (push). Kwota nie może być starsza niż 60 minut.
medium: co 15 minut w godzinach otwarcia, a w oknie ±30 minut od zmiany stanu stanowiska co 5 minut. Poza godzinami otwarcia jeden wpis wieczorny z wynikiem dnia.
large: oś czasu budowana raz rano z całego grafiku (po jednym wpisie na każdą zmianę bloku), odświeżana pushem przy przeniesieniu wizyty. Linia „teraz" rysowana lokalnie z Date(), nie z wpisu - inaczej płacimy za nią 720 przebudzeń dziennie.
2.2 Ekran blokady
circular 72 × 72 · rectangular 160 × 72 · inline
wtorek, 21 lipca
1 480 / 2 800 zł · 53%14:37
Rozmiary rzeczywiste na tle tapety
72 × 72 Circular - obłożenie sali. Pierścień jest jedyną skalą, jaką ten rozmiar udźwignie.
160 × 72 Rectangular - następna wizyta. Nazwisko przycinane, bo godzina jest ważniejsza niż jego koniec.
inline Inline - utarg wobec celu nad zegarem, jedna linia, bez ikony statusu.
Odświeżanie · ekran blokady
Wpisy co 15 minut w godzinach 8:00-20:00, poza tym raz na godzinę. Wariant rectangular dostaje push natychmiast przy przekroczeniu progu spóźnienia (10 minut) i wtedy trzecia linia zmienia się na SPÓŹNIENIE 12 MIN - to jedyny moment, w którym wolno nam użyć wersaliki na blokadzie.
Kolor jest tu wyłączony przez system, więc stan alarmowy niesiemy wagą i wersalikami, nigdy samym kolorem. To ta sama reguła co w komplikacjach: nie polegamy na kolorze jako jedynym nośniku.
2.3 StandBy
520 × 300 pt · telefon na ładowarce przy recepcji
Utarg dnia · Pazur Wrzeszcz
1 480zł
53% z 2 800 zł
prognoza 2 253 zł
NASTĘPNA 14:30
Patrycja N.
Hierarchia danych · StandBy
Telefon na ładowarce czytany jest z dwóch metrów, przez osobę, która akurat wydaje resztę. Stąd 64 px na kwotę i tylko cztery kody stanowisk po prawej. Nazwiska klientek znikają - z dwóch metrów i tak są nieczytelne, a klientka stojąca przy ladzie nie musi widzieć, kto jest następny.
Odświeżanie · StandBy
Wpis co 5 minut w godzinach otwarcia. Po 20:00 przechodzimy na tryb nocny: jeden wpis na godzinę, wyłącznie wynik dnia, jasność systemowa. Żadnych przejść ani animacji liczby - wypalenie panelu jest realne, a ruch w polu widzenia recepcji jest kosztem, nie ozdobą.
2.4 Live Activity i Dynamic Island
wizyta w toku · Karolina Zdunek · ST-2 · 13:45-15:30
Zaliczka 60 zł pobrana · do zapłaty 170 zł
Hierarchia danych · Live Activity
Największy glif to -53 min, nie nazwisko i nie kwota. Kwota jest znana z grafiku, nazwisko widać na sali, a jedyną wartością zmienną w czasie jest to, ile zostało - i tylko ona uzasadnia trzymanie aktywności na ekranie. Kwota schodzi do przycisku Rozlicz 170 zł, bo tam dopiero staje się decyzją.
Stan zmienia kolor pierścienia i paska: w planie cyjan, ostatnie 5 minut bursztyn, po planie czerwień z etykietą +7 min ponad plan. Włącz „Podgląd na żywo" powyżej, żeby zobaczyć wszystkie trzy stany na wszystkich czterech powierzchniach naraz.
Cykl życia · Live Activity
Start w chwili Odbij przyjście (skrót C w konsoli), koniec przy Rozlicz i zamknij wizytę albo automatycznie 30 minut po planowanym końcu.
Aktualizacja pushem co minutę tylko w ostatnich 10 minutach; wcześniej licznik liczy się lokalnie z ClosedRange<Date>, więc kosztuje zero pushy. staleDate ustawiamy na planowany koniec plus 15 minut - po nim aktywność ma pokazać Brak kontaktu z konsolą, a nie zamrożoną liczbę.
2.5 Widget macOS
Centrum powiadomień · 360 × 170 i 360 × 382 pt
Hierarchia danych · macOS
Na Macu widget nie konkuruje z aplikacją, tylko z powiadomieniami z poczty. Dlatego wersja large kończy się blokiem sieci: właścicielka ma otwarty laptop cały dzień i to jedyne miejsce, w którym trzy lokale mieszczą się obok siebie bez przełączania. Stopka wersji medium mówi wprost, że kliknięcie otwiera konsolę i że dalej pracuje się z klawiatury.
Odświeżanie · macOS
Widget odświeża się przy otwarciu Centrum powiadomień i dodatkowo co 5 minut, gdy panel jest widoczny. Gdy aplikacja jest uruchomiona, widget czyta ten sam SalonSnapshot z grupy aplikacji - bez własnego zapytania do serwera.
Blok „Dziś w sieci" ma osobny, wolniejszy rytm: co 15 minut. Dane z trzech lokali i tak spływają z opóźnieniem, więc udawanie sekundowej świeżości byłoby kłamstwem interfejsu.
03 Polityka odświeżania
Jedna tabela do przekazania na wdrożenie.
Wszystkie powierzchnie czytają tę samą encję SalonSnapshot z grupy aplikacji. Różnią się tylko rytmem i tym, co robią, gdy dane się zestarzeją. Zestarzały widget ma powiedzieć, że nie ma kontaktu, a nie pokazywać starą kwotę jak nową.
| Rodzina | Nośna liczba | Rytm podstawowy | Push poza rytmem | Próg starości | Stan zestarzały |
|---|---|---|---|---|---|
| Aplikacja na zegarku | utarg + stan czterech torów | otwarcie + co 15 min | odbicie przyjścia, koniec wizyty | 30 min | szary pasek dane sprzed 14:07 |
| Komplikacje (5 rodzin) | obłożenie 82% / utarg 1 480 zł | 4 wpisy/h, 8:00-20:00 | spóźnienie ≥ 10 min, no-show | 45 min | akcent gaśnie do --text-disabled |
| Smart Stack | utarg 1 480 zł | co 15 min | wolne okno > 45 min, 19:30 | 30 min | widget schodzi na dół stosu |
| Home Screen · small | utarg wobec celu | co 60 min | rozliczenie wizyty | 60 min | kwota w --text-secondary + godzina pomiaru |
| Home Screen · medium | utarg + cztery tory | co 15 min | zmiana stanu stanowiska (co 5 min w oknie ±30 min) | 30 min | kropki statusów szarzeją |
| Home Screen · large | oś czasu dnia | wpis na każdą zmianę bloku | przeniesienie wizyty, odwołanie | 30 min | linia „teraz" zostaje, bloki blakną do 40% |
| Lock Screen · 3 rodziny | obłożenie / następna wizyta | co 15 min | przekroczenie progu spóźnienia | 30 min | trzecia linia: Brak kontaktu |
| StandBy | utarg 1 480 zł | co 5 min, po 20:00 co 60 min | brak | 15 min | jasność do 60%, dopisek z godziną pomiaru |
| Live Activity | pozostały czas wizyty | lokalnie, bez pushy | ostatnie 10 min: push co 60 s | koniec + 15 min | Brak kontaktu z konsolą, licznik zatrzymany |
| macOS · Centrum powiadomień | utarg + sieć trzech lokali | otwarcie panelu + co 5 min | brak | 20 min | nagłówek: ostatnia synchronizacja 14:17 |
3.1 Stany brzegowe
pusto · ładowanie · dane zestarzałe
Tabela wyżej opisuje, co ma się stać. Poniżej te same stany narysowane, bo „szary pasek z godziną pomiaru" da się zaimplementować na pięć sposobów i cztery z nich kłamią. Żaden z tych ekranów nie ma animacji - szkielet ładowania też nie migocze, bo ruch na nadgarstku czyta się jak zmiana danych.
Alerty · 0
Sprawdzono 14:37.
Sala · Wrzeszcz
Wczytywanie stanu lokalu
Sala · Wrzeszcz
- ST-1Patrycja N.+12 min
- ST-2Karolina Z.-53 min
- PED-1WOLNEod 14:30
- ST-4NIEOBSADZONEpotencjał 1 360 zł
Brak kontaktu z konsolą
Reguła nadrzędna · stary widget mówi, że jest stary
Każda powierzchnia ma dokładnie jeden sposób przyznania się do nieaktualności i nigdy nie jest nim ukrycie liczby. Recepcja podejmuje decyzje na podstawie tych kwot; kwota bez znacznika świeżości jest gorsza niż brak kwoty, bo wygląda tak samo jak prawdziwa.
Spójność · ten sam zestaw liczb we wszystkich czterech plikach
Chwila: wt., 21.07.2026 · 14:37. Utarg 1 480 zł wobec celu 2 800 zł (53%), prognoza 2 253 zł, obłożenie 82%, wizyt 13. Tory: ST-1 Patrycja N. +12 min, ST-2 Karolina Z. -53 min, PED-1 wolne od 14:30, ST-4 nieobsadzone (1 360 zł potencjału).