====================== Algoritmul de Evaluare ====================== Evaluarea unei proceduri **WLP** (pornita pentru un Proiect sau o Comanda de lucru) se executa printr-o secventa de pasi, implementata in ``WlpServiceImpl`` (metoda orchestrator ``generareEvaluareWlp()``, apelata automat la inserarea procedurii ``WLP``). Pasii algoritmului ==================== .. list-table:: :header-rows: 1 :widths: 8 30 62 * - Pas - Denumire - Ce face * - 1 - **Extragere taskuri** - Citeste taskurile de manopera relevante din Proiect (``OPERTEHNO``) sau Comanda de lucru (``TEHCMDLUCRU``), dupa sursa evaluarii, si creeaza cate o inregistrare ``WLP_CA`` pentru fiecare. * - 2 - **Expandare resurse** - Pentru fiecare task specificat generic (meserie sau formatie), determina lista persoanelor eligibile; pentru taskurile deja specificate pe o persoana, expandarea este directa. * - 3 - **Generare calendar zilnic** - Pentru fiecare persoana rezultata si fiecare zi din perioada taskului ei, creeaza/actualizeaza randul din ``WLP_CALENDAR``, determinand daca ziua este lucratoare (weekend, sarbatori legale, concediu). * - 4 - **Creare structuri de planificare** - Creeaza randurile initiale (goale) in ``WLP_CA_PLANIFICARI``, ca legatura intre fiecare persoana (``WLP_CA_DETALIU``) si fiecare zi a ei din calendar (``WLP_CALENDAR``). * - 5 - **Completare capacitate conform program** - Actualizeaza ``WLP_CALENDAR.Q_CAPACITATE`` si ``IS_WORKING_DAY`` conform programului de lucru efectiv al fiecarei persoane. * - 6 - **Calcul disponibil** - Calculeaza ``Q_CAPACITATE``, ``Q_ALOCAT``, ``Q_OFERTE``, ``Q_EVALUARI`` si ``Q_DISPONIBIL``, atat pe ``WLP_CA_DETALIU`` cat si agregat pe ``WLP_CA``. * - 7 - **Verificare disponibil** - Pentru taskurile/persoanele fara capacitate suficienta, se inregistreaza o eroare blocanta in ``WLP_CA_LOG``. * - 8 - **Alocare capacitate** - Distribuie ``Q_NECESAR`` de la nivelul taskului catre persoanele din ``WLP_CA_DETALIU``, in ordinea descrescatoare a capacitatii disponibile a fiecareia, populand ``WLP_CA_PLANIFICARI``. Urmeaza resincronizarea cantitatilor agregate pe ``WLP_CA_DETALIU`` si ``WLP_CA``. **Acest pas este sarit pentru taskurile cu eroare blocanta detectata la Pasul 7** — pentru acestea, planificarea se genereaza ulterior, doar daca se foloseste actiunea :doc:`Acceptare diferente `. * - 9 - **Setare stare taskuri** - Actualizeaza ``WLP_CA.STARE``: **VALIDATA** pentru taskurile fara erori blocante, respectiv **EROARE** pentru cele cu deficit de capacitate. * - 11 - **Detectare conflicte intra-proiect** - Identifica taskuri din **aceeasi** evaluare care solicita aceeasi persoana in perioade suprapuse, si inregistreaza conflictul. * - 12 - **Detectare avertismente resurse concurente** - Verifica daca resursele taskului sunt solicitate concurent de alte evaluari WLP inca neconfirmate, si inregistreaza un avertisment in ``WLP_CA_LOG`` daca este cazul. .. note:: Pasul 10 (confirmare alocari) nu are o implementare separata — este acoperit implicit de Pasii 4 si 8 (crearea structurilor de planificare, respectiv popularea lor efectiva). Rezultatul evaluarii ====================== La finalul acestei secvente, fiecare task (``WLP_CA``) se afla intr-una din cele doua stari vizibile utilizatorului in ecranul :doc:`Planificare Capacitati `: - **VALIDATA** — task acoperit, cu planificare generata pe zile si persoane; - **EROARE** — task neacoperit, fara planificare generata; necesita interventie prin :doc:`Resurse alternative `, :doc:`Splitare/Modificare Task ` sau :doc:`Acceptare diferente `. Recalcularea unui singur task ================================ Actiunea :doc:`Refacere evaluare ` reia Pasii 6-9 **doar pentru taskul selectat** (nu intreaga evaluare WLP), util dupa modificarea resurselor lui (de exemplu adaugarea unei :doc:`resurse alternative `).