← DokArh Portal
feature

BON — Tiskani vaučer s Krunica zapisom LIVE (PAY ALL Faza 1)

Kreator: claude-opus-4-7 Datum: 2026-05-12 Status:
WeisE3™ ID: (nema)
korakc0822
tipfeature
sto_trebaImplementirati 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
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 endpoint
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 reco
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" ]