-
Notifications
You must be signed in to change notification settings - Fork 171
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
573e569
commit 8911798
Showing
1 changed file
with
49 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
31. Vertical Content Tagging | ||
============================= | ||
|
||
Status | ||
-------- | ||
Accepted (January 2025) | ||
|
||
Context | ||
--------- | ||
The openedX's `course-discovery` service currently lacks an efficient and flexible way to categorize courses by | ||
granular subject areas and verticals. The existing mechanisms (e.g., tags, Primary Subject) are limited, primarily | ||
partner-driven, and often misaligned with business-specific needs for taxonomy and categorization. | ||
Partner-driven use cases are different from business-specific use cases. | ||
|
||
For example, if a partner tags a Python course as a programming language course, | ||
the business wants to tag it as a Data Science tool (to learn and practice Data Science primarily). | ||
|
||
Objective | ||
----------- | ||
This Vertical Tagging functionality ensures that the portfolio of courses is aligned with business objectives | ||
by granular tagging using vertical filters. | ||
|
||
Decision | ||
---------- | ||
A new app will be created for the Vertical Content Tagging functionality in the course-discovery. | ||
|
||
The following models will be added to support the vertical tagging functionality: | ||
|
||
- **VerticalFilter:** This model will contain the vertical's name and slug value and an active flag. | ||
- **SubVerticalFilter:** This model will contain the sub-vertical's name, slug value, vertical reference, | ||
and an active flag. | ||
- **BaseVerticalFilter:** This abstract model will reference the VerticalFilter and SubVerticalFilter models and will be used for product types. | ||
- **CourseVerticalFilter:** This model extends BaseVerticalFilter and will contain references to the Course model to assign verticals and sub-verticals to courses. | ||
|
||
Currently, the decision is to support vertical tagging for courses only. In the future, | ||
the same functionality can be extended to other product types (e.g., Programs, Degrees, etc.). | ||
|
||
A new user group will be created to grant access to the admin panel for assigning vertical and sub-vertical tags to courses. | ||
However, this user group will not have permission to manage vertical and sub-vertical filters, this functionality will be restricted to superusers only. | ||
|
||
This new user group will be managed using a base settings configuration variable. To implement this, a new user group will be created | ||
and added to the base settings configuration. | ||
|
||
Alternatives Considered | ||
------------------------- | ||
- Add New Models in course_metadata: Keeping functionality within a single repository, simplifying integration. | ||
However, it risks app bloat, increased coupling, and reduced readability due to the large number of existing models. | ||
- Create a Separate Plugin: Decouples vertical tagging for better scalability and modularity, with a plug-and-play structure. | ||
However, it requires significant initial effort, coordination, and limits Django ORM relationships with course-discovery models. |