Tema
/
Mobiliosios programėlės KOTLIN
Pamoka 14 / 14 Baigiamasis: Pica ~60 min
📖 Teorija

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.