FlowMap

Przykład: Rezerwacja wizyty

Gotowa mapa procesu „Klient chce umówić wizytę w salonie” — tylko do podglądu, bez logowania.

Zbuduj własną mapę
–kompletność

Specyfikacja wygenerowana z mapy

# Specyfikacja: Przykład: Rezerwacja wizyty

> Wygenerowano w FlowMap. Kompletność mapy: **100/100**.

## 1. Opis procesu

Zdarzenie startowe: „Klient chce umówić wizytę w salonie”.

1. **Klient chce umówić wizytę w salonie** (Start) — *Klient*
2. **Wybór usługi** (Ekran) — *Klient*
3. **Wybór terminu i specjalisty** (Ekran) — *Klient*
4. **Czy termin jest wolny?** (Decyzja) — *System*
   - jeśli „tak” → Klient podaje dane kontaktowe
   - jeśli „nie” → Wybór terminu i specjalisty
5. **Klient podaje dane kontaktowe** (Działanie użytkownika) — *Klient*
6. **Czy usługa wymaga przedpłaty?** (Decyzja) — *System*
   - jeśli „tak” → Płatność online
   - jeśli „nie” → Wysłanie potwierdzenia rezerwacji
7. **Płatność online** (Integracja) — *Klient*
   - jeśli „brak płatności” → Płatność nieudana — spróbuj ponownie
8. **Wysłanie potwierdzenia rezerwacji** (Automatyzacja) — *System*
9. **Płatność nieudana — spróbuj ponownie** (Ekran) — *Klient*
10. **Oczekiwanie na termin wizyty** (Oczekiwanie) — *System*
11. **Przypomnienie dzień przed wizytą** (Automatyzacja) — *System*
12. **Wizyta odbyta** (Koniec) — *Klient*

## 2. Role i uprawnienia

- **Klient** — wykonuje: Klient chce umówić wizytę w salonie; Wybór usługi; Wybór terminu i specjalisty; Klient podaje dane kontaktowe; Płatność online; Płatność nieudana — spróbuj ponownie; Wizyta odbyta
- **System** — wykonuje: Czy termin jest wolny?; Czy usługa wymaga przedpłaty?; Wysłanie potwierdzenia rezerwacji; Oczekiwanie na termin wizyty; Przypomnienie dzień przed wizytą
- Każdy użytkownik widzi tylko własne dane; role inne niż System wymagają logowania.

## 3. Ekrany

### Wybór usługi
- Użytkownik: Klient
- Wyświetla: Lista usług, Cena, Czas trwania
- Pola do wypełnienia: Usługa

### Wybór terminu i specjalisty
- Użytkownik: Klient
- Wyświetla: Kalendarz wolnych terminów, Lista specjalistów
- Pola do wypełnienia: Data, Godzina, Specjalista

### Płatność nieudana — spróbuj ponownie
- Użytkownik: Klient
- Wyświetla: Komunikat o błędzie, Przycisk ponów

## 4. Model danych

- **Klient**: Usługa, Data, Godzina, Specjalista, Imię i nazwisko, Telefon, E-mail, Zgoda RODO, Kwota, Metoda płatności
- **Zdarzenie**: Status płatności, SMS, E-mail z terminem, SMS z przypomnieniem
- **Proces**: id, status, krok bieżący, data utworzenia, data zmiany

## 5. Powiadomienia i integracje

- Integracja: **Płatność online** — Status płatności
- Automatyzacja: **Wysłanie potwierdzenia rezerwacji** — SMS, E-mail z terminem
- Oczekiwanie: **Oczekiwanie na termin wizyty**
- Automatyzacja: **Przypomnienie dzień przed wizytą** — SMS z przypomnieniem

## 6. Historyjki użytkownika

- Jako **Klient** chcę: wybór usługi.
  - Kryteria akceptacji:
    - [ ] pole „Usługa” jest wymagane i walidowane
    - [ ] widzę „Lista usług”
    - [ ] widzę „Cena”
    - [ ] widzę „Czas trwania”
    - [ ] po zakończeniu przechodzę do „Wybór terminu i specjalisty”
