NSILM

Üldkirjeldus

Teenus võimaldab lisada asutusepõhist või isikupõhist eesmärki. Eesmärgi looja lisatakse vaikimisi eesmärgi meeskonnaliikmeks protsessijuhi rollis.

Seotud andmeobjektid:

Seotud Jira taskid

NSIL-792 - Getting issue details... STATUS

NSIL-844 - Getting issue details... STATUS

NSIL-979 - Getting issue details... STATUS

Eeltingimused ja kasutusõigused

  • Kui tegemist on asutusepõhise eesmärgiga (Goal.goalScope = INSTITUTIONAL):
    • Kasutajal on seos eesmärgi asutusega ja sama asutuse eesmärkide lisamise ja muutmise õigus
      • institutionId = Kasutaja poolt valitud rolliga seotud asutus
      • Õigust reguleerib privileeg: HSILM_PLANNING_GOAL_MANAGE.
  • Kui tegemist on isikupõhise eesmärgiga (Goal.goalScope = INDIVIDUAL):
    • Kasutajal on seos eesmärgi asutuse ja ametikohaga.
      • institutionId = Kasutaja poolt valitud rolliga seotud asutus
      • jobsite = Kasutaja poolt valitud rolliga seotud ametikoht
    • Eraldi privileegi ei ole vaja.
  • Arhiivi ja meeskonnaliikme rolli valinud kasutaja ei saa luua uusi eesmärke.

Planeerimise mooduli kasutusrollide ja õiguste kohta saab täpsemalt infot leida lehelt Kasutusõigused ja rollid.

Sisendid

AtribuutKohustuslikkus, mitmesusTüüpVaikeväärtus, valideerimineKirjeldus, täiendav info

goalScope

1

String
  • Võimalikud väärtused:
    • INSTITUTIONAL
    • INDIVIDUAL

Määrab, millise ulatusega eesmärk luuakse:

  • INSTITUTIONAL — luuakse asutusepõhine eesmärk.
  • INDIVIDUAL — luuakse isikupõhine eesmärk. 

institutionId

1

String
  • Peab olema määratud.
  • Väärtuseks peab olema määratud kasutaja poolt valitud rolliga seotud asutuse ID.
Viide asutuse identifikaatorile EHIS-es, millega loodav eesmärk seotakse.

jobsite

0..1

String
  • Väärtus peab vastama EHIS klassifikaatorile PEDAGOOG_AMETIKOHT.
  • See väli on kohustuslik, kui luuakse isikupõhine (INDIVIDUAL) eesmärk.
  • Ei tohi olla määratud, kui goalScope="INSTITUTIONAL".
  • Väärtuseks peab olema määratud kasutaja poolt valitud rolliga seotud ametikoha ID.
Kasutaja ametikoha tunnus, millega seoses talle püstitatakse eesmärk. 

name

0..1

String
  • Lubatud kuni 250 tähemärki.
  • Kohustuslik määrata, kas eesmärgi nimetus või kirjeldus.

Eesmärgi nimetus.

description

0..1

String
  • Lubatud kuni 2500 tähemärki.
  • Kohustuslik määrata, kas eesmärgi nimetus või kirjeldus.

Eesmärgi kirjeldus.

assessmentChallengeIds

0..*

Array
  • assessmentChallengeId väärtused peavad olema unikaalsed.
  • Väljakutse peab eksisteerima.
    • AssessmentChallenge.id = assessmentChallengeId
  • Väljakutse ei tohi olla vanem kui viis aastat.
  • Väljakutse peab olema seotud hindamise liigi põhjal uusima hindamisega.
  • Väljakutse skoop peab olema sama, nagu loodava eesmärgi skoop.
    • St kui luuakse asutusepõhine eesmärk (goalScope = INSTITUTIONAL), siis eesmärgile lisatav väljakutse peab samuti olema asutusepõhine (assessmentChallenge.assessment.assessmentScope = INSTITUTIONAL).
  • Väljakutse peab olema seotud sisendis esitatud asutusega (institutionalId) ning, kui sisendis on ka määratud ametikoht (jobsite), siis ka vastava ametikohaga.
    • AssessmentChallenge.assessment.institution.id = institutionId
    • AssessmentChallenge.assessment.jobsite = jobsite
  • Kui vähemalt ühe väljakutse viite valideerimine ebaõnnestub, siis lõpetatakse päringu töötlemine ja tagastatakse viga. 
