CRMconnect Azuvio · Docs

Workflow: OKR Cycle — Planificare & Evaluare

Module implicate: OKR (Circulation · OKRs · Key Results · Check-ins · Approval) · Goals · DataPulse
Cine îl folosește: Management · Manageri Departamente · Toți Angajații
Durata tipică: Un ciclu = 1 trimestru sau 1 an (configurat în Circulation)

Overview

Modulul OKR implementează metodologia Objectives & Key Results. Un ciclu complet acoperă: definirea perioadei (Circulation), crearea obiectivelor cu rezultate cheie cuantificabile (OKRs + Key Results), check-in-uri periodice de progres cu aprobare opțională pe lanț ierarhic, și închiderea ciclului când progresul atinge 100%.

Atenție la distincții:

  • OKR = progres subiectiv pe obiective definite de utilizator (check-in periodic)
  • Goals = modul separat; urmărește automat metrici CRM reale (facturi, lead-uri, contracte) față de un target numeric — fără check-in manual
  • DataPulse = dashboard de analiză read-only; nu are tabele proprii, nu se integrează cu OKR
  • tblhr_checkins din modulul HR = prezență fizică (oră start/stop) — nu are legătură cu OKR check-ins

Condiție obligatorie: Fără cel puțin un record în tblokr_setting_circulation cu from_date/to_date valide, modulul OKR nu funcționează corect. Aceasta este prima setare de configurat.


Diagrama fluxului

[SETARE CICLU — admin, o dată per perioadă]
  │
  ├── Circulation: definire perioadă (ex: Q1 2026: 01.01–31.03)
  ├── Units: unități de măsură (%, RON, nr. bucăți)
  ├── Questions: întrebări afișate la fiecare check-in
  ├── Evaluation Criteria: scoruri de evaluare per criteriu
  └── Approval Setting (opțional): cine aprobă check-in-urile
  │
  ↓
[CREARE OKR]
  │
  ├── Tip: Personal (1) · Departament (2) · Companie (3)
  ├── Display: Public (1) · Privat (2)
  ├── Obiectiv + Key Results (target, unitate, plan)
  └── approval_status = 0 (draft)
  │
  ↓
[CHECK-IN PERIODIC]
  │
  ├── Utilizator deschide okr/checkin_detailt/{id}
  ├── Completează per Key Result: achieved, progress (0–100%), confidence_level
  ├── Completează: evaluation_criteria (scor), comment, răspunsuri la Questions
  ├── Setează: recently_checkin (azi) + upcoming_checkin (data viitoare)
  └── Submit → approval_status = 3 (Waiting for Approval)
  │
  ↓
[APROBARE CHECK-IN]
  │
  ├── Dacă NU există Approval Setting pentru departamentul/OKR-ul respectiv:
  │     → approval_status = 1 (Aprobat automat) ← imediat
  │
  └── Dacă EXISTĂ Approval Setting:
        ├── Sistem rezolvă aprobatorii (direct_manager / department_manager / staff fix)
        ├── Notificare trimisă primului aprobator
        ├── Aprobator aprobă (approve=1) sau respinge (approve=-1)
        │     → Dacă toți aprobă: approval_status = 1
        │     → Dacă cineva respinge: approval_status = 2
        └── Creator notificat cu approved_checkin / rejected_checkin
  │
  ↓
[PROGRES ACTUALIZAT]
  │
  ├── okrs.progress = media progreselor tuturor Key Results
  ├── Dacă progress = 100% → okrs.status = 1 (Finished)
  └── Log imutabil în tblokrs_checkin_log (snapshot complet)
  │
  ↓
[ÎNCHIDERE CICLU]
  │
  ├── OKRs cu status=1 (Finished) sunt complet realizate
  ├── Raport ciclu: progres · confidence levels · check-in history
  └── Admin poate vedea rapoarte (necesită permisiunea reports → view)

[CICLU ÎNCHEIAT ✓]

Pas cu pas

1. Configurare ciclu (admin)

Unde: /admin/okr → Settings

1a. Circulation — obligatoriu

Tab: Settings → Circulation → Add Circulation

Câmp Tip Descriere
name_circulation varchar Ex: „Q1 2026", „Annual 2026"
from_date DATE Primul de zi al perioadei
to_date DATE Ultima zi a perioadei

