Bulk Upload Questions
https://project-sunbird.atlassian.net/browse/SB-22801
Teachers have a large pool of questions they would have already created for conducting tests, quizzes, and exams. We want to leverage all these assets available in abundance in the community of educators through ecosystem participation. We have seen following scenarios where the need of bulk upload of questions has come up:
An organisation already have questions in an existing system. Hence creating them manually through UI is a lot of effort
An organisation is creating new questions, but wants to import questions in multiple systems, not just Sunbird (e.g. DIKSHA). Hence they would like to keep the questions in a common spreadsheet format and bulk uploaded into multiple systems
An organization is creating new questions and also simultaneously getting the questions translated into multiple languages. Hence having the questions in a spreadsheet is easy to share them with multiple translators and get the translations done.
Sunbird enables creation of question sets through various workflows enabled in Sourcing solution. We plan to complement those workflows by enabling bulk upload of questions in following workflows (in order of priority)
Bulk upload questions within a question set such that questions are linked at the right place in the question set. Here the question set might be created in a target collection driven sourcing project or in a taxonomy driven sourcing project.
Bulk upload questions within a question set such that questions are linked at the right place in the question set. Here the question set is the target object in a sourcing project.
(Future) Bulk upload questions in a framework driven sourcing project.
To enable 1 & 2 above, capabilities fundamentally requires
Ability to bulk upload questions
Link them at the right place in a question set
We will be enabling bulk upload of questions and linking them to a question set considering CSV (comma separated values) input. Users are likely to use tools such as Google Sheets, Microsoft Office Excel, and other spreadsheet editing tools. Detailing out the key milestones below
Milestone 1: Bulk Upload Questions
The goal is to upload questions with its associate media (images)
Support Multiple Choice Question (MCQ) with validations such as
Minimum 2 options, maximum 4 options
At least and only one correct option
Question and Options can have images - provided as Google Drive public link. Google Drive path for image is provided by user which is extracted by system (bulk upload tool).
Images will be placed at the beginning of the text with left align and small size (25%).
Question and Options can have either Images only or text only or both.
User can download sample bulk upload format. User provides CSV in the prescribed format filled with required details.
Mandatory columns (configurable) are coloured in red.
Basic validations such as
Text contains only unicode characters
Any cell does not contain any images
All mandatory columns are filled for a particular row in CSV
- Kartheek Palla Please share a final format of CSV for Bulk Uploading Questions similar to bulk upload content
Explanation of Bulk Upload Question format https://docs.google.com/spreadsheets/d/1ndzapGGV6q8698x-NQzK_ufln4YX1HQ09jsFsC7kA60/edit?usp=sharing
Name is set to default as Multiple Choice Question for this version.
Question Category will be Multiple Choice Question for this version.
Additional Category is derived from the question set
Question Text will support text as per the Text validations listed below. Maximum character limit for Question Text is 1000 (configurable). Question Text and Question Image are merged to compose the Question Body. Question Body is required to create a question in the platform.
Question Image will support Google Drive path (publicly accessible) for images. Images will be placed at the beginning of the Question Text with left align and small size (25%) styling.
Option Layout will support three possible values: Horizontal, Vertical, Grid OR 1, 2, 3.
OptionX will support text as per the Text validations listed below. Maximum character limit for Option Text is 500 (configurable). Option Text and Option Image are merged to compose the Option Body. Option Body is required to create a question in the platform.
OptionXImage will support Google Drive path (publicly accessible) for images. Images will be placed at the beginning of the Option Text with left align and small size (25%) styling.
Answer No will be a number between 1 to 4.
Question Set ID to be auto-derived when user is uploading questions within a question set
Level 1 Question Set Section will be Level 1 Section’s (unit) Name so that question can be linked to that folder.
Taxonomy Framework Categories: These will derived from the Question set when questions are being uploaded within a question set. The column headings are:
Org_FW_Board
Org_FW_Medium
Org_FW_Class
Org_FW_Subject
Org_FW_Topic
Org_FW_LearningOutcome is not supported in bulk upload sheet. User can edit from UI.
Org_FW_Skill is not supported in bulk upload sheet. User can edit from UI.
DifficultyLevel is not supported in bulk upload sheet. User can edit from UI.
Additional Details about the question
Keywords
Audience
Author
Copyright
License
Attributions
Milestone 2: Link Questions to a Question Set which are being bulk uploaded
The goal is to link questions at relevant place in a question set hierarchy structure
Question Set ID to be auto-derived when user is uploading questions within a question set
Level 1 Question Set Section will be Level 1 Section’s (unit) Name so that question can be linked to that folder.
Bulk Upload Questions template
https://docs.google.com/spreadsheets/d/1ndzapGGV6q8698x-NQzK_ufln4YX1HQ09jsFsC7kA60/edit?usp=sharing
User flow - Contributor
Flow 1: Contributors will be able to upload questions within a question set
As a contributor I should be able to bulk upload questions for a question set in a sourcing project. Following is the flow to enable this:
When a contributor logs into contribution portal and opens a target collection page of a project to which she can contribute (i.e. her nomination is accepted), currently against each target collection there is a “Create New” action using which user can create a question set.
Given user has access to a sourcing project where she can contribute, When she creates a question set within the sourcing project, Then she can upload questions to the question set
User will see an option to “Bulk Upload Question” in the question set similar to “QR codes” in the collection/question set editor.
Clicking “Bulk Upload Question” option, Bulk Upload Question screen should open up. The screen should have following options
Option to select a Bulk Upload Question (metadata) file from local folder (of user’s system)
Assumption: the metadata file will have publicly accessible URLs to the question related filesThere is a link to sample metadata file: “Sample Bulk Upload Question metadata file”
User selects metadata file, user clicks “Upload”. System provides a message “Validating file”
The system should first validate metadata file against the selected files. Following are the validations:
All the columns are available
All the mandatory columns have values filled in
In case there are errors in the metadata file validation, display relevant error message on the Upload dialog
Some columns are not available:
“Metadata file validation failed. Following columns are not found in the file. Please check and upload again: <list the missing column names>”Some mandatory columns have values missing:
“Metadata file validation failed. Following rows have missing values. Please check and upload again: <list the row numbers (starting from 1) with missing values>“
In case of metadata file validation errors, “Upload” button is disabled unless user re-selects a metadata file again.
In case metadata file doesn’t have any validation errors, the dialog shows
“Bulk Upload is in progress.
Number of questions uploaded successfully: <no.>
Number of questions failed: <no.>
Number of questions pending: <no.>”After the bulk upload is complete. There is an option to download status report as a csv. The status report should include identifier of the question (as generated by the system i.e. API response) and status (Success, Failure, Error, Invalid, etc)
There is a “Close” button to close the dialog. When user clicks it, it is returned to Question set editor. User cannot close it while bulk upload is in progress.
In the Question Set page, whenever user clicks “Bulk Upload Questions”, in case a bulk upload is in progress, it shows the status dialog as described in point 8. (This will be in future since we do not have support for background / minimised upload in the first version)
User can edit any question after it is uploaded and saved as draft in the question set. Using this user can Learning Outcome or any other detail of the question.
Limits on number of question, size:
Number of question per question set for one bulk upload job: 300. Maximum 300 questions per CSV
Maximum size of each content is same as max size supported by system.
Reference material
Bulk Upload Question Guidelines (current manual script driven process) https://docs.google.com/document/d/1PW5b-Mdie6--wsFhGzC-fxVcPbvax4cA-hJyajr8Xew/edit#heading=h.we2s93hce9f4
Bulk Upload Content related /wiki/spaces/DO/pages/1581350917
Implementation details
Create a generate QuML API for various interaction types such that it takes required parameters as input and generate a QuML output. For example, Multiple Choice Question fundamentally contains Question, Options, and Correct Answer. The API takes these 3 as inputs in HTML or JSON format and generates a QuML spec. This also allows QuML to evolve rapidly as just by updating this ‘Generate QuML’ API with latest QuML spec, we can upgrade various places where Questions & Question sets are getting created such as Question Set Editor, Bulk Upload Questions & Question sets.
This logic exists today ingrained in the Question creation component. It needs to be extracted out and made available as API / something.
Kartheek Palla What will be the technology stack? Please list out specific tech stack
Angular (version 9) and Java (with Scala)
Images: Extracting files from Google Drive is already available as a component in context of ‘Bulk Upload Content’. Read more here.
Images also exist independently as Media Asset in the system - so first they need to be uploaded and then the system generated identifier need to be referred in the Question Body.
Question Set APIs:
http://docs.sunbird.org/latest/apis/questionapi//#tag/QuestionSet-APIs
Question APIs:
http://docs.sunbird.org/latest/apis/questionapi//#tag/Question-APIs
Add Comment