PM: API: Goal: POST /planning-api/goals
Ü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.
- Kasutajal on seos eesmärgi asutusega ja sama asutuse eesmärkide lisamise ja muutmise õigus.
- 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.
- Kasutajal on seos eesmärgi asutuse ja ametikohaga.
- 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
| Atribuut | Kohustuslikkus, mitmesus | Tüüp | Vaikeväärtus, valideerimine | Kirjeldus, täiendav info |
|---|---|---|---|---|
goalScope | 1 | String |
| Määrab, millise ulatusega eesmärk luuakse:
|
institutionId | 1 | String |
| Viide asutuse identifikaatorile EHIS-es, millega loodav eesmärk seotakse. |
jobsite | 0..1 | String |
| Kasutaja ametikoha tunnus, millega seoses talle püstitatakse eesmärk. |
name | 0..1 | String |
| Eesmärgi nimetus. |
description | 0..1 | String |
| Eesmärgi kirjeldus. |
assessmentChallengeIds | 0..* | Array |
| Viited väljakutsetele, mis seotakse loodava eesmärgiga. |
Väljundid
| Atribuut | Kohustuslikkus, mitmesus | Tüüp | Kirjeldus, täiendav info |
|---|---|---|---|
id | 1 | UUID | Objekti unikaalne identifikaator. |
| institution | 1 | Object | Eesmärgiga seotud asutuse (KOV, õppeasutus) objekt. |
| institution.id | 1 | String | Viide eesmärgiga seotud asutusele EHIS-es. |
| institution.name | 1 | String | Asutuse nimi |
| institution.type | 1 | EHIS Classifier | Asutuste liik (KOV, õppeasutus). |
| goalScope | 1 | String | Määrab eesmärgi ulatuse:
|
| jobsite | 0..1 | EHIS Classifier | Isiku ametikoha tunnus, millega eesmärk on seotud. Ainult isikupõhiste (goalScope = INDIVIDUAL) eesmärkide puhul. |
| personalCode | 0..1 | String | Isiku isikukood, kellele eesmärk kuulub. Ainult isikupõhiste (goalScope = INDIVIDUAL) eesmärkide puhul. |
| name | 0..1 | String | Eesmärgi nimetus. |
| description | 0..1 | String | Eesmärgi kirjeldus. |
| aiSmartScore | 0..1 | Object | ChatGPT poolt genereeritud hinnang eesmärgi kirjelduse täpsusele SMART kriteeriumide alusel. |
| aiSmartScore.specific | 0..1 | String | ChatGPT hinnang eesmärgi kirjelduse konkreetsusele. |
| aiSmartScore.measurable | 0..1 | String | ChatGPT hinnang eesmärgi kirjelduse mõõdetavusele. |
| aiSmartScore.achievable | 0..1 | String | ChatGPT hinnang eesmärgi kirjelduse saavutatavusele. |
| aiSmartScore.relevant | 0..1 | String | ChatGPT hinnang eesmärgi kirjelduse asjakohasusele. |
| aiSmartScore.timely | 0..1 | String | ChatGPT hinnang eesmärgi kirjelduse ajaliselt sobivusele. |
| aiSmartScore.average | 0..1 | String | Kõigi SMART kriteeriumite hinnangute keskmine. |
| aiDescription | 0..1 | String | ChatGPT poolt pakutud eesmärgi kirjeldus. |
| archived | 1 | Boolean | Määrab, kas eesmärk on arhiveeritud.
|
| assessmentChallengeIds | 0..* | Array |
|
| teamMembers | 1..* | Array | Eesmärgi meeskonnaliikmed. |
| teamMembers.id | 1 | String | Meeskonnaliikme unikaalne identifikaator. |
| teamMembers.roleType | 0..1 | String | Meeskonna liikme roll selle eesmärgi meeskonnas. Väärtusena klassifikaatori HSILM_GOAL_ROLE elemendi viide. |
| statusType | 1 | EHIS Classifier | Eesmärgi staatus Väärtusena klassifikaatori HSILM_GOAL_STATUS elemendi viide.
|
| previousGoalId | 0..1 | String | 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
- Süsteem kontrollib, kas kasutajal on õigust päringut teostada.
- Kui kasutajal ei ole õigust, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
- Süsteem kontrollib, kas sisendandmed vastavad nõuetele.
- Kui andmed ei vasta nõuetele, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
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.
- Süsteem otsib kõiki sisendis esitatud Objektid#AssessmentChallenge objekte, mille:
- id = Sisendis esitatud "assessmentChallengeId" väärtus.
- Iga leitud Objektid#AssessmentChallenge objekti puhul kontrollitakse:
- assessment.institution.id = Sisendis esitatud "institutionId" väärtus.
- assessment.assessmentScope = Sisendis esitatud "goalScope" väärtus.
- Kui sisendis esitatud goalScope = "INSTITUTIONAL":
- assessment.jobsite = NULL.
- Kui sisendis esitatud goalScope = "INDIVIDUAL":
- assessment.personalCode = Päringu käivitanud kasutaja isikukood.
- assessment.jobsite = Sisendis esitatud "jobsite" väärtus.
- assessment.endDate <= Päringu teostamise aeg - 5 aastat.
- Sama assessment.assessmentType korral on assessment.endDate suurim.
- Sama assessment.endDate korral valitakse objekt, mille assessmentChallenge.createdAt on suurim.
- 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.
- Süsteem otsib kõiki sisendis esitatud Objektid#AssessmentChallenge objekte, mille:
- Süsteem loob uue eesmärgi objekti.
- Süsteem loob Objektid#Goal objekti järgmiste parameetritega:
- id = UUID
- institution.id = Sisendis esitatud "institutionId" väärtus
- institution.name = tokenist asutuse ID järgi
- institution.type = Kasutaja tokenist sisendis esitatud institutionId väärtusega seotud institutionType
- Kui sisendis esitatud goalScope = "INDIVIDUAL":
- personalCode = Päringu käivitanud kasutaja isikukood
- jobsite = Sisendis esitatud "jobsite" väärtus
- Kui sisendis esitatud goalScope = "INSTITUTIONAL":
- jobsite = NULL
- name = Sisendis esitatud "name" väärtus
- description = Sisendis esitatud "description" väärtus
- aiSmartScore.specific = NULL
- aiSmartScore.measurable = NULL
- aiSmartScore.achievable = NULL
- aiSmartScore.relevant = NULL
- aiSmartScore.timely = NULL
- aiSmartScore.average = NULL
- aiDescription = NULL
- assessmentChallengeIds = Sisendis esitatud "assessmentChallengeIds" väärtused
- archived = false
- audit = audit (loomine)
- previousGoalId = eesmärgi ID, mis on sisendis esitatud asutuse/isiku aktiivsete eesmärkide järjekorras viimane.
- Eesmärkide otsingus arvestatakse järgmisi tingimusi:
- institution.id = Sisendis esitatud "institutionId" väärtus
- archived = false
- Kui sisendis esitatud goalScope = "INDIVIDUAL":
- personalCode = Päringu käivitanud kasutaja isikukood
- jobsite = Sisendis esitatud "jobsite" väärtus
- Kui sisendis esitatud goalScope = "INSTITUTIONAL":
- jobsite = NULL.
- Kui ühtegi tingimustele vastavat eesmärki ei leita, määratakse previousGoalId väärtuseks NULL.
- Eesmärkide otsingus arvestatakse järgmisi tingimusi:
- Süsteem loob Objektid#Goal objekti järgmiste parameetritega:
- Süsteem lisab eesmärgi looja eesmärgi meeskonnaliikmeks protsessijuhi rollis.
- Süsteem kontrollib, kas kasutajal on olemas meeskonnaliikme kirjed sisendis esitatud (=rollis valitud) asutuse / ametikoha ja asutuse piires. Arvestatakse ka arhiveeritud eesmärke.
- Kui sisendis esitatud goalScope = "INDIVIDUAL":
- Süsteem kontrollib, kas kasutajal on vähemalt üks eesmärk, mis on seotud sisendis esitatud (=rollis valitud) ametikoha ja asutusega.
- Süsteem otsib kasutajaga seotud meeskonnaliikme kirjeid:
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- personalCode = Kasutaja isikukood
- Kui meeskonnaliiget ei leita, jätkub protsess sammust 5.a.iii.
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- Süsteem otsib Objektid#Goal objekte, mille:
- goalScope = INDIVIDUAL
- institution.id = Sisendis esitatud "institution.id" väärtus = Kasutaja poolt valitud rolliga seotud asutus
- jobsite = Sisendis esitatud "jobsite" väärtus = Kasutaja poolt valitud rolliga seotud asutus
- personalCode = Kasutaja isikukood
- teamMembers.id = üks leitud meeskonnaliikmete ID-dest (Objektid#GoalTeamMember.id)
- Kui vähemalt üks tingimustele vastav eesmärk leitakse, jätkub protsess edasi sammust 5.b.
- Kui eesmärki ei leita, jätkub protsess edasi sammust 5.a.iii.
- Süsteem otsib kasutajaga seotud meeskonnaliikme kirjeid:
- Süsteem kontrollib, kas kasutajal on vähemalt üks eesmärk, mis on seotud sisendis esitatud (=rollis valitud) ametikoha ja asutusega.
- Kui sisendis esitatud goalScope = "INSTITUTIONAL":
- Süsteem otsib kasutajaga seotud meeskonnaliikme kirjeid:
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- personalCode = Kasutaja isikukood
- Kui meeskonnaliiget ei leita, jätkub protsess sammust 5.a.iii.
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- Süsteem kontrollib, kas mõni leitud meeskonnaliikmete kirjetest on seotud vähemalt ühe eesmärgiga, mis kuulub sisendis esitatud asutusele.
- Süsteem otsib Objektid#Goal objekte, mille:
- institution.id = Sisendis esitatud "institution.id" väärtus
- goalScope = INSTITUTIONAL
- jobsite = NULL
- personalCode = NULL
- teamMembers.id = üks leitud meeskonnaliikmete ID-dest (Objektid#GoalTeamMember.id)
- Kui vähemalt üks tingimustele vastav eesmärk leitakse, jätkub protsess edasi sammust 5.b.
- Kui eesmärki ei leita, jätkub protsess edasi sammust 5.a.iii.
- Süsteem otsib Objektid#Goal objekte, mille:
- Süsteem otsib kasutajaga seotud meeskonnaliikme kirjeid:
- Kui kasutajal ei ole meeskonnaliikme kirjet sisendis esitatud (=rollis valitud) asutuse / ametikoha ja asutuse piires:
- Süsteem loob uue Objektid#GoalTeamMember objekti, täites väljad:
- id = UUID
- personalCode = Kasutaja isikukood
- firstName = Päringu käivitanud kasutaja eesnimi
- lastName = Päringu käivitanud kasutaja perenimi
- email, phoneNumber, institution, jobTitle = jäävad tühjaks
- profileColor = Süsteem valib eesmärgi juures unikaalse värvikoodi etteantud värvikoodide seast.
- Süsteem loob uue Objektid#GoalTeamMember objekti, täites väljad:
- Kui sisendis esitatud goalScope = "INDIVIDUAL":
- Süsteem seob leitud või just loodud meeskonnaliikme kirje eesmärgiga:
- Süsteem otsib Objektid#Goal objekti, mille id = just loodud eesmärgi ID ja uuendab selle andmeid järgmiselt:
- teamMembers nimekirja lõppu lisatakse uus kirje järgmiste andmetega:
- teamMembers.id = leitud või just loodud Objektid#GoalTeamMember.id
- teamMembers.roleType = "TEAM_LEAD" (viide klassifikaatorist HSILM_GOAL_ROLE)
- teamMembers nimekirja lõppu lisatakse uus kirje järgmiste andmetega:
- Süsteem otsib Objektid#Goal objekti, mille id = just loodud eesmärgi ID ja uuendab selle andmeid järgmiselt:
- Süsteem kontrollib, kas kasutajal on olemas meeskonnaliikme kirjed sisendis esitatud (=rollis valitud) asutuse / ametikoha ja asutuse piires. Arvestatakse ka arhiveeritud eesmärke.
- Süsteem tagastab loodud eesmärgi andmed.