Sistemul detectează automat ciclul curent prin MONTH(NOW()) = month(from_date) AND YEAR(from_date) = YEAR(NOW()). Dacă nu există un ciclu cu from_date în luna curentă, OKR-urile noi nu se pot lega de un ciclu activ.

1b. Units

Tab: Settings → Units → Add Unit

Exemple: %, RON, USD, Bucăți, Nr. clienți. Unitățile sunt selectabile pe fiecare Key Result.

1c. Questions (opțional)

Tab: Settings → Questions → Add Question

Întrebările configurate aici apar obligatoriu pe formularul de check-in pentru toți utilizatorii. Ex: „Ce a mers bine?", „Ce blocaje există?", „Ce ajutor ai nevoie?".

1d. Evaluation Criteria (opțional)

Tab: Settings → Evaluation Criteria → Add Criteria

Scoruri numerice pe criterii definite (ex: group_criteria=1, name="Calitate output", scores=85). La check-in, utilizatorul selectează un criteriu și sistemul înregistrează scorul.

1e. Approval Setting (opțional)

Tab: Settings → Approval Process → Add Approval

Dacă nu configurați nicio regulă de aprobare, toate check-in-urile sunt aprobate automat (approval_status = 1 imediat după submit).

Câmp Descriere
name Denumire regulă
department ID-urile departamentelor vizate (FIND_IN_SET lookup)
okrs ID-urile OKR-urilor specifice vizate (alternativă la department)
setting JSON cu lanțul de aprobatori (noduri)
choose_when_approving 0 = sistem rezolvă aprobatorul automat; 1 = utilizatorul alege aprobatorul la momentul check-in-ului
number_day_approval Deadline în zile pentru fiecare aprobator
notification_recipient Staff notificați suplimentar (CC)

Tipuri de aprobatori în JSON setting:

Tip aprobator Cum este rezolvat
direct_manager tblstaff.team_manage al utilizatorului care face check-in
department_manager tbldepartments.manager_id al departamentului OKR-ului
staff Staffid fix specificat explicit

Atenție: Pentru direct_manager și department_manager, câmpurile team_manage pe staff respectiv manager_id pe departament trebuie populate. Dacă lipsesc, rezolvarea eșuează și check-in-ul poate rămâne blocat.


2. Creare OKR

Unde: /admin/okr → New OKR

Câmp Valori Note
type 1=Personal · 2=Departament · 3=Companie Personal: person_assigned = utilizatorul curent
display 1=Public · 2=Privat Privat: vizibil doar owner + creator
circulation FK → tblokr_setting_circulation Ciclul activ
okr_superior FK → alt OKR OKR părinte (pentru ierarhie OKR)
okr_cross lista de ID-uri OKR-uri încrucișate (cross-OKR)
category FK → tblokr_setting_category Categoria obiectivului

Permisiune necesară: okr → view SAU okr → view_own SAU is_admin(). Utilizatorii cu view_own pot crea doar OKR-uri personale (type=1) asignate lor înșiși.

Key Results

Se adaugă după crearea OKR-ului. Fiecare Key Result are:

Câmp Descriere
main_results Descrierea rezultatului cheie
target Valoarea țintă (număr)
unit FK → tblokr_setting_unit
plan Planul de acțiune
tasks ID-uri de Tasks din CRM legate de acest Key Result

3. Check-in periodic

Unde: /admin/okr → click OKR → butonul Check-in

Condiție de acces: approval_status trebuie să fie 0 (draft) sau 1 (aprobat). Dacă este 2 (respins) sau 3 (în așteptare), butonul de check-in este ascuns.

La fiecare check-in, sistemul înlocuiește complet rândurile din tblokrs_checkin pentru OKR-ul respectiv (nu adaugă — suprascrie starea curentă). Istoricul este păstrat în tblokrs_checkin_log (imutabil).

Câmpuri completate per Key Result:

Câmp Obligatoriu Descriere
achieved Da Valoarea realizată curentă
progress Da Procent 0–100
confidence_level Da 1=Is fine · 2=Not so good · 3=Very good
evaluation_criteria Dacă configurat Scorul din grila definită
comment Nu Comentariu liber
answer Dacă există Questions Răspunsuri la întrebările din Settings

