Skip to main content

Zajęcia próbne — zapis przez recepcję

Pracownik może zapisać uczestnika na zajęcia próbne, ale formalności wykonuje klient. Regulamin, politykę prywatności i płatność klient załatwia sam, z linku, który dostaje SMS-em i e-mailem. Zapis jest potwierdzony dopiero wtedy, gdy klient zaakceptuje dokumenty i zapłaci.


Część 1. Instrukcja dla recepcji​

Jak to wygląda w praktyce​

  1. Zapisujesz uczestnika tak jak dotychczas — z listy klientów („Zapisz na próbne") albo z kalendarza uczestnika.
  2. Na ostatnim kroku nie ma już checkboxa z regulaminem. Zamiast niego jest informacja, że dokumenty i płatność wykona klient. Przycisk nazywa się „Zapisz i wyślij link klientowi".
  3. Po zapisie system wysyła klientowi SMS i e-mail z linkiem. Okno zapisu pokazuje, czy obie wiadomości poszły, oraz sam link — możesz go skopiować i podać klientowi przy ladzie.
  4. Miejsce jest zajęte przez cały czas trwania okna (domyślnie 120 minut, nigdy dłużej niż do startu zajęć). W grafiku przy uczestniku widać żółtą ikonę „czeka na regulamin".
  5. Klient otwiera link, zaznacza akceptację regulaminu i polityki prywatności i płaci przez Przelewy24. Po zaksięgowaniu wpłaty zapis jest potwierdzony, a klient dostaje standardowe potwierdzenie zajęć próbnych.
  6. Jeśli klient nie zdąży, płatność wygasa, miejsce wraca do puli, a w historii zajęć zostaje wpis o wygaśnięciu.

Czego pracownik nie robi​

  • nie akceptuje regulaminu ani RODO za klienta — checkboxa po prostu nie ma,
  • nie płaci za klienta online — z tego ekranu nikt nie trafia na Przelewy24, nawet gdy w ustawieniach włączona jest „Natychmiastowa płatność" (ta dotyczy wyłącznie zapisów, które klient robi sam w swoim panelu).

Gotówka przy kasie​

Możesz przyjąć gotówkę lub kartę jak dotychczas — z modułu płatności. Wpłata nie zastępuje akceptacji dokumentów: po opłaceniu link klienta zmienia się w ekran „zostały jeszcze dokumenty" z jednym przyciskiem „Akceptuję dokumenty". Dopóki klient go nie kliknie, przy uczestniku widnieje ikona oczekiwania.

Kiedy system nie pozwoli zapisać​

Zapis zostaje odrzucony w całości, zanim cokolwiek pojawi się w kalendarzu:

KomunikatCo zrobić
Uczestnik nie ma numeru telefonuUzupełnij numer w profilu. Bez numeru nie ma jak wysłać linku, a klient straciłby miejsce, nie wiedząc dlaczego.
Uczestnik nie ma daty urodzeniaUzupełnij datę. Od wieku zależy, który regulamin obowiązuje — do 18 lat regulamin szkółki, od 18 lat dla dorosłych i seniorów.

Jeśli nie uda się przygotować linku, zapis jest cofany razem z płatnością — nie zostaje „wiszące" miejsce, którego klient nie może potwierdzić.

Na jaki numer i adres idzie wiadomość​

SMS: na numer uczestnika, a gdy go nie ma — na numer właściciela konta (opiekuna). E-mail: na adres właściciela konta; adresy techniczne klientów lokalnych i gości są pomijane.

Czego to nie dotyczy​

  • zapisów, które klient robi sam w swoim panelu — tam zgoda jest w formularzu, a płatność od razu po zapisie,
  • publicznego kreatora zapisu z linku marketingowego (Linki rejestracyjne) — ma własne kroki ze zgodami i płatnością,
  • pracownika zapisującego własnego uczestnika (gdy uczestnik należy do jego konta) — wtedy jest klientem jak każdy inny i przechodzi ścieżkę klienta.

Ustawienia (panel administratora)​

Zajęcia próbne → Ustawienia płatności, osobno dla każdego miasta:

  • Czas dla klienta na dokończenie zapisu (minuty) — domyślnie 120, zakres 5–1440. Dotyczy wyłącznie zapisów przez pracownika. Termin jest zawsze skracany do startu zajęć.
  • Natychmiastowa płatność i Czas na płatność — dotyczą zapisów, które klient robi sam.

Część 2. Dokumentacja techniczna​

Przepływ​

Rozstrzygnięcie ścieżki​

enrollInSkillAssessment wybiera ścieżkę na podstawie sesji, nie parametru z UI — wszystkie wejścia (okno zapisu, modal confirm-join, publiczny kreator) przechodzą przez ten sam warunek:

const clientCompletesFormalities =
(await isEmployeeEnrollment()) && player.owner_email !== session.user.email;

Na tej ścieżce akcja nie wymaga consent.accepted i nie zapisuje żadnej zgody — zgoda powstaje dopiero przy akceptacji przez klienta, z actorType: 'customer'.

Okno i płatność​

ElementZapis klientaZapis pracownika
Okno miejscatrial_payment_time (dom. 10 min)trial_client_completion_time (dom. 120 min), skracane do startu zajęć
payment.payment_expires_atkoniec oknakoniec okna
Zgodaw formularzu, przy zapisieprzy akceptacji z linku
Płatnośćprzekierowanie klienta na P24link /pay/{token}

handleSkillAssessmentEnrollment porównuje wpłatę z attendee.paymentExpiresAt zamiast ze sztywnym limitem 135 minut — inaczej płatność wykonana w dłuższym oknie wracałaby na portfel zamiast potwierdzić miejsce.

Model danych​

Nie ma nowej tabeli. Wykorzystane są:

ObiektRola
payment_link.related_type='trial'link klienta; related_id i game_id wskazują te same zajęcia
attendee.statuteExpiresAtznacznik „czeka na dokumenty" — ten sam, który pokazuje grafik dla zapisów na zajęcia stałe
consent_logźródło prawdy dla RODO: trial_registration_statute + privacy_policy
notification_typestrial_enrollment_pending_client (migracja 0278), kanał SMS

E-mail idzie z lokalnego szablonu mails/trial-enrollment-pending-client.html (renderowanego przez lib/mail-render), a nie z SendGrida — link jest jednorazowy i musi wyjść w tym samym wywołaniu, w którym powstał.

Bezpieczeństwo​

Token linku jest jedynym poświadczeniem: strona /pay/{token} nie wymaga logowania, a link nigdy nie trafia do logów. Endpointy publiczne mają limit 5 żądań na minutę. Link buduje się z CLIENT_ORIGIN (a nie z NEXT_PUBLIC_BASE_URL workera admina), żeby klient nie wylądował na stronie logowania do panelu.

Powiązane dokumenty​