Viited väljakutsetele, mis seotakse loodava eesmärgiga.

Väljundid

AtribuutKohustuslikkus, mitmesusTüüpKirjeldus, täiendav info

id

1

UUIDObjekti unikaalne identifikaator.
institution

1

ObjectEesmärgiga seotud asutuse (KOV, õppeasutus) objekt. 
institution.id

1

StringViide eesmärgiga seotud asutusele EHIS-es.
institution.name

1

StringAsutuse nimi
institution.type1EHIS Classifier

Asutuste liik (KOV, õppeasutus).

goalScope1String

Määrab eesmärgi ulatuse:

  • INSTITUTIONAL - asutuse eesmärk.
  • INDIVIDUAL - seotud kasutaja ametikohaga.
jobsite0..1EHIS Classifier

Isiku ametikoha tunnus, millega eesmärk on seotud. Ainult isikupõhiste (goalScope = INDIVIDUAL) eesmärkide puhul.

personalCode0..1String

Isiku isikukood, kellele eesmärk kuulub. Ainult isikupõhiste (goalScope = INDIVIDUAL) eesmärkide puhul.

name0..1String

Eesmärgi nimetus.

description0..1String

Eesmärgi kirjeldus.

aiSmartScore0..1Object

ChatGPT poolt genereeritud hinnang eesmärgi kirjelduse täpsusele SMART kriteeriumide alusel.

aiSmartScore.specific0..1String

ChatGPT hinnang eesmärgi kirjelduse konkreetsusele.

aiSmartScore.measurable0..1String

ChatGPT hinnang eesmärgi kirjelduse mõõdetavusele.

aiSmartScore.achievable0..1String

ChatGPT hinnang eesmärgi kirjelduse saavutatavusele.

aiSmartScore.relevant0..1String

ChatGPT hinnang eesmärgi kirjelduse asjakohasusele.

aiSmartScore.timely0..1String

ChatGPT hinnang eesmärgi kirjelduse ajaliselt sobivusele.

aiSmartScore.average0..1String

Kõigi SMART kriteeriumite hinnangute keskmine.

aiDescription0..1String

ChatGPT poolt pakutud eesmärgi kirjeldus.

archived1Boolean

Määrab, kas eesmärk on arhiveeritud.

  • true - eesmärk on arhiveeritud
  • false - eesmärk ei ole arhiveeritud
assessmentChallengeIds0..*Array
  • Viited väljakutsetele, millega eesmärk seotud on.


teamMembers1..*ArrayEesmärgi meeskonnaliikmed.
teamMembers.id1String

Meeskonnaliikme unikaalne identifikaator.

teamMembers.roleType

0..1

String

Meeskonna liikme roll selle eesmärgi meeskonnas.

Väärtusena klassifikaatori HSILM_GOAL_ROLE elemendi viide.

statusType1EHIS Classifier

Eesmärgi staatus

Väärtusena klassifikaatori HSILM_GOAL_STATUS elemendi viide.

  • INCOMPLETE - Pooleliolev
    • Eesmärgi staatus on pooleliolev, kui eesmärk on arhiveerimata ja vähemalt üks "Aktiivne" staatuse tingimus on täitmata
      • Goal.archived = false
  • ACTIVE - Aktiivne
    • Eesmärgi staatus on aktiivne, kui eesmärk on arhiveerimata ja eesmärgi nimetus on vähemalt 1 tähemärk pikk ja eesmärgi kirjeldus on vähemalt 1 tähemärk pikk, lisatud on vähemalt 1 meeskonna liige ja eesmärgile on lisatud vähemalt üks tegevus.
  • ARCHIVED - Arhiveeritud
    • Eesmärgi staatus on arhiveeritud, kui eesmärk on arhiveeritud.
      • Goal.archived = true
previousGoalId0..1String

Viide eesmärgi ID-le, mis eelneb käesolevale eesmärgile aktiivsete eesmärkide järjekorras. Selle põhjal järjestatakse eesmärkide vahelehed ja nimekirjad.

createdAt

1

Date

Eesmärgi lisamise aeg.