Câmpuri la nivel de OKR:

Câmp Descriere
recently_checkin Data de azi (check-in curent)
upcoming_checkin Data planificată a urmatorului check-in

Calcul progres agregat:

total_progress = (suma progress-urilor tuturor KR) / (număr KR × 100) × 100

Dacă total_progress = 100okrs.status = 1 (Finished) și complete_okrs = 1.


4. Fluxul de aprobare

Fără reguli de aprobare configurate: check-in-ul este aprobat automat (approval_status = 1) imediat după submit.

Cu reguli de aprobare:

Submit check-in
  → approval_status = 3 (Waiting)
  → sistem caută Approval Setting via FIND_IN_SET(department) sau FIND_IN_SET(okrs_id)
  → primul aprobator notificat

Aprobator deschide cererea → aprobă sau respinge
  → toți aprobatori aprobă → approval_status = 1
  → orice respingere → approval_status = 2
  → creator notificat

Dacă choose_when_approving = 1, utilizatorul care face check-in selectează manual aprobatorul dintr-un dropdown la momentul submit-ului.


5. Goals — modul separat

Unde: /admin/goals

Goals urmărește automat metrici CRM reale față de un target numeric. Nu are check-in manual, nu are aprobare.

goal_type Ce măsoară automat
1 Plăți primite (din tblinvoicepaymentrecords)
2 Leads convertite în clienți
3 Clienți noi din leads
4 Toți clienții noi
5 Contracte adăugate (per tip)
6 Oferte convertite
7 Contracte după dată start
8 Total facturi

La finalul perioadei (end_date), dacă targetul nu a fost atins și notify_when_fail=1, sistemul trimite notificare. Similar pentru atingere target cu notify_when_achieve=1.


6. DataPulse

Unde: /admin/datapulse

Dashboard de analiză read-only cu 16 tipuri de grafice (plăți per agent, clienți pe județ, leads pe sursă, timp logat pe angajat etc.). Nu are tabele proprii — citește direct din tabelele CRM core. Nu necesită configurare și nu are permisiuni granulare (orice staff autentificat poate accesa).


Statusuri OKR

Câmp Valoare Etichetă
okrs.status 0 Unfinished
okrs.status 1 Finished (setat automat când progress=100%)
okrs.approval_status 0 Draft
okrs.approval_status 1 Approved
okrs.approval_status 2 Rejected
okrs.approval_status 3 Waiting for Approval

Permisiuni necesare

Permisiune Acces
okr → view Vede toate OKR-urile din sistem
okr → view_own Vede doar OKR-urile proprii (person_assigned = self sau creator = self)
okr → edit Editare OKR-uri (view_own poate edita doar pe ale sale)
okr → delete Ștergere
Settings OKR is_admin() exclusiv
reports → view Acces la secțiunea Report din OKR

Gotchas

Problemă Cauză Soluție
OKR-urile nu apar în dashboard Lipsește Circulation cu from_date în luna curentă Creați un ciclu cu from_date = prima zi a lunii curente
Butonul Check-in nu apare approval_status este 2 sau 3 Aprobatorul trebuie să proceseze cererea anterioară înainte de un nou check-in
Aprobatorul nu primește notificare team_manage sau manager_id nu sunt setate pe staff/departament Completați câmpurile în HR → Staff respectiv Settings → Departments
Check-in-ul a șters progresul anterior Comportament corect — check-in-ul suprascrie starea curentă Istoricul complet se regăsește în tblokrs_checkin_log
choose_when_approving=1 dar nu apare dropdown Aprobatorul nu a fost setat în approval_setting Verificați că choose_when_approving=1 în setarea respectivă

Referințe module

Tip

Creați perioada de circulație (trimestrul OKR) în Setări înainte de începerea trimestrului — angajații nu pot înregistra OKR-uri față de o perioadă care nu a fost configurată, deci acest singur pas administrativ deblochează întreaga organizație din prima zi a trimestrului.

Note

Disciplina OKR depinde de check-in-urile săptămânale, nu de software. Configurați întrebările de check-in în Setări pentru a ghida contribuitorii cu actualizări structurate — o platformă care captează valoarea progresului, nivelul de încredere și blocajele în mod consecvent face revizuirile bazate pe date, nu anecdotice.