T-Systems-MMS/skoop-server

Skill Priorities Report

Closed this issue · 2 comments

The MySkills Server should provide the possibility to save the current skill priorities statistics as a persistent report which can be used at a later point of time to view the historic state of the skill priorities.

The skill priorities report should be generated using the same logic which also serves the skill priorities statistics API. Currently the report will include the top 10 skillls with the highest average priorities.

The skill priorities report should be stored as a new NodeEntity and should include all the data to freeze for the point of time the report is created. It should be a self-contained node which has no relationships to other "live" nodes.

The MySkills Server should provide the appropriate API endpoints to create and retrieve skill priorities reports. The API requires authentication with a user having the default role "ROLE_USER".

After my code review I came to the conclusion that it could be a good idea to have a denormalized data model for the reports. You created a quite complex structure of node and relationship entities which effectively replicate the original domain model of users, skills and their relationship. I would suggest a slightly reduced structure:

Class SkillPriorityReport

This should be better named UserSkillPriorityAggregationReport. A list of such aggregation reports is referenced from the class UserSkillPriorityReport.

This should be a node entity, not a relationship entity.

The skill data „name“ and „description“ should simply be embedded as „skillName“ and „skillDescription“ directly in this entity rather than referring to a SkillReport entity.

It should refer to a list of UserSkillReport node entities.

Class UserSkillReport

This should be a node entity, not a relationship entity.

The skill and user data should simply be embedded directly, e.g. „skillName“ and „userName“, right next to the levels and priority fields.

Classes SkillReport and UserReport

There is no need for these classes because for reports we can have some denormalized data model in order to reduce the graph depth.

Closing. Basic feature set has been implemented and tested (at least manually).