{"id":"c0076","filename":"c0076_pos_omega_session_20260507.dok.json","weise3_id":"WEISE3::pos_omega_session_20260507::cc::fenix::FENIX2026","tip":"sesija_log","naziv":"POS OMEGA v2 — Implementacija Sesija 2026-05-07","kreator":"genesis","datum":"2026-05-07","snippet":"","status":"DONE","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"sesija_log","naziv":"POS OMEGA v2 — Implementacija Sesija 2026-05-07","weise3_id":"WEISE3::pos_omega_session_20260507::cc::fenix::FENIX2026","datum":"2026-05-07","status":"DONE","commit":"ca8bcfe","domena":"genesispos.online","sto_je_napravljeno":{"arhitektura":"c0075 DokArh plan — 25 alata, 8 entiteta, 7 fiskalizacijskih providera","alati_sustav":"BasePOSAlat + POSAlatiRegistry + @alat dekorator — plug-in registry","fiskal_alati":["fiskal_hr (FINA CIS ZKI+JIR v2)","eracun_hr (Fiskal2 XAdES Propter)","tse_de (KassenSichV DSFinVK)","rksv_at (AES-256 chain)","furs_si (FURS TRR+EOR)","sdi_it (FatturaPA)","ctc_fr (Chorus Pro)","peppol_nl (NLCIUS)"],"payment_alati":["split_pay (gotovina+kartica+digital+crypto+bon+virman)","terminal (Stripe/Adyen)","nfc (Web NFC API)","crypto (BTCPay Lightning)","voucher (gift card)"],"utility_alati":["printer (ESC/POS 80mm USB/NET)","whatsapp (WAHA ghost receipt)","pocket (QR phone-only)","training (obuka watermark)","krunica (ChainBlock POE)","ai_check (Haiku anomalija)","loyalty (bodovi razine)","stock (zalihe alarm)","table (tlocrt kelneri)","repair (servis nalog)","appointment (termini)","members (udruga gym)"],"entity_adapter":"10 tipova: obrtnik/OPG/doo/udruga/bilježnik/odvjetnik/trading_chain/restaurant/gym/frizer","omega_engine":"lifecycle: open→add_item→split→finalize→fiscalize→print — koordinira sve alate","modeli":"migration 0016: weise3_id, bunker_seal_id, vivus_status, extra_data, alati_config, entity_type","pwa_offline":"Service Worker v2 (cache-first statika, queue POST), IndexedDB Dexie.js, Background Sync","ui":"HTMX + Alpine.js + Tailwind gold dark theme, kasa.html, terminal_select.html, partials","redis_layer":"pos: namespace, receipt cache, session, offline queue, fiscal rate limit, daily analytics","nginx":"genesispos.online HTTP vhost aktivan, SSL čeka certbot + DNS propagacija","allowed_hosts":"genesispos.online + www.genesispos.online dodano u .env"},"genesispos_online":{"domena":"genesispos.online (novo zakupljena)","nginx_config":"/etc/nginx/sites-available/genesispos (aktivan, HTTP)","redirect":"genesispos.online → /hr/pos/omega/ (terminal select)","ssl_korak":"sudo certbot --nginx -d genesispos.online -d www.genesispos.online (DNS mora proći)","dns_treba":"A record: genesispos.online → 37.27.248.86"},"satiink_komponente_integrirane":{"redis_layer":"pos/services/redis_layer.py po sati.ink arh: uzorku","vivus_widget":"kasa.html ima isti VIVUS progress bar widget","onboarding_tour":"app.js initOnboardingTour() — isti 5-step pattern","push_notifikacije":"sw.js push handler isti kao arhiva/views_pwa_auth.py","toast_notifications":"showToast() funkcija — isti API kao sati.ink","genesis_webauthn":"OmegaKasaView koristi webauthn pattern iz accounts/genesis_views.py"},"module_plus_princip":{"opis":"Svaki alat je neovisna Python klasa. Povećaj version broj → registry automatski upgradeuje.","dodavanje":"1. Nasljediti BasePOSAlat 2. Definirati id/version/name 3. Dodati @alat dekorator 4. Importati u __init__.py","nadogradnja":"Samo promijeni version = N+1 u klasi → registry prima noviju verziju","EU_zakoni":"Kad se zakon promijeni (npr. FINA API), samo update FiskalHRAlat.version += 1"},"open_threads":["DNS: genesispos.online A record → 37.27.248.86 (Ivan mora u domenu registraru)","SSL: certbot --nginx -d genesispos.online (nakon DNS propagacije ~1h)","collectstatic: /var/www/fenix-v3/pos/static/ → staticfiles/","Produkcijski fiskal: FINA cert upload za pravi ZKI/JIR","Produkcijski e-Račun: moj-eRacun.hr API token","NFC PWA: testirati na Android Chrome 89+ fizički uređaj","Stripe Terminal: stripe_api_key + stripe_location_id konfiguracija","BTCPay: btcpay_url + store_id za crypto plaćanje","digigraf.online: integrirati POS s tahograf MVPom (?) — Ivan potvrdi"],"zakon":["ZAKON 1A","ZAKON 2","ZAKON 3","ZAKON 17"]}}