Configurări versionate
- Cui vorbim:* manager / IT lead care vrea control asupra modificărilor.
De ce versionare
Într-un magazin / restaurant tipic, în mod constant se modifică:
- Prețuri (promoții, ajustări sezoniere).
- Descrieri produse.
- Fotografii.
- Categorii / etichete.
- Setări site (politici, informații contact).
- Setări fiscale (cote TVA per produs).
- Configurări roluri / permisiuni.
- Fără versionare*, dacă cineva face o modificare greșită (preț tastat eronat, descriere ștearsă din greșeală, politică de retur modificată), nu există decât "să-mi amintesc cum era înainte" — adică pierdere și frustrare.
- Cu versionare*, fiecare modificare este o nouă versiune; poți reveni la oricare anterioară rapid.
Ce este versionat
Catalog produse
- Fiecare modificare (preț, descriere, fotografie) creează o versiune nouă.
- Vezi istoric: "preț era 85 MDL pe 1 ian, modificat la 90 MDL pe 15 mar (de Andrei) cu motivul 'inflație furnizor'".
Setări site
- Tema vizuală.
- Conținutul paginilor statice.
- Politici (T&C, retur, confidențialitate).
- Liste navigație.
Configurări fiscale
- Cote TVA per categorie produs.
- Numerotare facturi (serii).
- Date firmă (adresă, IDNO).
Roluri & permisiuni
- Modificările pe drepturile unui rol.
- Atribuirile de roluri către utilizatori.
Configurări HoReCa
- Diviziile per POS.
- Atribuirea produselor la divizii.
- Praguri aprobare pierderi.
Rețete (BOM)
- Modificările cantităților ingredientelor (vezi Rețete & BOM).
- Adăugare / eliminare ingrediente.
Cum se vede istoricul
Pentru fiecare entitate versionată, ai un buton Istoric:
Produs: Pizza Margherita
═══════════════════════════════════════════════════════
Versiunea curentă (23): preț 85 MDL, BOM v3
Modificată: 23 apr 2026, 09:15, de Andrei
Motiv: "Update preț ingrediente noi"
─────────────────────────────────────────────────────
Versiuni anterioare:
v22 (15 mar 2026): preț 80 MDL, BOM v3 — Andrei
v21 (1 ian 2026): preț 80 MDL, BOM v2 — Andrei
v20 (15 dec 2025): preț 75 MDL, BOM v2 — Sergiu
v19 (1 nov 2025): preț 75 MDL, BOM v1 — Sergiu
[...vezi mai vechi]
Cu un click pe orice versiune anterioară:
- Vezi exact cum arăta entitatea în acel moment.
- Poți reveni la acea versiune (cu un click + confirmare manager).
- Reverirea creează o versiune nouă (v24) cu conținutul vechi → istoric păstrat.
Diferențe între versiuni
Pentru orice 2 versiuni, sistemul afișează diferențele clar:
Diff Pizza Margherita: v22 → v23
Câmp v22 v23
─────────────────────────────────────────────────
preț 80 MDL 85 MDL ⚠ +6%
descriere "Sos roșii, ..." "Sos roșii proaspete, ..." (modif)
foto pizza-v3.jpg pizza-v4.jpg (înlocuit)
BOM v3 v3 (nemodificat)
Util pentru "ce s-a schimbat de când vorbeam ultima dată".
Audit cine ce a modificat
Fiecare versiune logează:
- Cine (utilizator + rol).
- Când (timestamp).
- De pe ce dispozitiv (POS / browser admin / API).
- Motivul (opțional, recomandat — câmp text).
Util pentru:
- Investigare ("cine a schimbat prețul Tiramisu să fie negativ?").
- Conformitate audit ("toate modificările legate de TVA au autor identificabil").
- Coaching ("operatorul X face multe modificări — verifică dacă e instruit corect").
Aprobări înainte de publicare
Pentru anumite modificări sensibile (configurabil), sistemul cere aprobare înainte ca modificarea să fie live:
- Modificări preț >X% diferență — aprobare manager.
- Modificări la T&C, politică retur — aprobare admin.
- Modificări la cotele TVA — aprobare admin (rar, dar critice).
- Modificări roluri / permisiuni — aprobare admin.
Workflow:
- Operator face modificarea → status
pending-approval. - Aprobator notificat.
- Aprobă → modificarea devine live, versiune nouă creată.
- Sau respinge cu motiv → modificarea revertită, operator notificat.
Reveniri (rollback)
Rollback-ul se face manual, aplicând valoarea unei versiuni anterioare peste variabila curentă:
- Pe o singură variabilă — deschizi audit-log-ul, copiezi valoarea dorită dintr-o intrare istorică, o pastezi ca nouă valoare (create nouă versiune care conține datele vechi). Toate versiunile anterioare rămân în istoric, nu se șterg.
- Pe mai multe variabile — repetat manual per variabilă, sau la cerere se poate scrie un script care iterează.
Toate revenirile sunt logate la fel — noua versiune apare în audit cu autor + timestamp + valoarea aplicată.
Notă onestă: nu avem astăzi un buton "snapshot global — revino la ieri" care să restaureze automat un set de variabile la o dată anterioară. Fiecare variabilă are istoric individual — restaurarea coordonată se face manual sau prin script custom.
Comparare configurații între locații
Pentru lanțuri cu mai multe locații:
- "Compară setările POS-001 cu POS-002" — sistemul afișează diferențele.
- Util pentru a uniformiza (sau a justifica de ce sunt diferite).
Export configurări
Configurările din SharedRefs sunt accesibile ca JSON direct din UI (valoarea fiecărei variabile e vizibilă ca text JSON, poate fi copiată cu clipboard). Pentru export coordonat al mai multor variabile / colecții, la cerere se poate genera un dump JSON prin API — util pentru:
- Migrare — duci configurarea unui POS pe un POS nou (dump global → import țintit).
- Backup secundar local (pe lângă backup-ul standard al sistemului).
- Documentare — atașezi la dosarul intern.
Notă onestă: nu avem astăzi un buton "Export configurări" în UI, nici export YAML. Fiecare variabilă poate fi copiată individual din audit-log (JSON). Export coordonat = serviciu asistat contra timp.
Performanță
- Crearea unei versiuni: rapid.
- Vedere istoric (sute de versiuni): rapid.
- Diff între versiuni: rapid.
- Rollback: rapid.
Tur vizual — SharedRefs Manager
Aplicația SharedRefs Manager e centrul de comandă pentru configurările versionate: fiecare "ref" (variabilă de configurare) trăiește într-o colecție, la un context (global / POS / user / device-local), cu istoric integral.







Audit log per colecție
Fiecare colecție are un buton 📜 lângă contorul de refs care deschide dialog-ul de audit — istoricul complet al scrierilor pe acea colecție (create/update/upsert/remove), cu utilizator, timestamp, context și snippet valoare.



Creare variabilă nouă — pas cu pas
Butonul + New variable din header deschide un dialog cu 5 câmpuri: collection (grupare logică), ref_id (numele variabilei), ctx_type (global / user / pos / maintainer / device-local), ctx_key (identificator context) și value (JSON). După apăsarea Create variabila apare în tree cu toast de confirmare + intrare în audit-log.









Următorul pas
→ Backup & monitorizare.