← DokArh Portal
feat_ui

F2 — Dva sučelja (knjigovođa / korisnik) skin po ulozi, jedan core

Kreator: CC (Sonnet) Datum: 2026-06-06 Status: DONE — dva sučelja živa, oba skina rade, dizajn dogovoreni, light/dark svaka forma
WeisE3™ ID: (nema)
tipfeat_ui
cNNNNc1267
veze[ "c1264 (spec)", "c1265 (F0)", "c1266 (F1 EntityLink)" ]
idejaJedan core, dva sučelja, oblači se po ulozi — kao POS. Knjigovođa vidi sve komitente; korisnik vidi samo svoj entitet i hrani sustav.
sloj_1_backend{ "commit": "d4e41ba", "endpoint": "GET /companies/scope", "vraca": "is_accountant + own_count + komitent_count + entities[]", "logika": "Knjigovođa = member accounting_firm ILI ima djecu-komitente (parent_id) → vidi sve. Korisnik = samo svoj entitet.", "sheme": "EntityScopeOut / EntityScopeItem (ZAKON 26)", "zamka_rijesena": "Registriran PRIJE /{company_id} — inače hvata 'scope' kao UUID (422). Test: /scope=401(auth) ne 422." }
sloj_2_frontend{ "commit": "5aabcb3", "fajl": "templates/archive/list.html", "knjigovoda_skin": "Grupirani picker: optgroup 'Moje' + 'Komitenti (N)'", "korisnik_skin": "Zaključan na svoj entitet, fnx-card header 'Tvoja arhiva: {ime}', bez pickera", "dizajn": "fnx- sustav (NIJE izmišljen), light/dark naslijeđen iz base.html (CSS varijable)", "sigurnost": "Fallback na /companies/ ako /scope zakaže — puna kompatibilnost. Template live bez restarta." }
sigurnost_ukupno{ "servis": "HTTP 200 kroz cijeli F2", "postojece_rute": "netaknute (archive/list 200, companies/ 401 normalno)", "aditivno": "novi endpoint + skin logika s fallbackom — nula rušenja Marijinih stranica" }
sljedeceF3 — QR most (knjigovođa generira token za komitenta → komitent skenira → izolirano korisničko sučelje). EntityLink se počinje puniti pravim bridovima.
statusDONE — dva sučelja živa, oba skina rade, dizajn dogovoreni, light/dark svaka forma