{"id":"c0159","filename":"c0159_digigraf_genesis_auth_bridge_plan_za_cc.dok.json","weise3_id":"WEISE3::c0159::digigraf_genesis_auth_bridge::CC_EXECUTOR::FENIX2026","tip":"PLAN_ZA_CC","naziv":"Digigraf Genesis Auth Bridge — 3 fixa za QR kampanju","kreator":"genesis","datum":"2026-05-08","snippet":"","status":"SPREMAN_ZA_IZVRSENJE","prev_weise3":"","bunker_l":"#00d4ff","full":{"weise3_id":"WEISE3::c0159::digigraf_genesis_auth_bridge::CC_EXECUTOR::FENIX2026","tip":"PLAN_ZA_CC","naziv":"Digigraf Genesis Auth Bridge — 3 fixa za QR kampanju","verzija":"1.0","datum":"2026-05-08","status":"SPREMAN_ZA_IZVRSENJE","prioritet":"P0_BLOKIRA_QR_KAMPANJU","kontekst":{"cilj":"Nakon ova 3 fixa: QR kod ide Stanku Stefanovu (FB grupa vozača). Vozač klikne → Genesis login → dashboard → šefu kaže 'uzmi dispo modul'. To je prodajni lijevak.","projekt":"/var/www/genesis/tahograf-mvp/","git_branch":"master","kljucni_fajlovi":{"genesis_auth":"/var/www/genesis/tahograf-mvp/pwa/genesis-auth.js","app_js":"/var/www/genesis/tahograf-mvp/pwa/app.js","dispatcher_js":"/var/www/genesis/tahograf-mvp/pwa/dispatcher.js","tahograf_api":"/var/www/genesis/tahograf-mvp/api/tahograf.py","genesis_api":"/var/www/genesis/api/genesis_auth.py"},"sto_vec_radi":{"getToken":"genesis-auth.js linija 121 — POSTOJI: localStorage.getItem('tg_session_token')","getWeise3":"genesis-auth.js linija 122 — POSTOJI: localStorage.getItem('tg_weise3_id')","popup_flow":"app.js linija 236-310 — implementirano, prima GENESIS_AUTH_RESULT poruku","mobile_redirect":"app.js linija 244-249 — implementirano, gl_return=1 handler","token_store":"Nakon Genesis login: tg_session_token + genesis_auth_v1 oba zapisana"}},"bug_1":{"naziv":"BroadcastChannel — popup se ne zatvara nakon login","fajl":"/var/www/genesis/tahograf-mvp/pwa/app.js","linija_problema":"~305: window.location.href = '/' — page reload, ali popup ostaje otvoren","simptom":"Vozač uspješno završi Genesis login u popup prozoru, ali popup ostaje otvoren. Korisnik mora ručno zatvoriti.","root_cause":"Nakon primanja GENESIS_AUTH_RESULT poruke, kod radi window.location.href = '/' ali NE zatvara popup prozor.","fix":{"gdje":"app.js, u onMsg async funkciji, PRIJE window.location.href = '/'","sto_dodati":"if (!popup.closed) popup.close();","kontekst_koda":"Nađi: 'localStorage.setItem(genesis_auth_v1' → idući redak je 'if (spinner)' → iza spinner.hidden = true dodaj popup.close()"},"test":"Nakon fixa: klikni Genesis login gumb → popup se otvori → logiraj se → popup se AUTOMATSKI zatvori → digigraf.online prikaže dashboard"},"bug_2":{"naziv":"Auth bridge — Genesis token → Tahograf API (poruke idu kao 'anonimno')","fajl":"/var/www/genesis/tahograf-mvp/api/tahograf.py","simptom":"Vozač je prijavljen s Genesis identity ali API pozivi na /api/v1/tahograf/* ne prepoznaju tko je on. Dispatcher vidi vozača kao 'anonimno'.","root_cause_istrazivanje":{"korak_1":"Pročitaj kako tahograf.py validira Authorization header: grep -n 'Authorization\\|Bearer\\|token\\|get_current' /var/www/genesis/tahograf-mvp/api/tahograf.py | head -30","korak_2":"Provjeri kako genesis_auth.py validira token: grep -n 'def.*token\\|verify.*token\\|session' /var/www/genesis/api/genesis_auth.py | head -20","korak_3":"Provjeri Redis gdje je token pohranjen: grep -n 'genesis:session\\|redis.*session' /var/www/genesis/api/genesis_auth.py | head -10"},"ocekivani_fix":{"opis":"tahograf.py treba imati dependency koji prima Bearer token → pita genesis Redis za session → vraća weise3_id vozača","pattern":"async def get_genesis_user(authorization: str = Header(None)) → dohvati genesis:session:{token} iz Redis DB4 → vrati weise3_id","gdje_koristiti":"Svaki tahograf endpoint koji treba znati tko je vozač: /fleet/join, /alarm, /driver/{id}/summary"},"napomena":"PROVJERI PRVO postoji li već ovaj bridge negdje u kodu prije pisanja novog. Možda je napola implementiran."},"bug_3":{"naziv":"SDK: getToken() + getWeise3() — provjera u dispatcher.js","vazna_napomena":"getToken() i getWeise3() POSTOJE u genesis-auth.js (linija 121-122). Bug je vjerojatno da dispatcher.js ne uključuje genesis-auth.js ili ima svoju verziju bez tih metoda.","istrazivanje":{"korak_1":"grep -n 'getToken\\|getWeise3\\|GenesisAuth\\|genesis-auth' /var/www/genesis/tahograf-mvp/pwa/dispatcher.html | head -20","korak_2":"grep -n 'getToken\\|getWeise3\\|GenesisAuth' /var/www/genesis/tahograf-mvp/pwa/dispatcher.js | head -20","korak_3":"head -5 /var/www/genesis/tahograf-mvp/pwa/dispatcher.html  # provjeri <script src='genesis-auth.js'>"},"ocekivani_fix":{"ako_genesis_auth_nije_includean":"Dodaj <script src='/genesis-auth.js'></script> u dispatcher.html PRIJE dispatcher.js","ako_dispatcher_ima_vlastitu_auth":"Zamijeni s pozivom na window.GenesisAuth.getToken() umjesto vlastite implementacije"}},"redoslijed_izvrsavanja":["PRVO: Istraži Bug 3 (dispatcher.html includes) — 10 min čitanja","ZATIM: Fix Bug 3 ako treba (dodaj script tag) — 5 min","ZATIM: Istraži Bug 2 (tahograf.py auth) — 15 min čitanja","ZATIM: Fix Bug 2 (genesis token bridge) — 30-60 min","ZADNJE: Fix Bug 1 (popup.close()) — 5 min","TEST: End-to-end flow vozač → Genesis login → dispatcher vidi ime"],"end_to_end_test":{"opis":"Nakon sva 3 fixa, testiraj ovaj flow:","koraci":["1. Otvori https://digigraf.online/ u inkognito prozoru","2. Klikni 'Prijava s Genesis ID-om'","3. Popup se otvori → logiraj se s testnim Genesis accountom","4. Popup se AUTOMATSKI zatvori (Bug 1 fix)","5. Dashboard se prikaže s ispravnim imenom/weise3_id (ne 'anonimno')","6. Otvori dispatcher.html → provjeri vidis li vozaca s imenom (Bug 2 fix)","7. U browser konzoli: window.GenesisAuth.getToken() → ne smije biti null (Bug 3)"]},"commit_format":"fix(digigraf): {opis} — feat(tahograf): {opis}","chain_entry_nakon":"Kreiraj c0160_digigraf_auth_bridge_done.dok.json s rezultatima","sto_dolazi_nakon":{"qr_kod":"digigraf.online/vozac?ref=STANKO → QR kod za FB grupu","stanko_post":"Ivan kontaktira Stanka Stefanova s linkom","kruljac_usbc":"100 USB-C čitača → distribucija kroz Robi Cesar mrežu","cilj_godisnji":"1000 dispo ureda × EUR 49/mj = EUR 49.000/mj"},"_chain_meta":{"prev_entry":"c0158_genesis_sso_c0150_sesija_20260508.dok.json","opp_seal":"WEISE3::c0159::AUTH_BRIDGE::FENIX2026","lanac_visina":159}}}