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.
In this challenge we are making several changes and update to the mturk web dashboard, and mturk api to support notifying users about HITs status, listing workers, and enable features to block/unblock/notify/grant-bonus to these workers.
Challenge Requirements
You will address the following in this challenge :
Real Time Notifications
-
We need to enable notification for any HIT to be created.
-
You will refer to this page for more information about how to enable notification for HITs
-
Use Amazon SQS as notification destination for every HIT.
-
Create a cron job to keep pulling messages from SQS
-
We need to have a notification collection to store pulled notifications, so we create a notification record for every new message, the message should be associated with Task id in the record.
-
Notify - via email and real time - both the global user, and admin users of the domain associated with the HIT.
-
-
Add notification icon at header that updates in real time to bring user attention to new notifications.
-
It should be an icon, it can be gray when no notification exists, and can be red if notifications exist.
-
when user click on the notification it will take user to a page that list all notifications.
-
List workers page
-
Add new menu item at header “Workers” to access the page
-
This page will list all workers who submitted for any HIT.
-
Workers will be listed from any domain, any user from any domain can view the list of workers.
-
The table should have three buttons : Notify, Block, Unblock
-
These buttons should be top of the table
-
User can select one or more worker from table and use these buttons to process the action.
-
When clicking any button a popup should be displayed with “text area” field to provide message to be sent to workers.
-
We will use this API to notify worker.
-
Use this API to block a worker.
-
Use this API to unblock worker.
-
-
The table should have following columns :
-
Worker name
-
No API for this so you need to use this solution as workaround
-
-
Worker ID
-
Earnings
-
Total of earnings the worker made from hits.
-
-
Submit to domains
-
This field will display comma separated names of the domains the worker submitted to it.
-
-
Qualifications (assigned to the worker)
-
Comma separated qualifications assigned to worker.
-
You will implement this by iterating through the qualification types we have in DB, and retrieve workers who has that qualification via this API.
-
-
Status (Active/Blocked)
-
HITs
-
comma separated HITs IDs
-
-
-
Table should have filtering using the displayed columns, sorting, and pagination.
-
Filtering is important feature, specifically to get workers per HIT or per domain.
-
-
Only admin or global admin can block/unblock/notify workers. User role can only view the workers.
-
The above information might take too long to be processed for every request, so you need to :
-
create a DB table that store these information.
-
add “Refresh List” button in the page (available only to global admin users) that run in the backend to iterate through HITs, get workers, filter them and get needed information in the page and store them in the DB, then refresh the page with latest data from table.
-
Assignment details
You need to make the following changes to the assignment details page :
-
When approve or rejecting an assignment, keep the user in the same page
-
Display domain name in the page.
-
Display buttons :
-
The buttons above will trigger a popup when clicking on them with needed information.
Tasks Listing page
You need to make the following changes to the page :
-
Update Tasks table to use domain name in the pick list instead of domain IDs.
OAuth Server
-
Update the server to skip the authorization flow if user already authorized the application.
-
We have fixed the issue recently for CSFV OAuth Server, you can refer to this commit to duplicate the fix.
Code Organization
-
All logic will be updated and placed in csfv_mturk_api_module
-
All frontend changes will be placed in csfv_mturk_dashbaord module
-
The code changes in backend should keep each API path/endpoint a self contained api with specific functionality.
-
Use helpers for common functionality that will be used by different areas in the code.
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.