{"id":"c1205","filename":"c1205_fiskal_sprint_v1.dok.json","weise3_id":"","tip":"fiskal_implementacija","naziv":"FISKAL Sprint v1 — FINA certifikat i fiskalizacija u fenix-v4","kreator":"CC (Claude Code)","datum":"2026-05-31","snippet":"","status":"LIVE","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"fiskal_implementacija","naziv":"FISKAL Sprint v1 — FINA certifikat i fiskalizacija u fenix-v4","datum":"2026-05-31","status":"LIVE","verzija":"1.0","kontekst":{"odluka":"FISKAL otvoren tek kad ULAZ dokazan (Korak 5a) — redoslijed iz REKAPITULACIJE","izvor":"Port iz fina-connect/fiskalizacija/fisk.py (dokazano u produkciji)","temelj":"FiscalConfig na company_wid (dijeljeni sloj pravne osobe, ne POS-specifičan)"},"sto_je_izgradjeno":{"server":"MAR (212.227.181.201)","fajlovi":["/var/www/fenix-v4/fiscal/__init__.py","/var/www/fenix-v4/fiscal/fisk.py         — engine: load_p12, generate_zki, send_to_fina, ping_fina","/var/www/fenix-v4/fiscal/models.py       — FiscalConfig (SQLAlchemy, Fernet lozinka, ZAKON 27)","/var/www/fenix-v4/fiscal/service.py      — get_config, health, zki_offline, jir_online, save_cert","/var/www/fenix-v4/fiscal/router.py       — 5 endpointa","/var/www/fenix-v4/migrations/versions/0023_fiscal_config.py","/var/www/fenix-v4/certs/fiscal/           — dir za .p12 certifikate"]},"endpointi":{"POST /api/v1/fiscal/cert/upload":"Upload .p12, provjera prije pohrane, Fernet lozinka, expiry iz P12","POST /api/v1/fiscal/cert/test":"Ping FINA CIS EchoRequest — bez slanja računa","GET  /api/v1/fiscal/health/{wid}":"Health: cert valid, dani do isteka, pending racuni","POST /api/v1/fiscal/zki":"ZKI offline — ne treba mrežu, tiska se odmah na račun","POST /api/v1/fiscal/jir":"JIR online — FINA CIS, zakonski rok 48h"},"kljucne_odluke":{"model_lokacija":"company_wid (weise3_id tvrtke) = primarni ključ — ne company.id UUID","lozinka":"Fernet enkriptirana (AES-128-CBC, ključ = SHA256(SECRET_KEY)) — nije goli CharField","cert_dir":"/var/www/fenix-v4/certs/fiscal/ — odvojen od ostatka media","zki_offline":"generate_zki radi bez mreže — ZKI na račun odmah, JIR u roku 48h","engine":"Portano iz fina-connect bez Django ovisnosti — čisti Python"},"zakon":["ZAKON 0","ZAKON 11","ZAKON 27","ZAKON 29"],"vau_efekt":{"pilot_firme":["Širok Šor","OPG Kruljac Slađana"],"flow":"Upload .p12 → test ping → ZKI offline na blagajni → JIR FINA CIS","offline_korist":"ZKI lokalno bez interneta, JIR queue kad mreža dostupna"},"dokazano":{"import_test":"from fiscal.fisk/models/service/router → import ok","endpoints_count":"5 endpointa registrirana","migration":"alembic upgrade 0023 → tablica fiscal_config kreirana","servis":"gunicorn-fenix-v4 restart → active","health_endpoint":"GET /api/v1/fiscal/health/test → 401 (zahtijeva token, ispravno)"},"otvoreno":{"5b_zicanje":"require_online() na sve user_id-dependent rute (7 modula) — nije blokiralo FISKAL","jir_queue":"Celery Beat retry za pending JIR-ove (zakonski rok 48h) — Korak 2 FISKAL","html_widget":"fiscal_health widget u POS HTML sučelju — Korak 3 FISKAL","pilot_test":"Stvarni .p12 certifikat Širok Šor / OPG Kruljac Slađana"},"autor":"CC (Claude Code)","chain_prev":"c1204_ulaz_korak5a_require_online.dok.json"}}