Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request]: Implement recommended lessons in home tab (Learner Dashboard Redesign) #21488

Open
amyyeung17 opened this issue Dec 19, 2024 · 2 comments
Labels
enhancement Label to indicate an issue is a feature/improvement Impact: Medium Will improve quality-of-life for at least 30% of users. Work: Medium The means to find the solution is clear, but it isn't at good-first-issue level yet.

Comments

@amyyeung17
Copy link
Contributor

Is your feature request related to a problem? Please describe.

This is part of #18384. Currently, there is no official recommendation system for the home tab in the new learner dashboard. It is temporarily implemented to suggest the next available classroom lessons only. This can not apply to explorations and collections.

Describe the solution (or solutions) you'd like

  • Implement some formal recommendation system that handles all the different lesson types
  • If the temporary solution suffices for classroom lessons, it can potentially be improved. Will need to verify the order in which completed nodes are recorded and if this handles out of order sequences

Describe alternatives you've considered and rejected

N/A

Additional context

N/A

@amyyeung17 amyyeung17 added triage needed enhancement Label to indicate an issue is a feature/improvement labels Dec 19, 2024
@amyyeung17 amyyeung17 changed the title [Feature Request]: Recommended lessons in home tab (Learner Dashboard Redesign) [Feature Request]: Implement recommended lessons in home tab (Learner Dashboard Redesign) Dec 19, 2024
@seanlip
Copy link
Member

seanlip commented Dec 29, 2024

@amyyeung17 I think the temporary solution is actually what we want to do -- we only want to recommend "curated" lessons here, and not community lessons.

Given the above, could you please update this issue to clarify what further updates are needed? You mention "Will need to verify" in the second bullet point but I'm a bit confused about whether there's actually a bug here or not. If there's a bug, would it be possible to provide the repro steps?

Thanks!

@amyyeung17
Copy link
Contributor Author

amyyeung17 commented Dec 29, 2024

@seanlip To be honest, this should have been include in #21486 as well. These are more potential areas of improvements rather than issues. I tried examining the backend to see if the completed nodes are organized when added finished out of order. Something like if a user finishes 2, 1, 3 would it be automatically be sorted to 1, 2, 3? The old learner dashboard does not consider these cases and returns the next in-progress node as getCompletedNodeTitles().length + 1, regardless of what node was actually completed.

Another example, out of [1, 2, 3, 4]:

  • User completes 3, 1. The next in-progress lesson should be 2 and the 4 is recommended.
  • User completes 1, 3. The next in-progress lesson should be 4 and the 2 is recommended.
  • User completes 4 only. The next in-progress lesson should be 1 and the 2 is recommended.

I've handled this by sorting it in the frontend. However, it is fairly complicated. First, I had to loop through the story nodes and find the actual position of each completed node, since the real ids aren't representative of where they are (ex. completed ['kh', 'cd', 'pl'] out of ['op', 'kh, 'cd', 'ad', 'pl']). I would return the next in-progress and recommendation nodes based on the positions. There are a lot of edge cases to consider. Knowing that 'pl' is the most recent of the completed nodes, I loop to see if index = 0 is available. Now that I've marked 'ol' (index = 0) as in-progress, I have to loop again to find the next available node to recommend which is 'ad'.

While I'm fairly certain the completed nodes are added out of order, I think double-checking the backend would be a good idea.

Improvements that could be made in these scenarios

  • If my assumption is verified, we can improve this by removing the first loop. The new problem is that we can't tell what the most recent completed node is and would need some way to track it.
  • Move all of this to the backend and clean up the frontend
  • If we change the recommendation system, this will need to modified and other edge cases will need to be taken care of

Ultimately, all of the code can coincide. This is more about future plans and code maintainability.

@seanlip seanlip added Impact: Medium Will improve quality-of-life for at least 30% of users. Work: High It's not clear what the solution is; will need investigation. Work: Medium The means to find the solution is clear, but it isn't at good-first-issue level yet. and removed triage needed Work: High It's not clear what the solution is; will need investigation. labels Dec 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Label to indicate an issue is a feature/improvement Impact: Medium Will improve quality-of-life for at least 30% of users. Work: Medium The means to find the solution is clear, but it isn't at good-first-issue level yet.
Projects
Status: Todo
Development

No branches or pull requests

2 participants