knowit / Dataplattform-issues

4 stars 0 forks source link

Separere ut datahenting for motivasjons- og kompetanse-filter #629

Closed thoasc closed 1 year ago

thoasc commented 2 years ago

I dag aggregeres data for motivasjon og kompetanse inn i dataene for hver rad i ansatt-tabellen (endepunktet employeeTable i Folk-backenden).

Det er to utfordringer med dette:

Derfor bør dataene for filtrering på motivasjon og kompetanse separeres ut i et eget endepunkt, slik at de kan fjernes fra employeeTable-endepunktet, og heller hentes separat (og dermed også bare hvis brukeren har tilgang til dem, når det ønskes implementert).


Et par mulige løsninger her er: 1) Hente data fra employeeMotivationAndCompetence-rapporten, og omstrukturere i backenden til en datastruktur ala den som er skissert nedenfor. Dette kan være en litt ineffektiv løsning, der Folk-backenden må gjøre mye jobb. 2) Lage en ny rapport i dataplattform-API-et, der man henter ut dataene i en struktur som krever minimalt med bearbeiding for å matche noe ala datastrukturen som er skissert nedenfor. Her kan det være aktuelt å bruke Presto array/aggregerings-funksjoner, samt casting til JSON, i SQL-spørringen.

Skisse av datastrukturen som kan returneres fra det nye separate endepunktet: (Scorene er lagt i en liste, og ikke et objekt, i et forsøk på å redusere størrelsen på datastrukturen litt.)

{
    "Hovedkategori": {
        "Underkategori": [
             "fornavn.etternavn@knowit.no": [<kompetanseScore>, <motivasjonsScore>],
             "fornavn.etternavn@knowit.no": [<kompetanseScore>, <motivasjonsScore>],
             ...
        ],
        "Underkategori": [
             "fornavn.etternavn@knowit.no": [<kompetanseScore>, <motivasjonsScore>],
             "fornavn.etternavn@knowit.no": [<kompetanseScore>, <motivasjonsScore>],
             ...
        ],
    }
    "Hovedkategori": {
        "Underkategori": [
             "fornavn.etternavn@knowit.no": [<kompetanseScore>, <motivasjonsScore>],
             "fornavn.etternavn@knowit.no": [<kompetanseScore>, <motivasjonsScore>],
             ...
        ],
        ...
    }
}

I Folk-frontenden, kan så filter-boksene (for kompetanse og motivasjon) på toppen av ansatt-tabellen selv ha ansvar for å hente inn og holde styr på data fra dette endepunktet.

Dette vil kreve en endring i implementasjonen av filteringen av listen over ansatte som skal vises i ansatt-tabellen:

sigand commented 1 year ago

Skissert struktur er ikke mulig å få til, da rapport-endepunktet egentlig er sql. Nøstede strukturer støttes ikke