Cui vorbim: proprietar / manager / decident IT care vrea să înțeleagă cum controlează cine ce face în ERP.
Fiecare utilizator ERP are un cont personal (username + parolă) și primește unul sau mai multe roluri. Un rol e o listă de permisiuni — atomice, verificate individual la fiecare acțiune sensibilă. Când un utilizator încearcă o acțiune, sistemul verifică dacă are cel puțin o permisiune care o acoperă; altfel primește 403.
Consecință practică:
Permisiunile respectă o gramatică consistentă care le face ușor de citit și de căutat:
MODULE__ACTION → permisiune de bază, pentru toate scope-urile
MODULE__ACTION:SCOPE:value → variantă restrânsă la un scope specificExemple concrete:
| Permisiune | Efect |
|---|---|
FISCAL_PUSH_CASH_REGISTER | Poate emite bonuri fiscale pe orice casă |
HORECA_FISCAL__EMIT:POS:bar-1 | Poate emite bonuri doar pe POS-ul cu id bar-1 |
STOCK_TRANSFER:POS:kitchen:main | Poate transfera stoc doar din kitchen în main |
MCP_TOOL:search_products | Poate folosi tool-ul AI search_products (read-only) |
MCP_TOOL_WRITE:update_price | Poate folosi tool-ul AI update_price (write, cu gate suplimentar) |
HORECA_REPORT__SHIFT_CLOSE | Poate rula "Închide tura" (snapshot retrospectiv per zi calendaristică × POS) și consulta rapoartele de tură (jurnal contabil v1, roll-up lună, tipping split, ⚙️ loss-anomaly) pe orice POS |
HORECA_REPORT__SHIFT_CLOSE:POS:main | Poate rula "Închide tura" + rapoartele aferente doar pe POS-ul main |
MODULE__ACTION (cu dublu-underscore) separă clar prefixul de modul de restul. Face ușor de identificat familia de permisiuni printr-un grep simplu în audit.La onboarding activăm câteva roluri pre-configurate, pe care le poți duplica și ajusta după nevoile tale reale. Numele din paranteze sunt cele din sistem.
role_administrator)Cine: proprietar / director / responsabil IT principal.
Ce poate:
Ce nu: nu are "super-putere" ascunsă — logurile sunt inalterabile prin design, iar acțiunile lui rămân în jurnal exact ca orice alt utilizator. Vezi și T&C — Admin responsability.
role_horeca_manager_tura)Cine: manager sală / responsabil schimb într-un restaurant.
Ce poate:
folder:invoice (supervizează bonurile de producție).HORECA_DASHBOARD__VIEW:PANEL:reports).HORECA_REPORT__SHIFT_CLOSE) și generează rapoartele din tab-ul Rapoarte: (1) raportul de închidere v1 — subtype-aggregated (production / sell / writeoff / transfer / supply / transform / ecommerce) + top 10 pierderi (mpn / events / qty) + total bonuri; (2) roll-up lună de tură (agregare pe calendaristic × POS); (3) split tips ospătari (calc pe cerere — % configurabil în FE, nu se persistează); (4) ⚙️ detecție anomalii pierderi (activabil, cu prag configurabil σ). Este singurul rol pre-configurat care poate rula "Închide tura" implicit (peste role_administrator prin wildcard HORECA_*); pentru limitare la un POS anume se folosește sintaxa HORECA_REPORT__SHIFT_CLOSE:POS:<pos-id>.Ce nu: nu poate șterge entrii din cash-register (ștergerea = admin senior only) și nu poate aplica stoc retroactiv. De asemenea, "Închide tura" este un snapshot retrospectiv al zilei calendaristice alese pe un POS — nu emite / nu așteaptă Z-ul de la casa de marcat (MCR Z-shift e operațiune fizică separată), nu blochează operațional casa de marcat, nu verifică "curățenia" (Comenzi deschise / bonuri ne-emise sunt pur și simplu excluse din agregare, nu blocante) și nu se poate "redeschide". Re-execuția pe aceeași dată × POS creează un al doilea snapshot alături de primul (fără dedup) — responsabilitatea de gestiune înainte de close rămâne a managerului.
role_horeca_casier)Cine: casier la POS fiscal — emite bonurile clienților.
Ce poate:
HORECA_FISCAL__EMIT, FISCAL_PUSH_CASH_REGISTER).FISCAL_MODULES__USE).Ce nu: nu editează Comenzi (doar le vede), nu modifică prețuri, nu vede rapoarte financiare.
role_horeca_chelner)Cine: ospătar care ia comenzi la masă.
Ce poate:
role_horeca_bucatar)Cine: operator kitchen / bar / cafenea — vede kitchen-display + marchează pregătit.
Ce poate:
Patru template-uri specializate pentru accesul AI:
role_mcp_reader_catalog — doar consultare catalog (produse, categorii).role_mcp_reader_analyst — read complet (catalog + comenzi + stoc + facturi + roll-up lună de tură HoReCa + e-Factura).role_mcp_efactura_only — acces la funcțiile e-Factura (draft, semnare, listare).role_mcp_editor_manager — read + acțiuni asistate limitate (prețuri, stoc, notificări operator; include și MCP_TOOL:horeca_shift_month — roll-up lună tură HoReCa read-only).Notă: tool-ul MCPhoreca_shift_monthare un domain fallback peHORECA_REPORT__SHIFT_CLOSE— dacă utilizatorului îi lipsește această permisiune de domeniu (chiar dacă areMCP_TOOL:horeca_shift_month), apelul MCP eșuează. Nu există tool MCP pentru "Închide tura" — închiderea unei ture (crearea snapshot-ului) e strict UI-only în webapp HoReCa; MCP-ul poate doar citi rezultatele.
Vezi Asistent AI conectat (MCP) pentru detalii de activare + cost.
Framework-ul de capture bon fiscal (scanare QR, formular manual, sync provider extern) folosește două grants dedicate:
FISCAL_MODULES__USECine primește: cashier + manager de tură + administrator (deja incluse implicit în rolurile de mai sus).
Ce activează:
mev-qr-scan) — utilizatorul apucă scanner-ul, scanează codul de pe bonul furnizorului sau al operatorului fiscal, iar sistemul aduce automat detaliile și le înregistrează în stoc.manual-form) — pentru bonuri fără QR (bonuri istorice, chitanțe non-fiscale, furnizori care nu emit MEV).Nu activează: aplicare retroactivă stoc pentru bonuri istorice — aceasta e un grant separat, deliberat mai restrâns.
FISCAL_MODULES__APPLY_STOCK_MANUALCine primește: administrator + eventual operations lead — nu casierul de zi cu zi.
Ce activează:
skip:autosync_inactive sau skip:pre_boundary (bonuri istorice care nu au fost decrementate la ingestion).De ce e restricționat: fiecare apply modifică stocul real. Ștergerile / corecțiile trebuie să fie decizii conștiente ale unei persoane cu vedere de ansamblu, nu ale casierului aglomerat la ora de vârf. Fiecare acțiune scrie un rând audit audit_apply[] cu username + timestamp + verdictele înainte/după.
Setări → Utilizatori.FISCAL_MODULES__USE doar pe un POS specific) → sintaxa PERM:SCOPE:value (vezi tabelul de convenție de mai sus).Rolurile default pot fi rescrise oricând conform nevoilor tale. Cerere de personalizare la onboarding = inclus în pachetul Start+; ajustări ulterioare = suport standard.
casier1) este acceptată și nu contează separat la licențiere.