{"id":"c0962","filename":"c0962_genesis_inbox_arhiva_plan.dok.json","weise3_id":"c0962_genesis_inbox_2026_05_18","tip":"PLAN_ARHIVA","naziv":"Genesis Inbox — Globalni komunikacijski modul (svi sa svima, po filterima)","kreator":"Ivan + CC","datum":"2026-05-18","snippet":"","status":"PLAN — čeka sprint RACUNI da završi","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"PLAN_ARHIVA","naziv":"Genesis Inbox — Globalni komunikacijski modul (svi sa svima, po filterima)","weise3_id":"c0962_genesis_inbox_2026_05_18","verzija":"1.0","datum":"2026-05-18","autor":"Ivan + CC","status":"PLAN — čeka sprint RACUNI da završi","prioritet":3,"sustav":"fenix-v4","server":"EU (217.160.71.124) + NEW (31.70.90.84)","dir":"/var/www/fenix-v4/","sto_treba":"Zamijeniti WAHA/WhatsApp s vlastitim poslovnim komunikacijskim slojem koji ne ovisi ni o jednoj trećoj strani. Svaki korisnik u NO LIMIT ekosustavu ima inbox. Poruke su DokArh chain entriji — proof + komunikacija istovremeno. Delivery bez instalacije aplikacije.","zasto_ne_waha":["Meta može blokirati poslovni broj bez upozorenja — regulatorna ovisnost na tuđu infrastrukturu","Svaka poruka prolazi Meta serverima — poslovni dokazi ovise o trećoj strani","WAHA server = dodatna kompleksnost, održavanje, licenciranje — bez dugoročne vrijednosti"],"zasto_nas_sustav":["Poruka = DokArh proof (BunkerSeal + WeisE3) — auditabilno, nemoguće krivotvoriti","ref_weise3_id → svaka poruka direktno linkana na entitet (faktura, CMR, booking, vozilo)","Radi offline (QR token), radi bez smartphonea, radi bez interneta (carinik, vozač)"],"pogledi_iz_buducnosti":["Svaki dokument (faktura, ugovor, CMR) nosi Inbox thread uz sebe — komunikacija i dokaz su jedno","Carinik na granici skenira QR kamiona → prima poruku od vozača offline, bez 5G signala","Klijentski portal (/client/<token>/) postaje vlastiti inbox — bez registracije, bez lozinke"],"arhitektura":{"model":"GenesisMessage","polja":{"sender_weise3_id":"tko šalje (WeisE3 identitet — GenesisLogin)","receiver_weise3_id":"tko prima (osoba ili entitet)","channel":"inapp | email | push | sms | qr_callback","scope":"direct | workspace | company | domain | broadcast","topic_type":"obavijest | zadatak | dokument | alarm | chat","ref_weise3_id":"KLJUČ — vezano za koji .dok.json entitet","status":"sent | delivered | read | archived","expires_at":"ephemeral poruke (ZAKON 28 — obavezan cleanup task)","bunker_seal_id":"dokaz integriteta (ZAKON 27)","weise3_id":"ZAKON 27 — obavezno polje","created_at":"ZAKON 27 — obavezno polje"},"filteri":{"po_ulozi":["accountant","driver","worker","admin","guest","founder"],"po_domeni":["limit-connect.com","fina-connect.online","sati.ink","memio.farm","memio.pet","memio.world"],"po_kompaniji":"sender.company_weise3 = receiver.company_weise3","po_workspaceu":"isti workspace_id","po_entitetu":"sve osobe vezane za isti ref_weise3_id","po_hitnosti":"info | warning | critical (critical = svi kanali paralelno)","po_geografiji":"HR | DE | EU"}},"slojevi":{"sloj_1_api":{"opis":"V4 FastAPI endpoints","rute":["POST /api/v1/inbox/send","GET  /api/v1/inbox/           — moje poruke, filtrirano","GET  /api/v1/inbox/unread      — badge count za navigaciju","PUT  /api/v1/inbox/{id}/read","POST /api/v1/inbox/broadcast   — admin only, scope=domain"]},"sloj_2_delivery":{"opis":"Celery async delivery engine","kanali":{"inapp":"WebSocket/SSE push na aktivne sesije (trenutno)","email":"Dovecot SMTP na DE serveru (vlastiti, bez SendGrid)","web_push":"Web Push API — radi u pregledniku, nema AppStore, nema instalacije","qr_callback":"GenesisLogin offline token s porukom unutra"}},"sloj_3_fanout":{"opis":"Fan-out resolver — tko prima na osnovu filtera","kod":"def resolve_receivers(scope, filters): CompanyMember.objects.filter(company=filters['company'], role__in=filters['roles'])"},"sloj_4_chain":{"opis":"Svaka poslana poruka → cNNNN_inbox_{sender}_{timestamp}.dok.json","napomena":"Read receipt = chain entry — primatelj može dokazati da je primio"}},"veza_s_postojecim":{"digigraf_chat":"Digigraf chat forma → postaje prvi channel; jedan API endpoint poziv umjesto custom forme","genesis_login_qr":"QR kod može sadržavati inbox_token → skeniraš, vidiš poruku bez registracije","dokarh":"Svaki dokument ima ref_weise3_id → sve poruke vezane uz taj dokument","brsljani_mreza":"Fan-out broadcast ide kroz brsljani stream (db=4) — bez centralnog servera","klijentski_portal":"/client/<token>/ već postoji → dodati inbox tab bez promjena u auth"},"sprinti":{"INBOX-1":{"status":"TODO","zadaci":["GenesisMessage model + ZAKON 27 polja (weise3_id, bunker_seal_id, created_at, expires_at)","ZAKON 28 cleanup task za expires_at u istom commitu","POST /send + GET /inbox + PUT /read endpoints","Inapp delivery: SSE polling na /api/v1/inbox/stream/{weise3_id}","Digigraf chat forma → poziva Inbox API (jedan endpoint, bez mijenjanja Digigrafa)","Badge count (unread) u navigaciji svih Fenix sustava","cNNNN.dok.json chain entry za svaku poslanu poruku (ZAKON 2)"]},"INBOX-2":{"status":"FUTURE","zadaci":["Email delivery kroz Dovecot (DE server, vlastiti SMTP)","Web Push subscription endpoint + service worker snippet","Fan-out resolver za company_role, workspace, domain filtre","Chain proof UI — korisnik vidi lanac poruka vezanih uz dokument"]},"INBOX-3":{"status":"FUTURE","zadaci":["GenesisLogin QR → embed inbox_token (offline dostava poruke)","Broadcast admin panel (scope=domain, role filter, preview)","Alarm eskalacija — critical topic_type šalje na sve kanale paralelno","Klijentski portal /client/<token>/ inbox tab (bez registracije)"]}},"zakoni":["ZAKON 2","ZAKON 3","ZAKON 17","ZAKON 27","ZAKON 28","ZAKON 31","ZAKON 37"],"napomena_za_cc":"Počni s INBOX-1. Model u /var/www/fenix-v4/apps/inbox/models.py (kreiraj app). Delivery engine u /var/www/fenix-v4/services/inbox_delivery.py. API rute u /var/www/fenix-v4/api/v1/inbox.py. Digigraf integracija: POST na /api/v1/inbox/send s topic_type='chat' i scope='direct'. Svaki send() mora kreirati .dok.json u schema_dokarh/inbox/. ZAKON 28 cleanup obavezan uz model."}}