Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Problem

As a system, Collections such as courses are associated with batch information to suggest if collection has open batches/ closed batches. In the case of non-trackable collections like textbooks etc. The info is not present as the information is not relevant. This brings a unique problem of discoverability. When user searches for Trackable collection, Consumption may end up with trackable. collections with closed batches which is not relevance to the user. In case of Global/Generic search this provides a unique challenge to filter only open batch trackable collections + Non Trackable collections to be returned as part of search query.

Present System

In the present system, Tracked Collections are stamped with metdata of batch.status to indicate the presence of open batches.

Non Trackable Collection

Code Block
languagejson
"content": [{
  "trackable": {
    "enabled": "No",
    "autoBatch": "No"
   }
]

Trackable - Open Batch

Code Block
{
  "content": [
    {
      "trackable": {
        "enabled": "Yes",
        "autoBatch": "No"
      },
      "batches": [
        {
          "name": "CBE Module 1- Batch 2021",
          "batchId": "01319332749176832013",
          "enrollmentType": "open",
          "enrollmentEndDate": "2021-12-30",
          "startDate": "2021-01-14",
          "status": 1
        }
      ]
    }
  ]
}

Trackable - Closed Batch

Code Block
languagejson
{
  "content": [
    {
      "trackable": {
        "enabled": "Yes",
        "autoBatch": "No"
      },
      "batches": [
        {
          "name": "CBE Module 1- Batch 2021",
          "batchId": "01319332749176832013",
          "enrollmentType": "open",
          "enrollmentEndDate": "2021-12-30",
          "startDate": "2021-01-14",
          "status": 0
        }
      ]
    }
  ]
}

Proposed System

In the proposed system, intent is to make collection searchable for batch status irrespective of whether the collection is trackable or non trackable. This gives the flexibility for the user to create custom filter preferences on “Open Batches“ for Collection.

Solution

Using Existing metadata information

In this solution, collection metadata information metadata which represents batch information to be available with default values. For Ex:

Code Block
languagejson
"content": [{
  "trackable": {
    "enabled": "No",
    "autoBatch": "No"
   }
]

Code Block
languagejson
"content": [{
  "trackable": {
    "enabled": "Yes",
    "autoBatch": "No"
   },
   "batches": [
    {
      "name": "",
      "batchId": "",
      "enrollmentType": "",
      "enrollmentEndDate": "",
      "startDate": "",
      "status": -1
    }
  ]}
]

Note: This Approach would mean we need to carry migration with cassandra for existing “Non Trackable Collections“.

Using a new Attribute at Collection Level metadata.

In this solution, the collection metadata would have new attribute to suggest the batch count explicitly.

Code Block
"content": [{
  "trackable": {
    "enabled": "No",
    "autoBatch": "No"
   }
]
Code Block
"content": [{
  "trackable": {
    "enabled": "No",
    "autoBatch": "No"
   },
   "batchAvailablilty":"DEFAULT"
]

Non Trackable Collection - Open Batch

Code Block
{
  "content": [
    {
      "trackable": {
        "enabled": "Yes",
        "autoBatch": "No"
      },
      "batches": [
        {
          "name": "CBE Module 1- Batch 2021",
          "batchId": "01319332749176832013",
          "enrollmentType": "open",
          "enrollmentEndDate": "2021-12-30",
          "startDate": "2021-01-14",
          "status": 1
        }
      ]
    }
  ]
}

Code Block
languagejson
{
  "content": [
    {
      "trackable": {
        "enabled": "Yes",
        "autoBatch": "No"
      },
      "batchAvailablilty":"OPEN"
      "batches": [
        {
          "name": "CBE Module 1- Batch 2021",
          "batchId": "01319332749176832013",
          "enrollmentType": "open",
          "enrollmentEndDate": "2021-12-30",
          "startDate": "2021-01-14",
          "status": 1
        }
      ]
    }
  ]
}

Non Trackable Collection - Closed Batch

Code Block
{
  "content": [
    {
      "trackable": {
        "enabled": "Yes",
        "autoBatch": "No"
      },
      "batches": [
        {
          "name": "CBE Module 1- Batch 2021",
          "batchId": "01319332749176832013",
          "enrollmentType": "open",
          "enrollmentEndDate": "2021-12-30",
          "startDate": "2021-01-14",
          "status": 0
        }
      ]
    }
  ]
}

Code Block
languagejson
{
  "content": [
    {
      "trackable": {
        "enabled": "Yes",
        "autoBatch": "No"
      },
      "batchAvailablilty":"CLOSED"
      "batches": [
        {
          "name": "CBE Module 1- Batch 2021",
          "batchId": "01319332749176832013",
          "enrollmentType": "open",
          "enrollmentEndDate": "2021-12-30",
          "startDate": "2021-01-14",
          "status": 1
        }
      ]
    }
  ]
}

Note: This Approach would mean we need to carry migration with cassandra for all collections (“Both Trackable and Non Trackable“)

Sample Search Query for Solution 1 & 2

Code Block
{
  "request": {
    "filters": {
      "primaryCategory": [
        "Course",
        "Course Assessment"
        "Digital Textbook"
      ],
      "batches.status": [-1,1],//Not Sure If this is possible
      "status": [
        "Live"
      ],
      "se_boards": [
        "CBSE"
      ],
      "se_mediums": [
        "English"
      ],
      "se_gradeLevels": [
        "Class 5"
      ]
    },
    "limit": 100
  }
}
Code Block
{
  "request": {
    "filters": {
      "primaryCategory": [
        "Course",
        "Course Assessment"
        "Digital Textbook"
      ],
      "batchAvailablilty":["DEFAULT","OPEN"],
      "status": [
        "Live"
      ],
      "se_boards": [
        "CBSE"
      ],
      "se_mediums": [
        "English"
      ],
      "se_gradeLevels": [
        "Class 5"
      ]
    },
    "limit": 100
  }
}