Pilnas srautas: QR → meniu → mokėjimas
Dabar sujunk viską ir pereik pilną srautą — vieno užsakymo kelionę per visus sluoksnius. Tai ir yra baigiamojo darbo esmė: veikianti Pica nuo pradžios iki galo.
Paruošimas. Paleisk pateiktą Go backendą lokaliai (Chi + SQLite; go run . → localhost:8080). Programėlė emuliatoriuje jį pasiekia per 10.0.2.2:8080 (arba produkciją — pica.programuoki.lt).
Srautas — sek jį ir stebėk, kuris sluoksnis dirba:
1. Startas → StartupViewModel tikrina žetoną (8a)
→ nėra → Login ekranas
2. Prisijungimas → POST /login → žetonas → SecureTokenStorage (8a)
3. QR → ScanScreen (CameraX + ML Kit) → TableSession = "7" (10)
4. Meniu → Room talpykla rodo iškart, refresh iš GET /menu (5, 7)
→ Koin injektuoja MenuViewModel (6)
5. Krepšelis → MVI: AddItem, qty ±, live total (3)
6. Apmokėjimas → Checkout → POST /create-payment-intent → PaymentSheet
→ 4242… → PaymentSucceeded (11)
7. Užsakymas → completeOrder → POST /orders su table_number "7" (9, 10)
→ AuthInterceptor prisega žetoną (9)
8. Istorija → GET /orders → matai TIK savo užsakymus (9)
Kiekvienas žingsnis paliečia tai, ką pastatei per 12 pamokų. Vienas pilnas ratas — ir matai, kaip sluoksniai bendrauja: UI siunčia Event, ViewModel keičia UiState, repozitorija eina į tinklą ar talpyklą, interceptorius prisega žetoną, serveris atriboja duomenis.
Patikrink atsparumą:
- Offline: išjunk internetą po pirmo meniu užkrovimo → meniu vis tiek rodomas (Room, 7).
- Klaidos: sustabdyk backendą →
Error+ „Retry", ne lūžis (5, 9). - Tuščia: naujas vartotojas → „No orders yet", tuščias krepšelis (12).
- Perkrovimas: uždaryk ir atidaryk → lieki prisijungęs, staliukas ir krepšelis elgiasi teisingai.
Pastaba (auth). Baigiamajam pakanka el. pašto prisijungimo (8a). Google prisijungimas (8b) — atskira, vėliau pridedama galimybė; tas pats žetonų kontraktas, tik kitas būdas gauti žetoną. Jei jį jau turi — puiku; jei ne — el. paštas visiškai tinka.