← DokArh Portal
plan

c0161 — vetra.live Produkcija + evalidator KrunicaChain Bridge

Kreator: Ivan Brtan + CC Datum: 2026-05-08 Status: ZAVRSENO
WeisE3™ ID: (nema)
tipplan
sto_treba1. Pokrenuti vetra.live u produkciju (BILLING_ENABLED, email, Stripe). 2. Spojiti KrunicaChain: jedna istina za vetra.live i evalidator.eu — svaki VetraDocument kreira DokArh entry.
prioritetP0 paralelno s c0160
ne_dira[ "sati.ink worktime", "fina-connect", "arhiva PWA" ]
kontekst{ "vetra_stanje": "LIVE (upravo startana 2026-05-08, bila inactive 2 dana). 3 tenanta, 57 dok, 5 KrunicaChain blokova.", "billing": "BILLING_ENABLED=False u .env — naplata isključena, plan upgrades ne rade", "email": "smtp.gmail.com:587 konfiguriran s fina.connect.online@gmail.com, ali EMAIL_HOST_PASSWORD nije u .env — nedostaje", "evalidator_dokarh": "DokArh model postoji u fenix-v3/evalidator/models.py (1 zapis). Ima payload_hash, envelope_hash, chain integrity, Polygon fields.", "kr
faze[ { "id": "V0", "naziv": "Vetra EMAIL aktivacija (blocker za sve ostalo)", "opis": "Bez emaila ne rade: registracija, invite, billing obavijesti.", "koraci": [ "Gmail App Password: Ivan otvori myaccount.google.com → Security → 2-Step Verification → App Passwords → kreirati za 'vetra-live-smtp'", "Upisati u /var/www/vetra/.env: EMAIL_HOST_PASSWORD=<app_password>", "Test: cd /var/www/vetra && venv/bin/python3 manage.py shell -c \"from django.core.mail import sen
commit_plan[ "fix(vetra): V0 aktivirati Gmail SMTP email", "feat(vetra): V1 BILLING_ENABLED=True + commitment doc test", "feat(evalidator): V4 novi /api/v1/archive/ingest/ endpoint + DokArh ZAKON 27 migracija", "feat(vetra): V5+V6 sync_to_evalidator Celery task + nova polja na VetraDocument", "feat(vetra): V7 retroaktivna sinkronizacija 57 dokumenata", "feat(evalidator): V8 Public Explorer unified view", "docs(chain): c0161 vetra-evalidator bridge DONE" ]
ivan_akcije[ "Gmail App Password za fina.connect.online@gmail.com → staviti u /var/www/vetra/.env EMAIL_HOST_PASSWORD", "DNS A zapis status.vetra.live → 37.27.248.86", "Stripe API key (kad bude — za budući payment flow, nije bloker za sad)" ]
vetra_online_odmah{ "sto_radi_sad": [ "POST /api/v1/scan/ — prima fajl, pečati, vraća seal ✅", "GET /verify/{seal}/ — javna stranica verifikacije ✅", "Widget.js — embed gumb na bilo koji web ✅", "Dashboard — 3 tenanta, 57 dokumenata, KrunicaChain ✅", "Trial 14 dana za nove registracije ✅", "Python SDK v1.0.0 u sdk/ direktoriju ✅" ], "blokeri_za_klijente": [ "Email (registracija ne šalje verification email) — V0", "Billing (plan upgrade UI radi, ali SEPA flow ne šalje email) —
zakonZAKON 0 (fizicka izolacija), ZAKON 2 (sve kroz Brsljani), ZAKON 3 (TROJNA POHRANA — svaki objects.create MORA imati get_trojna()!), ZAKON 17 (PULL only), ZAKON 27 (Model Trinity)
KRITICNO_ZA_CC{ "poruka": "ZAKON 3 — TROJNA POHRANA NIJE OPCIJA. Svaki model.objects.create() koji pohranjuje poslovne podatke MORA odmah pozvati get_trojna(). PostgreSQL = brzi upiti = SJENA. Krunica = jedina istina.", "greska_koju_cc_pravi": "CC pise objects.create() i smatra da je pohrana gotova. NIJE. Bez get_trojna() dokument postoji samo u bazi, nije u Krunicu ni Brsljanu.", "provjera": "grep -n 'objects.create' views.py — svaki redak mora imati odgovarajuci get_trojna() call ispod" }
ispravak{ "datum": "2026-05-08", "sto": "ZAKON 3 dodan u zakon polje — originalno izostavljen. V4 koraci vec imaju ZAKON_3_OBAVEZNO sekciju s primjerom koda." }
statusZAVRSENO
zavrseno_datum2026-05-08
faze_status{ "V0": "DONE - Gmail SMTP aktivan", "V1": "DONE - BILLING_ENABLED=True, load_dotenv(override=True) fix", "V2": "PENDING - Let's Encrypt maintenance (retry loop aktivan, nije nas bloker)", "V3": "DONE - arhitektura dokumentirana", "V4": "DONE - POST /api/v1/archive/ingest/ + ZAKON 3 Trojka (Genesis N1 + Brsljani N3)", "V5": "DONE - sync_to_evalidator Celery task, 3x retry, httpx", "V6": "DONE - VetraDocument: evalidator_dok_id + evalidator_verify_url + evalidator_weise3_id, migrati
kljucni_commitovi[ "88fc600 (V7 retroaktivni sync)", "migration 0007 (V6 polja)" ]