Ärireegel

  • Eesmärgi edukal loomisel määratakse päringu kävitanud kasutaja eesmärgi meeskonda "TEAM_LEAD" rollis, mis näitab, et ta vastutab eesmärgi eest. 

Tegevused

  1. Süsteem kontrollib, kas kasutajal on õigust päringut teostada.
    1. Kui kasutajal ei ole õigust, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
  2. Süsteem kontrollib, kas sisendandmed vastavad nõuetele.
    1. Kui andmed ei vasta nõuetele, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
  3. Süsteem kontrollib, kas sisendis esitatud väljakutsed (assessmentChallengeIds) eksisteerivad ja vastavad järgmistele tingimustele:

    • Kui luuakse asutusepõhine eesmärk, peavad väljakutsed olema seotud sisendis esitatud asutusega.
    • Kui luuakse isikupõhine eesmärk, peavad väljakutsed olema seotud päringu käivitanud kasutaja isikukoodiga ning sisendis esitatud asutuse ja ametikohaga. 
      1. Süsteem otsib kõiki sisendis esitatud Objektid#AssessmentChallenge objekte, mille:
        1. id =  Sisendis esitatud "assessmentChallengeId" väärtus.
      2. Iga leitud Objektid#AssessmentChallenge objekti puhul kontrollitakse:
        1. assessment.institution.id = Sisendis esitatud "institutionId" väärtus.
        2. assessment.assessmentScope = Sisendis esitatud "goalScope" väärtus.
        3. Kui sisendis esitatud goalScope = "INSTITUTIONAL": 
          1. assessment.jobsite = NULL.
        4. Kui sisendis esitatud goalScope = "INDIVIDUAL":
          1. assessment.personalCode = Päringu käivitanud kasutaja isikukood.
          2. assessment.jobsite = Sisendis esitatud "jobsite" väärtus.
        5. assessment.endDate <= Päringu teostamise aeg - 5 aastat.
        6. Sama assessment.assessmentType korral on assessment.endDate suurim.
        7. Sama assessment.endDate korral valitakse objekt, mille assessmentChallenge.createdAt on suurim.
      3. Kui mõnda sisendis esitatud väljakutset ei leita või see ei vasta tingimustele, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
  4. Süsteem loob uue eesmärgi objekti.
    1. Süsteem loob Objektid#Goal objekti järgmiste parameetritega:
      1. id = UUID
      2. institution.id = Sisendis esitatud "institutionId" väärtus
      3. institution.name =  tokenist asutuse ID järgi
      4. institution.type = Kasutaja tokenist sisendis esitatud institutionId väärtusega seotud institutionType
      5. Kui sisendis esitatud goalScope = "INDIVIDUAL":
        1. personalCode = Päringu käivitanud kasutaja isikukood
        2. jobsite = Sisendis esitatud "jobsite" väärtus
      6. Kui sisendis esitatud goalScope = "INSTITUTIONAL": 
        1. jobsite = NULL
      7. name = Sisendis esitatud "name" väärtus
      8. description = Sisendis esitatud "description" väärtus
      9. aiSmartScore.specific = NULL
      10. aiSmartScore.measurable = NULL
      11. aiSmartScore.achievable = NULL
      12. aiSmartScore.relevant = NULL
      13. aiSmartScore.timely = NULL
      14. aiSmartScore.average = NULL
      15. aiDescription = NULL
      16. assessmentChallengeIds = Sisendis esitatud "assessmentChallengeIds" väärtused
      17. archived = false
      18. audit = audit (loomine)
      19. previousGoalId = eesmärgi ID, mis on sisendis esitatud asutuse/isiku aktiivsete eesmärkide järjekorras viimane.
        1. Eesmärkide otsingus arvestatakse järgmisi tingimusi:
          1. institution.id = Sisendis esitatud "institutionId" väärtus
          2. archived = false
          3. Kui sisendis esitatud goalScope = "INDIVIDUAL":
            1. personalCode = Päringu käivitanud kasutaja isikukood
            2. jobsite = Sisendis esitatud "jobsite" väärtus
          4. Kui sisendis esitatud goalScope = "INSTITUTIONAL": 
            1. jobsite = NULL.
        2. Kui ühtegi tingimustele vastavat eesmärki ei leita, määratakse previousGoalId väärtuseks NULL.
  5. Süsteem lisab eesmärgi looja eesmärgi meeskonnaliikmeks protsessijuhi rollis.
    1. Süsteem kontrollib, kas kasutajal on olemas meeskonnaliikme kirjed sisendis esitatud (=rollis valitud) asutuse / ametikoha ja asutuse piires. Arvestatakse ka arhiveeritud eesmärke.
      1. Kui sisendis esitatud goalScope = "INDIVIDUAL":
        1. Süsteem kontrollib, kas kasutajal on vähemalt üks eesmärk, mis on seotud sisendis esitatud (=rollis valitud) ametikoha ja asutusega.  
          1. Süsteem otsib kasutajaga seotud meeskonnaliikme kirjeid: 
            1.  Süsteem otsib Objektid#GoalTeamMember objekti, mille:
              1. personalCode = Kasutaja isikukood
            2. Kui meeskonnaliiget ei leita, jätkub protsess sammust 5.a.iii.
          2. Süsteem otsib Objektid#Goal objekte, mille:
            1. goalScope = INDIVIDUAL
            2. institution.id = Sisendis esitatud "institution.id" väärtus = Kasutaja poolt valitud rolliga seotud asutus
            3. jobsite = Sisendis esitatud "jobsite" väärtus = Kasutaja poolt valitud rolliga seotud asutus
            4. personalCode = Kasutaja isikukood
            5. teamMembers.id = üks leitud meeskonnaliikmete ID-dest (Objektid#GoalTeamMember.id)
          3. Kui vähemalt üks tingimustele vastav eesmärk leitakse, jätkub protsess edasi sammust 5.b.
          4. Kui eesmärki ei leita, jätkub protsess edasi sammust 5.a.iii.
      2. Kui sisendis esitatud goalScope = "INSTITUTIONAL":
        1. Süsteem otsib kasutajaga seotud meeskonnaliikme kirjeid: 
          1.  Süsteem otsib Objektid#GoalTeamMember objekti, mille:
            1. personalCode = Kasutaja isikukood
          2. Kui meeskonnaliiget ei leita, jätkub protsess sammust 5.a.iii.
        2. Süsteem kontrollib, kas mõni leitud meeskonnaliikmete kirjetest on seotud vähemalt ühe eesmärgiga, mis kuulub sisendis esitatud asutusele.  
          1. Süsteem otsib Objektid#Goal objekte, mille:
            1. institution.id = Sisendis esitatud "institution.id" väärtus
            2. goalScope = INSTITUTIONAL
            3. jobsite = NULL
            4. personalCode = NULL
            5. teamMembers.id = üks leitud meeskonnaliikmete ID-dest (Objektid#GoalTeamMember.id)
          2. Kui vähemalt üks tingimustele vastav eesmärk leitakse, jätkub protsess edasi sammust 5.b.
          3. Kui eesmärki ei leita, jätkub protsess edasi sammust 5.a.iii.
      3. Kui kasutajal ei ole meeskonnaliikme kirjet sisendis esitatud (=rollis valitud) asutuse / ametikoha ja asutuse piires:
        1. Süsteem loob uue Objektid#GoalTeamMember objekti, täites väljad:
          1. id = UUID
          2. personalCode = Kasutaja isikukood
          3. firstName = Päringu käivitanud kasutaja eesnimi
          4. lastName = Päringu käivitanud kasutaja perenimi
          5. email, phoneNumber, institution, jobTitle = jäävad tühjaks
          6. profileColor = Süsteem valib eesmärgi juures unikaalse värvikoodi etteantud värvikoodide seast.
    2. Süsteem seob leitud või just loodud meeskonnaliikme kirje eesmärgiga:
      1. Süsteem otsib Objektid#Goal objekti, mille id = just loodud eesmärgi ID ja uuendab selle andmeid järgmiselt:
        1. teamMembers nimekirja lõppu lisatakse uus kirje järgmiste andmetega:
          1. teamMembers.id = leitud või just loodud Objektid#GoalTeamMember.id
          2. teamMembers.roleType = "TEAM_LEAD" (viide klassifikaatorist HSILM_GOAL_ROLE)
  6. Süsteem tagastab loodud eesmärgi andmed.