{"id":"c0097","filename":"c0097_genesispos_analiza_plan_1310.dok.json","weise3_id":"cc27df68e08bf172ae209144ae9fc710dae05b042ee5fae4720bd647a31d19f8","tip":"analiza_plan","naziv":"GenesisPOS genesispos.online — Kompletna analiza + Plan za 13/10","kreator":"genesis-cc","datum":"2026-05-07","snippet":"","status":"","prev_weise3":"","bunker_l":"#7953ff","full":{"tip":"analiza_plan","naziv":"GenesisPOS genesispos.online — Kompletna analiza + Plan za 13/10","weise3_id":"cc27df68e08bf172ae209144ae9fc710dae05b042ee5fae4720bd647a31d19f8","nastao":"2026-05-07T00:00:00Z","datum":"2026-05-07","kreator":"genesis-cc","kontekst":"genesispos","infrastruktura":{"domena":"genesispos.online","ssl":"LIVE (certbot, TLS 1.3)","nginx":"HTTP 80 → 302 → HTTPS 443 → proxy :8001 (fenix-v3)","server":"/var/www/fenix-v3/pos/","django_check":"0 errors (1 silenced)","redis":"prefix pos:, namespace odvojen"},"kategorije_score":{"model_arhitektura":{"score":"7/10","sto_je_dobro":["POSReceipt: weise3_id + bunker_seal_id + VIVUS lifecycle — ZAKON 27 compliant","POSZapisnik: weise3_id + bunker_seal_id — ZAKON 27 compliant","POSReceiptItem: FK model (ne samo JSON) — normaliziran","POSComplaint + POSImpression: kompletni pravni modeli","1200 LOC models.py — 17 modela"],"sto_fali":["POSCompany: nema weise3_id, bunker_seal_id — ZAKON 27 kršenje","POSTerminal: nema weise3_id, bunker_seal_id — ZAKON 27 kršenje","POSCashier: nema weise3_id, bunker_seal_id — ZAKON 27 kršenje","POSSession: nema weise3_id, bunker_seal_id — ZAKON 27 kršenje","POSProduct: nema weise3_id, bunker_seal_id — ZAKON 27 kršenje","POSComplaint: nema weise3_id (ima seal_token koji nije isti) — ZAKON 27","Dual storage: POSReceipt.items JSONField + receipt_items FK — cleanup pending","POSLoyaltyCard model nedostaje (alat postoji, model ne)","POSAppointment model nedostaje (has_appointments config, model ne)","inventory.InventoryItem FK ne postoji u pos/ (cross-app dependency stub)"]},"alati_sustav":{"score":"9/10","sto_je_dobro":["BasePOSAlat + POSAlatiRegistry — Module+ singleton pattern","@alat dekorator — auto-registration na import","Lifecycle hooks: open/add_item/payment/finalize/fiscalized/print/session_close","25+ alata registriranih: fiskal × 8 zemalja, payment × 5, utility × 11, zapisnici × 7","entity_types filter — alat zna koji tip pravne osobe ga koristi","offline_capable flag — jasno odvojen online/offline","config_schema JSON Schema po alatu"],"sto_fali":["on_demand() metoda u BasePOSAlat nije definirana (samo u zapisnici_alati) — nije u base","POSLoyaltyCard model nedostaje za loyalty alat","Fiskal_multi (DE/AT/SI/IT/FR/NL) su demo-only — produkcijski certifikati fale","Propter.io e-Račun integracija stub — API token nije konfiguriran","Stripe Terminal je stub — location_id/API key fale"]},"omega_engine":{"score":"8/10","sto_je_dobro":["Kompletni lifecycle (6 faza) s error handling per-alat","WeisE3™ 9D hash: WEISE3::sha3(receipt_data)::creator::ctx::FENIX2026","BunkerSeal BPZ-9 L2: BPZ9::L2::weise3::JIR::FENIX2026","VIVUS lifecycle: DRAFT→ISSUED→FISCALIZED→ARCHIVED","EntityAdapter validacija per-entity (OIB, limiti, exempt check)","Training mode i fiscal_exempt mode odvojeni","_push_to_brsljani_async (ZAKON 2 + ZAKON 17 — thread async write)"],"sto_fali":["BunkerSeal je samo L2 (9 slojeva BPZ-9 nije implementiran — L0-L8)","ZAKON 3 — Trojna pohrana: samo Bršljan noga, nema Krunica niti Dvorac write u omega_engine","receipt_items.count() u _compute_weise3 radi N+1 query (bez select_related)","_push_to_brsljani_async koristi threading.Thread — trebalo bi Celery task"]},"pwa_offline":{"score":"7/10","sto_je_dobro":["Service Worker v2 (cache-first statika, queue POST)","Dexie.js IndexedDB: receipts, sync_queue, products, sessions, settings","Background Sync API","Offline badge visible u UI","Offline-first structure"],"sto_fali":["CDN u kasa.html: Tailwind, HTMX, Alpine.js, Dexie — ZAKON 29 + ne radi offline ako CDN nije u SW cache","SW cache list ne uključuje CDN URL-ove eksplicitno","OPFS nije implementiran (Dexie IndexedDB za write-heavy workloade — N+3 sprint)","Manifest ikona /pos/static/pos/omega/icon-192.png — staticfiles collectstatic treba check"]},"fiskalizacija":{"score":"6/10","sto_je_dobro":["fiskal_hr: FINA CIS ZKI+JIR, SOAP stub, ZKI RSA-SHA1 MD5","Celery task: fiscalize_receipt + retry 5x + fiscal_retry_count","fiscal_last_error za debug","fiskal_multi: 8 zemalja struktura (DE/AT/SI/IT/FR/NL/HR demo+stub)","Fiscal exempt (udruge, OPG paušal)"],"sto_fali":["FINA cert upload i konfiguracija — produkcija nije živa, demo only","ZKI implementacija u pos/fiscal/hr/zki.py treba produkcijski RSA certifikat","DE TSE demo_mode:true — nema produkcijskog TSE hardware API","AT RKSV AES-256 chain — stub","SI FURS TRR+EOR — stub","Nema fiskal healthcheck endpoint (je li FINA dostupna?)","e-Račun XML generacija (eracun_hr alat) je parcijalna — Propter integracija nedovršena"]},"ai_sloj":{"score":"8/10","sto_je_dobro":["Anomaly Detector: 6 tipova detekcije (cancellation, split abuse, cashier outlier, round amounts, off-hours, Z-report)","Voice Order Intake: word scan (fast) + DeepSeek fallback (smart) + HR/DE/EN stem","Upsell Engine: combo analysis + time-of-day boost","Celery Beat: run_anomaly_detection svake 6h","Benchmark Service: k-anonimnost min 5 tvrtki, industry comparison"],"sto_fali":["ZAKON 31: order_intake.py ne prolazi kroz SemanticStripper — direktno parsira text","AI Haiku integracija: anomalija je statistička, ne LLM — trebao bi Haiku za sumiranje anomalija","Federated Learning nije implementiran (budući sprint)","Voice Order Intake nema mikrofon UI na kasa.html (dugme postoji u plan, nije implementirano)"]},"ux_kasa":{"score":"7/10","sto_je_dobro":["Gold dark theme konzistentno kroz čitavu kasu","HTMX lazy-load paneli","Toast notifikacije","Responsive (mobile + desktop)","VIVUS progress bar widget","Onboarding tour (5-step)","Alati tile grid — vizualni toggle aktivnih alata","Split payment UI"],"sto_fali":["Produkt pretraživanje — nema live-search input (barkod API postoji, ali UI je spor)","Tablet-optimizirani layout za 10-inch iPad — grid je responsive ali nije optimiziran","Kitchen Display System (KDS) — narudžbe ne idu na kitchen screen via WebSocket","Customer-facing display (second screen) — ne postoji","QR Menu (gost skenira stol, naruči sam) — alat config postoji, view nije","Tip jar UI na kasi — tip field na modelu, ali UI za unos nije na glavnom screenu","Shortcut keyboard (F1-F9 za artikle) — nema","Tabla prikaz stola — ima 'has_tables' u config, TableView implementiran"]},"sigurnost":{"score":"7/10","sto_je_dobro":["WebAuthn biometric login (Android/iOS) — POSCashier model ima webauthn_credential_id","PIN login (PBKDF2-SHA256 100000 iteracija)","HTTPS + HSTS + nginx rate limiting","X-Frame-Options: SAMEORIGIN","X-Content-Type-Options: nosniff","Session-based auth (Django session)"],"sto_fali":["ZAKON 29: CSP header nije definiran u nginx za genesispos.online (fenix-v3 nema CSP middleware za POS)","CDN dependency: Tailwind/HTMX/Alpine iz CDN — nema SRI hash atributa","FenixVault TEE: PIN je PBKDF2 (good), ali key je u Django DB, ne u hardver TEE","Cashier session timeout nije konfiguriran (default Django session 2 tjedna)"]},"zakon_compliance":{"score":"6/10","sto_je_dobro":["ZAKON 2 (Bršljan): _push_to_brsljani_async u OmegaEngine","ZAKON 17 (BORG): ne šalje push direktno, piše i čeka pull","ZAKON 27: POSReceipt + POSZapisnik imaju weise3_id + bunker_seal_id + created_at","ZAKON 29: HTTPS + HSTS + security headers (parcijalni)","ZAKON 32: commit ca8bcfe ima chain entry c0076"],"sto_fali":["ZAKON 3 (Trojna pohrana): OmegaEngine nema Krunica + Dvorac write","ZAKON 27: 8 modela nemaju weise3_id + bunker_seal_id (Company, Terminal, Cashier, Session, Product, Category, Complaint, Impression)","ZAKON 28: nema Celery cleanup task za expired/archived receipts","ZAKON 29: CSP header fali za genesispos.online","ZAKON 31: order_intake.py ne ide kroz SemanticStripper","ZAKON 33: CDN u kasa.html radi offline bez SW CDN cache"]},"eu_compliance":{"score":"8/10","sto_je_dobro":["Zakon ZZP čl.10: Knjiga žalbe implementirana (POSComplaint, POSZapisnik)","B2B e-Račun flag: is_r1, buyer_oib, buyer_name, buyer_address","Multi-country fiskal: 8 zemalja u alat registru","Gotovinski limit: daily_cash_limit u EntityConfig (HR: 15000 EUR)","Carinska i inspekcijska kontrola: zapisnik modali","FINA certifikat upload: POSCompany.fiscal_cert FileField","PDV stope po zemlji: tax_rates JSONField u POSCompany"],"sto_fali":["PEPPOL NL integracija stub — NLCIUS format nije generiran","FatturaPA IT stub — SDI integracija nije živa","Chorus Pro FR — CTC integracija stub","EU eReceipt standard (EHF3.0) nije implementiran","DSFinVK export za DE (TSE audit export) — samo hash, nema CSV export","eVAT za OSS (One Stop Shop za EU prodaju) — nije"]}},"ukupni_score_trenutno":"7.3/10","cilj":"13/10 (izlazi iz skale — znači da je nezamjenjiv, ne samo odličan)","plan_sprintovi":{"sprint_p0_hitno_odmah":{"naziv":"Sigurnosni minimum + ZAKON temelji","trajanje":"1 tjedan","zadaci":[{"id":"P0-1","naziv":"ZAKON 29: CSP header za genesispos.online nginx","opis":"Dodati Content-Security-Policy u nginx genesispos config. script-src 'self' za CDN SRI ili lokalni bundle.","prioritet":"P1","fajl":"/etc/nginx/sites-enabled/genesispos"},{"id":"P0-2","naziv":"CDN → lokalni bundle (Tailwind build + HTMX + Alpine lokalno)","opis":"npm run build Tailwind CSS → /var/www/fenix-v3/pos/static/pos/omega/styles.min.css. HTMX + Alpine.js skinuti u static. Ukloniti CDN linkove iz kasa.html. SW cache lista dodati lokalne fajlove.","prioritet":"P1","fajl":"pos/static/pos/omega/"},{"id":"P0-3","naziv":"collectstatic + provjera ikonice","opis":"venv/bin/python manage.py collectstatic --noinput. Provjeriti icon-192.png postoji. SW cache list kompletna.","prioritet":"P1"},{"id":"P0-4","naziv":"ZAKON 31: SemanticStripper u order_intake.py","opis":"from core.omega.semantic import SemanticStripper. U parse() → strip_auto(text, 'text/plain', 'pos_voice') PRIJE word_scan i AI fallback.","prioritet":"P2","fajl":"pos/ai/order_intake.py"}]},"sprint_s1_zakon27_migracija":{"naziv":"ZAKON 27 — Svi modeli dobivaju weise3_id + bunker_seal_id","trajanje":"3 dana","zadaci":[{"id":"S1-1","naziv":"Migration: weise3_id + bunker_seal_id na 8 modela","modeli":["POSCompany","POSTerminal","POSCashier","POSSession","POSProduct","POSCategory","POSComplaint","POSImpression"],"sql_pattern":"ALTER TABLE pos_poscompany ADD COLUMN weise3_id VARCHAR(64) DEFAULT '' NOT NULL; CREATE INDEX ...","django_fields":"weise3_id = models.CharField(max_length=64, blank=True, default='', db_index=True)\nbunker_seal_id = models.CharField(max_length=64, blank=True, default='', db_index=True)","prioritet":"P1"},{"id":"S1-2","naziv":"Signal: auto-populate weise3_id na save() za svaki model","opis":"pos/signals.py: @receiver(pre_save). Ako weise3_id prazno → compute iz primary key + naziv + created_at. Koristiti BasePOSAlat.weise3() helper.","prioritet":"P1","fajl":"pos/signals.py"},{"id":"S1-3","naziv":"Data migration: popuniti weise3_id na postojećim zapisima","opis":"RunPython migracija: za svaki POSCompany/Terminal/... koji ima prazan weise3_id → generiraj i spremi.","prioritet":"P1"}]},"sprint_s2_trojna_pohrana":{"naziv":"ZAKON 3 — Trojna pohrana u OmegaEngine","trajanje":"2 dana","zadaci":[{"id":"S2-1","naziv":"OmegaEngine: Krunica write u finalize_receipt()","opis":"Nakon WeisE3 compute → import krunica API → write ChainBlock s receipt hash. Ne blokira main thread (Celery task).","fajl":"pos/services/omega_engine.py","prioritet":"P2"},{"id":"S2-2","naziv":"Celery task: push_receipt_to_trojna","opis":"Celery task koji prima receipt_pk, čita iz DB, piše u Krunica + Bršljan. OmegaEngine ga triggera async. Zamjena za threading.Thread.","fajl":"pos/tasks.py","prioritet":"P2"}]},"sprint_s3_kasa_ux":{"naziv":"Kasa UX — 10/10 brzina, 0 klikova za tipičnu narudžbu","trajanje":"1 tjedan","zadaci":[{"id":"S3-1","naziv":"Live search produkata — Fuse.js fuzzy u IndexedDB","opis":"Kasa input polje: korisnik tipka → Fuse.js pretražuje lokalnu products tablica u Dexie. Instant results bez server call. Barkod scan → isti endpoint.","fajl":"pos/static/pos/omega/app.js","prioritet":"P1"},{"id":"S3-2","naziv":"Voice Order dugme na kasi (mikrofon icon)","opis":"Speech Recognition API (Web Speech API) → OrderIntake.parse() → dodaj stavke. Dugme u nav baru kasa.html.","fajl":"pos/templates/pos/omega/kasa.html + app.js","prioritet":"P1"},{"id":"S3-3","naziv":"Upsell widget (0-click prijedlozi)","opis":"Nakon svake dodane stavke: HTMX GET /omega/api/upsell/?items=... → partial s 3 kartice prijedloga ispod receipt panela. Tap = dodaj stavku.","fajl":"pos/templates/pos/omega/partials/ + views_omega.py","prioritet":"P2"},{"id":"S3-4","naziv":"Tip jar UI na receipt panelu","opis":"Ispod totala: 3 brzodugme (10%, 15%, 20%) i custom unos. Dodaje se u receipt.tip, recalculate(), prikazuje total.","prioritet":"P2"},{"id":"S3-5","naziv":"iPad-optimizirani layout (grid 3 kolone)","opis":"kasa.html: @media (min-width: 768px) → 3-kolona grid: lijevo katalog, sredina receipt, desno payment/alati. Tailwind md:grid-cols-3.","prioritet":"P2"},{"id":"S3-6","naziv":"Keyboard shortcuts F1-F9 + Num Pad unos količine","opis":"keydown listener: F1-F9 → prvih 9 artikala kategorije. Num pad: Enter = potvrdi, Escape = odustani od stavke.","prioritet":"P3"}]},"sprint_s4_ai_upgrade":{"naziv":"AI Sloj — od statistike do LLM inteligencije","trajanje":"1 tjedan","zadaci":[{"id":"S4-1","naziv":"Haiku anomalija narator","opis":"Anomaly Detector vraća statistiku. Dodati Haiku poziv koji pretvori listu anomalija u HR/DE čitljivi tekst: 'Blagajnik Marko stornirao je 12% bona - uobičajeno je 2%.'. Šalje na WhatsApp vlasnika (WAHA).","fajl":"pos/ai/anomaly_detector.py","prioritet":"P1"},{"id":"S4-2","naziv":"AI Smart Pricing: time-based auto-discount","opis":"POSPricingRule model postoji. Celery Beat svaki sat: provjeri 'happy hour' pravila. Auto-apply discount na pogođene kategorije. UI: vlasnik definira pravilo (pon-pet 15-17h: 20% na kafu).","prioritet":"P2"},{"id":"S4-3","naziv":"Z-report AI summary (kraj dana)","opis":"Na session close: Haiku analizira dnevni promet, generira 3-rečenični sažetak. Vlasnik dobiva WhatsApp: 'Danas +15% vs utorak. Najprodavaniji: espresso. Anomalija: 2 storna kasno navečer.'","prioritet":"P2"}]},"sprint_s5_eu_killer_features":{"naziv":"EU #1 Feature Set — ono što konkurencija nema","trajanje":"2 tjedna","zadaci":[{"id":"S5-1","naziv":"QR Menu — gost naruči s mobitela","opis":"Svaki stol ima QR kod. Gost skenira → /public/menu/{terminal_id}/{table_id}/ → vidi kategorije + artikle. Tap → narudžba ide u kasu. Cashier vidí 'QR narudžba stol 5'. Model: POSQROrder.","prioritet":"P1"},{"id":"S5-2","naziv":"Loyalty Program — kartice i bodovi","opis":"POSLoyaltyCard model (card_number, customer_name, points, tier, weise3_id). LoyaltyAlat v2: on_receipt_finalize → points += total * rate. UI: blagajnik skenira karticu ili unosi broj.","prioritet":"P1"},{"id":"S5-3","naziv":"Live KPI Dashboard — real-time analitika","opis":"Novi view /pos/omega/dashboard/. HTMX poll svakih 30s. Prikazuje: dnevni prihod, broj bona, prosječna vrijednost, top 5 artikala, tjedna usporedba. Telemetrija iz POSPulseEvent.","prioritet":"P1"},{"id":"S5-4","naziv":"Multi-terminal sync (1 lokal, više kasa)","opis":"Redis pub/sub po company_id channel. Kad kasa 1 fiskalizira → Redis publish → kasa 2 osvježi stol status. Offline: merge pri reconnect (CRDT semantika — last-write-wins za status, append-only za items).","prioritet":"P2"},{"id":"S5-5","naziv":"Kitchen Display System (KDS) — WebSocket narudžbe","opis":"Nova stranica /pos/kds/{terminal_id}/ — screen u kuhinji. Django Channels WebSocket. Kad blagajnik pritisne 'Pošalji narudžbu' → WS event → KDS screen prikaže stavke. Tap stavke = ready.","prioritet":"P2"},{"id":"S5-6","naziv":"CSV/Excel product import","opis":"View /pos/omega/import/products/. Pandas CSV parse. Batch POSProduct create. Validacija: naziv + cijena obvezno. Preview before import. 1000 artikala u <5s.","prioritet":"P2"}]},"sprint_s6_fenix_inovacije":{"naziv":"FENIX inovacije potpuna integracija","trajanje":"1 tjedan","zadaci":[{"id":"S6-1","naziv":"BPZ-9 L0-L8 kompletni za POSReceipt","opis":"Trenutno samo L2. Implementirati puni BPZ-9 chain u BunkerSealAlat v3: L0 checksum, L1 HMAC, L2 WeisE3, L3 timestamp, L4 sequence, L5 Ed25519 (FenixVault TEE), L6 Bršljan gossip, L7 Krunica anchor, L8 DokArh entry.","prioritet":"P2"},{"id":"S6-2","naziv":"FenixVault TEE za cashier auth","opis":"WebAuthn već postoji. Upgrade: Ed25519 extractable:false za PIN zamjenu. Cashier login = biometrics → privkey nikad ne izlazi iz TEE. PIN ostaje kao fallback.","prioritet":"P2"},{"id":"S6-3","naziv":"WeisE3λ™ formalni dokaz za svaki bon","opis":"Na FISCALIZED event: generirati WeisE3λ SVJEDOK entry. Iste ZAKON 3 signature koji kaže: bon X je platili Y, iznos Z, JIR W — matematički dokazivo, ne samo hash. Dostupno na /v/{weise3_id}.","prioritet":"P2"},{"id":"S6-4","naziv":"Pocket Mode kompletna: /r/{weise3_id} receipt stranica","opis":"PocketAlat v2 generira URL koji se razrješava na javnu stranicu. View /r/{id}/ → prikaže digitalni račun bez logina (mobitel kupca). QR na bonu. PDF download.","prioritet":"P1"},{"id":"S6-5","naziv":"VIVUS ZAKON 28 — cleanup archived receipts","opis":"POSReceipt.expires_at polje (NULL = ne istječe, puno = privremeni/obuka). Celery Beat cleanup task za is_training receipts: delete after 30 dana. VIVUS ARCHIVED → brisanje.","prioritet":"P3"}]},"sprint_s7_produkcijska_fiskalizacija":{"naziv":"Produkcijska fiskalizacija — stvarni novac","trajanje":"Ovisi o FINA certifikatu","preduvjeti":["FINA .p12 certifikat od kupca","Registracija u ePorezna","Poslovni prostor oznaka"],"zadaci":[{"id":"S7-1","naziv":"FINA CIS onboarding wizard","opis":"Vodič za vlasnika kroz 5 koraka: 1. Uploadaj .p12, 2. Unesi lozinku, 3. Unesi PP oznaku, 4. Test fiskalizacija (demo bon), 5. Potvrdi (produkcija ON). Nakon koraka 5: fiscal_enabled=True.","prioritet":"P1"},{"id":"S7-2","naziv":"ZKI implementation audit","opis":"pos/fiscal/hr/zki.py: verificirati da RSA-SHA1 + MD5 truncate na 32 znaka odgovara FINA specifikaciji. Testirati s FINA demo certifikatom.","prioritet":"P1"},{"id":"S7-3","naziv":"Fiscal healthcheck endpoint + UI indikator","opis":"GET /pos/api/fiscal/health/ → pings FINA CIS, vraća latenciju. UI: zelena/crvena točka na nav baru kase. Cache 60s u Redis.","prioritet":"P2"}]},"sprint_s8_EU_integracije":{"naziv":"EU #1 — jedini POS sa svim EU fiskal standardima živo","napomena":"Svaka zemlja je poseban sub-sprint. Stub → demo → live.","trajanje":"Kontinuirano","zadaci":[{"id":"S8-DE","naziv":"DE TSE: hardware API integracija (Fiskaly/DRB)","prioritet":"P2"},{"id":"S8-AT","naziv":"AT RKSV: A-Trust certifikat + AES-256 Signaturwert chain","prioritet":"P3"},{"id":"S8-SI","naziv":"SI FURS: TRR+EOR API test","prioritet":"P3"},{"id":"S8-IT","naziv":"IT FatturaPA: SDI XML generacija","prioritet":"P3"},{"id":"S8-NL","naziv":"NL PEPPOL: NLCIUS BIS3 XML","prioritet":"P3"},{"id":"S8-FR","naziv":"FR Chorus Pro: CTC/e-reporting","prioritet":"P3"}]}},"prioritizacija_1310":{"sto_ce_napraviti_razliku":["QR Menu = kupac naruči sam, blagajnik samo potvrdi = 0 klik za kafić","Voice Order = blagajnik kaže 'dva espresso, jedna voda' = ispravna narudžba automatski","Pocket Mode receipt = kupac dobiva digitalni račun na mobitel = nema papira","Haiku Z-report WhatsApp = vlasnik u 23:00 dobiva poruku 'Danas 1240 EUR...' = mir","Loyalty = kupac se vraća jer ima bodove = retention > acquisition","Jedini POS s Knjigom žalbe, Zapisnicima policije/carine kao MODULE = legal compliance iz POS-a"],"nezamjenjivost_formula":"Neka konkurencija ima fiskal. Nema: Knjiga žalbe + Zapisnici + WeisE3 DokArh + QR Menu + Voice + Pocket + 8 zemalja + AI Anomaly — SVE U JEDNOM."},"otvoreni_threadovi":["DNS/SSL: genesispos.online SSL LIVE (certbot potvrđen)","collectstatic: staticfiles/pos postoji, icon provjera treba","CDN lokalizacija: Tailwind build, HTMX + Alpine lokalno","Produkcijski fiskal: FINA cert vlasnika","NFC test: Android Chrome 89+ fizički uređaj"],"chain_plan":{"c0097":"ovaj dokument (analiza + plan)","c0098_c0102":"rezervirani za CC1 PWA planove (prethodni kontekst)","c0115":"Sprint P0 (CSP + CDN)","c0116":"Sprint S1 (ZAKON 27 migracija)","c0117":"Sprint S3 (Kasa UX)","c0118":"Sprint S5-QR (QR Menu)","c0119":"Sprint S5-Loyalty","c0120":"Sprint S7 (FINA onboarding wizard)"},"url":"https://genesis.limit-connect.com/v/cc27df68e08bf172ae209144ae9fc710dae05b042ee5fae4720bd647a31d19f8"}}