- Jako **Klient** chcę: wybór terminu i specjalisty.
  - Kryteria akceptacji:
    - [ ] pole „Data” jest wymagane i walidowane
    - [ ] pole „Godzina” jest wymagane i walidowane
    - [ ] pole „Specjalista” jest wymagane i walidowane
    - [ ] widzę „Kalendarz wolnych terminów”
    - [ ] widzę „Lista specjalistów”
    - [ ] po zakończeniu przechodzę do „Czy termin jest wolny?”
- Jako **Klient** chcę: klient podaje dane kontaktowe.
  - Kryteria akceptacji:
    - [ ] pole „Imię i nazwisko” jest wymagane i walidowane
    - [ ] pole „Telefon” jest wymagane i walidowane
    - [ ] pole „E-mail” jest wymagane i walidowane
    - [ ] pole „Zgoda RODO” jest wymagane i walidowane
    - [ ] po zakończeniu przechodzę do „Czy usługa wymaga przedpłaty?”
- Jako **Klient** chcę: płatność nieudana — spróbuj ponownie.
  - Kryteria akceptacji:
    - [ ] widzę „Komunikat o błędzie”
    - [ ] widzę „Przycisk ponów”
    - [ ] po zakończeniu przechodzę do „Płatność online”

## 7. Scenariusze testów

1. Klient chce umówić wizytę w salonie → Wybór usługi → Wybór terminu i specjalisty → Czy termin jest wolny? → Klient podaje dane kontaktowe → Czy usługa wymaga przedpłaty? → Płatność online → Wysłanie potwierdzenia rezerwacji → Oczekiwanie na termin wizyty → Przypomnienie dzień przed wizytą → Wizyta odbyta
2. Klient chce umówić wizytę w salonie → Wybór usługi → Wybór terminu i specjalisty → Czy termin jest wolny? → Klient podaje dane kontaktowe → Czy usługa wymaga przedpłaty? → Płatność online → Płatność nieudana — spróbuj ponownie
3. Klient chce umówić wizytę w salonie → Wybór usługi → Wybór terminu i specjalisty → Czy termin jest wolny? → Klient podaje dane kontaktowe → Czy usługa wymaga przedpłaty? → Wysłanie potwierdzenia rezerwacji → Oczekiwanie na termin wizyty → Przypomnienie dzień przed wizytą → Wizyta odbyta
- Test błędu: „Płatność online” kończy się niepowodzeniem — proces obsługuje wyjątek.

## 8. Otwarte pytania

- brak — mapa jest kompletna

Mermaid

flowchart TD
    n0(["Klient chce umówić wizytę w salonie<br/>(Klient)"])
    n1["Wybór usługi<br/>(Klient)"]
    n2["Wybór terminu i specjalisty<br/>(Klient)"]
    n3{"Czy termin jest wolny?<br/>(System)"}
    n4("Klient podaje dane kontaktowe<br/>(Klient)")
    n5{"Czy usługa wymaga przedpłaty?<br/>(System)"}
    n6[/"Płatność online<br/>(Klient)"/]
    n7[["Wysłanie potwierdzenia rezerwacji<br/>(System)"]]
    n8["Płatność nieudana — spróbuj ponownie<br/>(Klient)"]
    n9(("Oczekiwanie na termin wizyty<br/>(System)"))
    n10[["Przypomnienie dzień przed wizytą<br/>(System)"]]
    n11(["Wizyta odbyta<br/>(Klient)"])
    n0 --> n1
    n1 --> n2
    n2 --> n3
    n3 -->|"tak"| n4
    n3 -->|"nie"| n2
    n4 --> n5
    n5 -->|"tak"| n6
    n5 -->|"nie"| n7
    n6 --> n7
    n6 -->|"brak płatności"| n8
    n8 --> n6
    n7 --> n9
    n9 --> n10
    n10 --> n11
    class n0 start
    class n4 user_action
    class n1,n2,n8 screen
    class n7,n10 automation
    class n3,n5 decision
    class n9 wait
    class n6 integration
    class n11 end
    classDef start fill:#d3f9d8,stroke:#2b8a3e
    classDef end fill:#ffe3e3,stroke:#c92a2a
    classDef decision fill:#fff3bf,stroke:#e67700
    classDef screen fill:#e7f5ff,stroke:#1971c2