{"id":"c0977","filename":"c0977_fenixv4_invoice_portal_html.dok.json","weise3_id":"WEISE3::7016a8577b65bbe157c1070e1cd1ed19::CC::dokarh::FENIX2026","tip":"implementacija","naziv":"Fenix V4 Invoice Portal — javni HTML prikaz + Potvrdi primitak","kreator":"genesis","datum":"","snippet":"","status":"","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"implementacija","naziv":"Fenix V4 Invoice Portal — javni HTML prikaz + Potvrdi primitak","sustav":"fenix-v4","zakon":["ZAKON_27","ZAKON_3","ZAKON_37"],"commit":"7cf6c35","faze":{"f1_modeli":"DONE — Invoice, InvoiceLine, InvoiceAcknowledgement (ZAKON 27: weise3_id+bunker_seal_id+created_at)","f2_migration":"DONE — 0013_invoicing.py (6 tablica, indeksi)","f3_pdf":"DONE — WeasyPrint PDF via /portal/{token}/pdf","f4_portal_html":"DONE — GET /api/v4/invoicing/portal/{token}/view → HTML (280 linija, gold design)","f5_bilingual":"DONE — HR/DE automatski prema client_country + portal_lang","f6_acknowledge":"DONE — POST /portal/{token}/acknowledge → InvoiceAcknowledgement (idempotentno)","f7_toast":"DONE — fetch + toast animacija + zamjena sekcije s hash dokazom","f8_view_count":"DONE — Invoice.view_count++ na svakom otvaranju","f9_template_fix":"DONE — Jinja2Templates API fix (request= keyword, ne positional)","f10_test":"DONE — 200 HTTP na test fakturi, HTML renderan ispravno"},"endpointi":["GET /api/v4/invoicing/portal/{token}/view → HTMLResponse (portal)","GET /api/v4/invoicing/portal/{token} → InvoicePortalOut (JSON)","POST /api/v4/invoicing/portal/{token}/acknowledge → AcknowledgementOut","GET /api/v4/invoicing/portal/{token}/pdf → PDF stream"],"dizajn":"Gold gradient header, status dot, HR/DE bilingual, mobile-first, light theme, dark toggle","sigurnost":"client_token UUID (UNIQUE), bez auth na javnom linku, IP+timestamp u acknowledge","napravljeno":"2026-05-18","agent":"CC claude-sonnet-4-6","weise3_id":"WEISE3::7016a8577b65bbe157c1070e1cd1ed19::CC::dokarh::FENIX2026"}}