Challenge Overview
Project Overview
Our client want to use Amazon mturk to invite game players to play set of games. Each Human Intelligence Task (HIT) will be for completing a "task" (analogous to a subset of levels in the game versions) in exchange for payment. Ideally, we would keep this as short and simple as possible - i.e. one "task" gets the payment (instead of multiple progressive levels).
In this challenge we are making several changes and update to the mturk web dashboard, and mturk api to support associating qualifications to HITs, in addition to some other fixes in existing code base.
Challenge Requirements
You will address the following in this challenge :
- Managing Qualification Type API endpoints
- Add new endpoints to mturk api to support manipulating qualification type
- It requires at least admin role to manage qualification type
- Create new model for these endpoints, called qualificationType :
- (updated requirement!) ID of created Qualification Type from Amazon API.
AutoGranted will always be true. And AutoGrantedValue must be present in the create call always.- DomainId (required) - store the domain ID used to create the qualification type
- Auditing fields - as we did in other models in the api
- Endpoints that changing the state of the qualification type should require at least admin role. Others any role can call it.
- We will create endpoints that wrap endpoints from Amazon API :
- UpdateQualificationType
- SearchQualificationTypes
- GetQualificationType
- DisposeQualificationType
- CreateQualificationType
- The endpoints will work as proxy to amazon api, it will accept all fields from the amazon QualificationType as non-persistent fields (meaning that we don't persist them in DB), in addition to our qualificationType custom model.
- We will only support integer qualification type values.
- Update postman.json file to include the new endpoints
- (Updated Requirement!) Managing HIT API :
- Update the Task model (used to track created HITs) :
- QualficationRequirements (optional) - Array/Map of qualification requirement to be associated with created HIT (It is up to you not to store this field in db, as it will be available when we retrieve HIT information from amazon api).
- QualificaitonsToBeGranted (optional)- Array/Map of qualification types/values parameters to be assigned to workers after accepting their assignments.
- Update the HIT API to create the new fields in amazon api and persist it in DB.
- Update the Task model (used to track created HITs) :
- (New Requirements!) Accept Assignment API :
- Update the assigment api to assign qualification to workers - when approving an assignment - using QualificationsToBeGranted from Task entry. Refer to this method for information about assigning qualifications.
- Admin Dashboard changes :
- Add "Manage Qualification Types" button in home page.
- We need two pages to manage qualification types
- The mturk admin dashboard will delegate the creation to the mturk api
- First page will include a table that list all existing qualification types of the logged in domain
- It will have actions to dispose/create/delete/update qualification type
- It should support pagination, note that amazon api enforces the pagination.
- It will list the qualification types of the user domain.
- There should also be a filter that let user view other qualification type from other domains associated with the user.
- The second page will be used to create/update qualification type.
- It should also contain buttons to dispose the qualification type.
- The qualification type will always be auto granted, so auto granted integer must be required in the form.
- In /dashboard page we need ability to see the status of the HIT
- Update API endpoint to support retrieving the information.
- Creating Hit :
- Remove the 'standard question' secton in create hit page (/hit/create), we will only allow 'external question' to be created.
- Remove HIT ID column, we only need the 'hit name' to link to hit details page.
- Add new panel to specify the "qualification requirements" with the HIT
- It is optional.
- It should support adding one or more qualification requirements
- Use the name of the qualification types instead of it's IDs so it is easier for user to pick the correct qualification type id.
- It should only list qualification types related to the domain the hit will be associated with.
- It should allow specifying one or more integer value per qualification requirement.
- It should list of supported comparators that work with IntegerValue.
- There should be a button to manage qualification types from this page, it should take user to the manage qualification types page.
- (new requirement!) Add new panel to specify the "qualification to be granted" after accepting an assignment :
- It is optional
- It should support adding one or more qualification type
- Use the name of the qualification types instead of the IDs so it is easier for user to pick the correct qualification type id, the form would look like this :
<qualification type names pick list> <add button> (below demonstrate how it looks like when adding an item from list) :
<qualification type name 1> <input field represents an integer value (optional)> <x> ( x icon is needed to remove the qualification type)
...
<qualification type name n> <input field represents an integer value (optional)> <x>
- Update mturk api to support the changes (if needed!)
- (New Requirements!) Viewing Hit :
- Update view hit details page to view the new qualification requirement and qualification types to be granted fields.
- Update mturk api to support the changes (if needed!)
Possible Scenarios (Updated!!)
- (HIT A) Admin creates a HIT that has no qualification requirements, and Q1 as qualification to be granted (i.e. Play Game Tutorial Hit)
- When worker apply for this hit without the need to obtain any qualification for it.
- When owner accept the submitted assignment from worker, backend will assign qualification (Q1) to that worker.
- (HIT B) Admin creates a HIT with 'Q1' must exist as qualification requirement, and Q2 as qualification to be granted.
- Only workers who has completed Hit A successfully can apply to this HIT.
- When owner accept the submitted assignment from worker, backend will assign qualification (Q2) to that worker.
- Admin creates a HIT that require Q1 and Q2 qualification requirements to exist, and Q3 with value 30 as qualification to be granted.
- Workers who successfully completed Hit A and HIT B can work on this one.
- When owner accept the submitted assignment from worker, backend will assign qualification Q3 with value 30 to the worker.
- Admin creates a HIT that both 'Q1' and 'Q2' qualification must exist in worker profile, and Q3 to be greater than 20, also it has Q3 with value 40 as qualification to be granted.
- The workers who completd the previous HITs can apply here.
- Workers who complete the task will be assigned Q3 with value 40.
- .. you can think of other scenarios but the mentioned above almost cover all cases.
Testing
- You will use mturk sandbox for testing.
- You can view created hit by navigation to worker sandbox search for the title of the hit.
- You will need to accept it and manually navigate to the website to simulate the player flow.
- Make sure you can complete the outlined flow above as described. Reviewers are expected to do the same.
Github Repo
API exists in private repositories, request access in challenge forums if you don't have it already.
References
Final Submission Guidelines
Submission Deliverables
Below is an overview of the deliverables:
- Git patch of the changes of each repository.
- Text file with notes to reviewer.
- Update README.md in the API and admin web dashboard git folders, this file should also be part of the patch file.
- You don't need to submit a word document for deployment guide. But you need to submit a very detailed document for all possible scenarios of the new feature, and how to test it.
Final Submission
For each member, the final submission should be uploaded via the challenge detail page on topcoder.com.