Průběh formuláře a přehrání
Jak se zaznamenává vyplňování pokladny (dříve formuláře objednávky) a jak se pak zobrazí jako časová osa nebo „video“.
Na této stránce
Shrnutí: Skript v prohlížeči sbírá akce ve formuláři a každé 2 s je pošle dávkou na server. Server doplní své události (chyba validace, vznik objednávky). Stránky Průběh a Přehrát pak proud promítnou.
Záznam
sequenceDiagram
autonumber
actor Z as Zákazník
participant T as order-form-tracker.js
participant JC as JourneysController
participant P as Checkout/Index (server)
participant JS as JourneyService
participant DB as journeys.db
Z->>T: otevře pokladnu → FormOpened (journeyId = nové GUID, target = checkout)
Z->>T: píše, kliká → FieldFocused, FieldChanged, Clicked…
loop každé 2 s
T->>JC: POST /api/journeys/{journeyId}/events (dávka)
JC->>JS: RecordAsync – přeskočí známá EventId
JS->>DB: INSERT nové události
end
Z->>T: Objednat → SubmitClicked
T->>JC: sendBeacon (zbytek dávky při opuštění stránky)
Z->>P: POST formulář (s journeyId a časem)
alt validace selhala
P->>JS: ValidationFailed (hlášky)
else objednávka vznikla
P->>JS: OrderSubmitted (OrderId) – tím je proud spojený s objednávkou
end
Zobrazení a přehrání
sequenceDiagram
autonumber
actor O as Obsluha
participant PG as Orders/Journey, Orders/Replay
participant JS as JourneyService
participant P1 as OrderJourneyProjection
participant P2 as JourneyReplayProjection
participant PL as journey-player.js
O->>PG: Průběh objednávky 42
PG->>JS: GetByOrderIdAsync(42)
JS->>P1: fold přes všechny události proudu
P1-->>PG: časová osa + souhrn
O->>PG: Přehrát
PL->>JS: GET /api/journeys/orders/42/replay
JS->>P2: scénář (pauzy nad 3 s zkrácené)
P2-->>PL: snímky s časem přehrání
PL->>PL: přehraje akce nad kopií formuláře
Co si všimnout
- Sledování nesmí rozbít objednávku – chyba zápisu do
journeys.dbse jen zaloguje. - Čas událostí je relativní k otevření formuláře – dávky můžou dorazit v libovolném pořadí.
- Prvky, které má přehrávač najít, mají atribut
data-tracknebo jméno pole;Replay.cshtmlmá ruční kopii pokladny (nové pole pokladny je potřeba přidat i tam) a kopii původního formuláře pro staré proudy. - Po Přijmout nové ceny se pokladna načte znovu a začne nový proud (známé omezení e-shop kroku 4B).
Kód
order-form-tracker.js · JourneysController · JourneyService · journey-player.js