← DokArh Portal
IMPLEMENTACIJA

Offline Queue blagajna — IndexedDB red + auto-sync (DIO 2 FAZA B NALOG CC)

Kreator: genesis Datum: 2026-06-11 Status:
WeisE3™ ID: c1323-offline-queue-blagajna-2026-06-11
tipIMPLEMENTACIJA
sesijac1323
FAZA_A_DIJAGNOZA{ "zakljucak": "genesis-mesh.js NIJE spajan na blagajnu — razlog: gradjen za Kvantni Dzep (/public/quantum/), nikad integriran u genesispos PWA. eho_pos.js gradi lokalnu Krunica verigu ali je NE salje — zatvara se u zatvori() koje vraca summary bez server push-a. confirmPay() ide direktno na apiPost('/racun') bez offline fallback-a.", "sto_fali_do_p2p": "RTC signaling ziv (/api/v4/kanal/p2p/signal), genesis-mesh.js kompletan. Sto fali: (1) import genesis-mesh.js u blagajna/index.html, (2) P2
FAZA_B_IMPLEMENTACIJA{ "sto_je_napravljeno": [ "IndexedDB baza 'gpos_offline', store 'racuni' s autoIncrement kljucem", "oqOtvori() — otvara IDB, kreira store na prvom pokretanju", "oqDodaj(payload) — dodaje transakciju u lokalni red", "oqSinkroniziraj() — cursor prolaz kroz sve nesihronizirane, DELETE po uspjehu", "confirmPay() prosiren: (1) provjera navigator.onLine PRIJE API poziva, (2) offline → oqDodaj + toast, (3) online ali API fail → oqDodaj + toast", "window.addEventListener('onlin
CONFLICT_RESOLUTION{ "implementirano": "offline_ts timestamp (Date.now()) se salje na server uz svaki offline racun. Server moze koristiti taj timestamp za detektiranje duplikata (isti smjena_id + isti stavke + timestamp < 30s = potencijalni duplikat). Krunica anti-double-spend: eho_pos.js vec gradi lokalnu verigu po sessionu — chain hash sprjecava duplikate unutar jednog sessiona.", "nije_implementirano": "Conflict resolution izmedju DVA razlicita telefona koji su oba offline i rade iste promjene (npr. isti a
DOKAZ_OFFLINE_FLOW{ "test_procedure": [ "1. Otvori https://genesispos.online/blagajna/ na telefonu", "2. Logiraj se (online)", "3. Ukljuci avionski mod (Flight mode)", "4. Dodaj artikle u kosaru i klikni Naplati", "5. Provjeri toast: 'Offline — transakcija sacuvana lokalno'", "6. Provjeri header: narancasti badge 'Offline: 1'", "7. Iskljuci avionski mod", "8. Provjeri: auto-sync se aktivira (window.addEventListener online)", "9. Toast: 'Offline red: 1 racun sinkroniziran'",
STO_JE_OSTALO{ "p2p_integracija": "genesis-mesh.js → blagajna direktno (telefon-telefon bez servera) — DOKUMENTIRANO, sljedeca razina", "offline_smjena": "Ako nema smjene (smjena_id=null) pri offline naplati — server moze odbiti. Rijesi: otvorena smjena se kesi lokalno.", "ios_pwa_limitacija": "Safari/iOS ima ogranicen IndexedDB quota u standalone PWA modu. Test na iPhoneu preporucen.", "new_hook": "NEW server nema post-receive hook za auto-deploy — rucno kopiranje pri svakom pushu (c1319 todo)." }
zakonZAKON NAD ZAKONIMA — offline radi = pokazano da radi. Afriska prednost: telefon radi bez veze, sinkronizira kad dodje, P2P sljedeci.