Wycieczka z przewodnikiem
nazwa trasy w kodzie: GuidedTour
Jak tu trafić / dokąd stąd
Dział zatytułowany „Jak tu trafić / dokąd stąd”Wejścia
Dział zatytułowany „Wejścia”| Wejścia | kind | Kontrolka |
|---|---|---|
| Escape the Crowd | navigate | — |
| Przed startem wycieczki | navigate | — |
Wyjścia
Dział zatytułowany „Wyjścia”| Wyjścia | kind | Kontrolka |
|---|---|---|
| Logowanie (z aplikacji) | navigate | — |
| Ekran główny | popTo | — |
| Kreator trasy — start i czas | navigate | — |
Zdolności na tym ekranie
Dział zatytułowany „Zdolności na tym ekranie”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Narracja o miejscu generowana online, pokazana w panelu i czytana głosem urządzenia | działa | e2eGuidedTour.narrativePane ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓ | — |
| Gdy serwer narracji zawiedzie, aplikacja mówi zdanie zastępcze albo czyta pobrany pakiet offline | działa | RNTLGuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓ | — |
| Przybycie: karta po pierwszym odczycie GPS w promieniu, automatyczne potwierdzenie po dwóch | działa | e2eGuidedTour.arrivalCard ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓e2e j2-marketplace-guided-tour.spec.ts ✓ | — |
| Przycisk „Jestem tu” wymaga Google Directions; bez klucza pozostaje nieaktywny | częściowo | e2eGuidedTour.arrivalImhere ✓ | #220 (New) |
| Pominięcie przystanku bez zaliczania wizyty; ręczne „odwiedzone” na liście bez GPS | działa | RNTLGuidedTour.arrivalSkip ✓RNTL GuidedTour.markVisited ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓ | — |
| Pytania do przewodnika: czat z limitem dziennym poza Premium, sesja głosowa w Premium | działa | RNTLChatModal.chatSuggestion ·RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓API dialog.test.ts ✓ | — |
| Premium: agent głosowy startuje razem z wycieczką i sam wita; bez Premium wita głos urządzenia | działa | RNTLGuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓ | — |
| Bez odczytu GPS wycieczka jest zablokowana z przyciskiem Ponów — nigdy nie startuje z wymyślonej pozycji | działa | RNTLGuidedTourScreen.test.tsx ✓ | — |
| Zakończenie wycieczki wraca na ekran główny bez dublowania go w historii | działa | e2eGuidedTour.end ✓e2e GuidedTour.endTourConfirm ✓RNTL GuidedTourScreen.test.tsx ✓ | — |
| Po ostatnim przystanku: podsumowanie z punktami, ocena NPS i „hak na jutro” | działa | e2eTourCelebrationModal.poiList ✓e2e NpsModal.step ✓e2e NpsModal.tomorrowHook ✓RNTL GuidedTourScreen.test.tsx ✓ | — |
| Pauza, lista przystanków i transkrypt dostępne w trakcie wycieczki | działa | RNTLGuidedTour.pause ·RNTL GuidedTour.openStopsList ✓RNTL GuidedTour.transcript · | — |
Kontrolki
Dział zatytułowany „Kontrolki”| Kontrolka | Etykieta | element | Dowód (ostatni zielony build) |
|---|---|---|---|
end-tour-confirm | bez etykiety | ThemedAlert.alert | RNTL×1 e2e×2 |
tour-end | bez etykiety | IconButton | RNTL×1 e2e×1 |
open-stops-list | Przystanki wycieczki | IconButton | RNTL×1 |
phase-chip | bez etykiety | Text | brak dowodu |
tour-pause | Wznów | IconButton | brak dowodu |
limit-chip | Limit: {{time}} | Text | brak dowodu |
narrative-pane | bez etykiety | View | RNTL×2 e2e×1 |
arrival-card | bez etykiety | Card | RNTL×3 e2e×1 |
arrival-imhere | Jestem tu | Button | RNTL×4 e2e×1 |
arrival-skip | Pomiń | Button | RNTL×1 |
closing-warning | To miejsce może być teraz zamknięte — sprawdź godziny przed wejściem. | Text | brak dowodu |
photo-moment | Moment na zdjęcie | Button | brak dowodu |
mark-visited-* (dynamiczny) | Oznacz jako odwiedzone | Button | RNTL×1 |
tour-transcript | bez etykiety | ScrollView | brak dowodu |
premium-box | Baner Premium — przejdź do zakupu | Card · PremiumBanner | brak dowodu |
premium-box-cta | Wykup Premium | Button · PremiumBanner | brak dowodu |
premium-banner | Baner Premium — przejdź do zakupu | Card · PremiumBanner | RNTL×4 e2e×1 |
chat-suggestion | bez etykiety | Card · ChatModal | brak dowodu |
summary-poi-list | bez etykiety | View · TourCelebrationModal | e2e×1 |
summary-signup | Załóż konto, aby zachować postępy | Button · TourCelebrationModal | brak dowodu |
summary-share | Udostępnij | Button · TourCelebrationModal | brak dowodu |
nps-step | bez etykiety | View · NpsModal | e2e×1 |
nps-score-* (dynamiczny) | bez etykiety | Button · NpsModal | brak dowodu |
nps-comment | Jedno zdanie od Ciebie (opcjonalnie) | TextInput · NpsModal | brak dowodu |
nps-skip | Pomiń | Button · NpsModal | e2e×1 |
nps-submit | Wyślij | Button · NpsModal | brak dowodu |
tomorrow-hook | bez etykiety | View · NpsModal | e2e×1 |
plan-tomorrow | Zaplanuj jutro | Button · NpsModal | brak dowodu |
tomorrow-close | Zamknij | Button · NpsModal | e2e×1 |
Kontrolki przypisane jeden poziom w głąb: komponenty współdzielone liczą się do ekranu, który je renderuje bezpośrednio.
Ostatnia zmiana pliku ekranu: 3e651f3 (2026-08-30)