{"id":"c0822","filename":"c0822_bon_live.dok.json","weise3_id":"","tip":"feature","naziv":"BON — Tiskani vaučer s Krunica zapisom LIVE (PAY ALL Faza 1)","kreator":"claude-opus-4-7","datum":"2026-05-12T10:15:00Z","snippet":"","status":"","prev_weise3":"","bunker_l":"#00d4ff","full":{"korak":"c0822","tip":"feature","naziv":"BON — Tiskani vaučer s Krunica zapisom LIVE (PAY ALL Faza 1)","datum":"2026-05-12T10:15:00Z","autor":"claude-opus-4-7","sto_treba":"Implementirati prvi sloj PAY ALL sustava — tiskani bonovi (papirne novčanice) sa QR-om i Krunica zapisom. Bon = papirna 'robna mjenica' koju Cooperative izdaje, trgovac prima, kraj tjedna se reconcilira SEPA-om. Pravni okvir: čl. 36-44 ZOO (robna mjenica) + čl. 1009-1019 ZOO (bearer instrument) + čl. 84 ZPDV (VAT pri realizaciji).","sto_napravljeno":["Kreiran modul /var/www/genesis/api/bon.py (~530 linija) — koristi Z1 pristup (Genesis je ARK), integrira sa svim postojećim infrastrukturom:","  - EntityORM (tip='BON') za Krunica spremanje — bez novih tablica","  - core.weise3.sha3 za WeisE3 ID generaciju (FENIX prefiks)","  - services.qr_gen._qr_b64 za QR kodove","  - reportlab Canvas za PDF render (8 bonova/A4)","  - Bunker Seal placeholder (TODO: ML-DSA-65 stvarni)","  - Pydantic BaseModel za validaciju","9 endpointa LIVE na /api/v1/bon/:","  - POST /issue-batch — Coop izdaje N bonova istog apoena","  - GET /by-id/{w3} — info o bonu","  - GET /by-id/{w3}/pdf — pojedinačni PDF","  - GET /batch-pdf/{first}/{last} — batch PDF (8/A4)","  - POST /by-id/{w3}/redeem — trgovac primio","  - GET /reconciliation/{merchant} — lista za isplatu","  - POST /reconciliation/{merchant}/settle — Coop oznacio SEPA isplaceno","  - GET /pretraga — filter state/apoen/izdavatelj","  - GET /stats — agregirano","  - GET /health","Apoeni: 50c, 1€, 2€, 5€, 10€, 20€, 50€, 100€, 200€, 500€ (10 denominacija kao novčanice)","Sudac middleware whitelist: /api/v1/bon/ dodan u _PRESKOCI_PREFIKS","Genesis service restart 4× tijekom razvoja, sve LIVE","Skill kreiran: /var/www/genesis/.claude/skills/bon-issuance/SKILL.md (180 linija)","E2E test (11 testova): issue 10 bonova × 10€ = 100€, verify, redeem 2, reconciliation 20€, settle SEPA, double-redeem prevencija HTTP 409, pojedinačni PDF 14KB, batch PDF 127KB (2 stranice), pretraga state filter, final stats agregirano — SVI PROŠLI"],"fajlovi_dirnuti":["/var/www/genesis/api/bon.py (EU — novi, 530 lin)","/var/www/genesis/main.py (EU — register bon_router)","/var/www/genesis/services/sudac_middleware.py (EU — bon u _PRESKOCI_PREFIKS)","/var/www/genesis/.claude/skills/bon-issuance/SKILL.md (EU — novi)","/var/www/genesis/.venv/ (EU — pip install reportlab qrcode pillow)"],"test_e2e_rezultati":{"T1_issue_batch":"10 × 10€ = 100€ izdano","T2_verify":"state issued, chain verified","T3_redeem":"2 bona → state redeemed, merchant info zapisan","T4_reconciliation":"2 bona × 20€ pending za kafic-vladislavci-w3","T5_stats":"10 ukupno, 80€ u opticaju, 20€ realizirano","T6_double_redeem":"HTTP 409 — već realiziran (zaštita radi)","T7_pdf_pojedinacni":"14KB A4 PDF","T8_pretraga":"state filter vraća 2 redeemed","T9_settle":"SEPA-2026-05-12-TEST-001 — 2 bona reconciled","T10_post_settle_recon":"prazan list (correctly empty)","T11_batch_pdf":"127KB, 2 stranice, 8+2 = 10 bonova"},"endpointi_aktivni":["POST /api/v1/bon/issue-batch","GET  /api/v1/bon/by-id/{w3}","GET  /api/v1/bon/by-id/{w3}/pdf","POST /api/v1/bon/by-id/{w3}/redeem","GET  /api/v1/bon/batch-pdf/{first}/{last}","GET  /api/v1/bon/reconciliation/{merchant_w3}","POST /api/v1/bon/reconciliation/{merchant_w3}/settle","GET  /api/v1/bon/pretraga","GET  /api/v1/bon/stats","GET  /api/v1/bon/health"],"pravni_okvir_dokumentiran":{"ZOO_36_44":"Bearer voucher (robna mjenica)","ZOO_1009_1019":"Bearer instrument prijenos cesijom/indosamentom","ZPDV_84":"VAT obveza tek pri realizaciji (isporuci robe)","ZSPN_pragovi":"Hard cap planiran: €700 anonymous/dan, €7500 anon/mj, €9999 KYC light, €15000 KYC full + UKPN report","Direktiva_EU_2016_1065":"Voucher Directive — multi-purpose voucher (kategorizacija)"},"zakon_status":{"Z0":"OK — Genesis je ARK, BON je tip u postojećem .dokarh","Z1":"OK — koristi EntityORM, qr_gen, reportlab, NE novi infra","Z11":"OK — sudac whitelist dodan","Z16":"OK — ODJELO pattern (PDF + .dokarh JSON) — TODO embed","Z26":"OK — BonInfo, ReconciliationOdgovor, RedeemPayload Pydantic schemas","Z27":"OK — weise3_id + bunker_seal_id + nastao","Z32":"ovaj entry je sam dokaz"},"todo_sljedeca_iteracija":["Pravi ML-DSA-65 BunkerSeal (sada placeholder string)","ChainBlock auto-link na svaki state change","Bršljan eksplicitni push (sada auto kroz PULL 30s)","Hologram template u PDF (sada placeholder rect)","Embed .dokarh JSON u PDF via pdf_s_odjelo (ZUGFeRD/Factur-X)","OPG burza integracija — bon = način plaćanja unutar burze","Merchant POS PWA (UI za QR skener + redeem klik)"],"tagovi":["bon","payall-fazа1","robna-mjenica","krunica","pdf","qr","z16-odjelo","vladislavci-pilot"]}}