Welcome to the TA/Grader Assignment App. This app was designed for the CSCE department at Texas A&M to use as an all in one solution for Students, Professors, and the department to use. This app will accept applications from students and recommendations from professors. The department can then just click a button to assign applicant to a TA, Senior grader, or grader based on certain parameters. The assignments are made using the professor recommendations, applicants degree level, GPA, Previous courses taken, hours, etc. Higher weights are given to certain parameters such as negative recommendations which will make the algorithm not assign that student to the professor or PHDs getting prioritized for TA assignments. This app allows the admin to quickly assign and modify assignments.
This will cover how to get started after deploying the app, specifically how to import classes first, how to assignment applicants to a position,make modifications, send job offers, reassign and exportation of the final csv file
After login, click on the View Classes tab then choose the file where you will select the csv for al of the classes. Then click import. An example of the csv is in the documentions folder named TA_Needs.csv. Formating must be exact. This will import all the classes into the app.
You need to add advisors to the app before proceeding so that it shows up on the application forms. Click on Manage Data (Clear/Admin/Export) to go to the admin settings. Then go to Admin then click on Add New Advisor. Add all the advisors in the CSCE graduate Department.
After importing classes and advisors, the applicants will then be able to see the classes and advisors that they can choose from. Once you are ready to assign the applicants head to the Assign TA/Grader tab. This is the management tab for all the assignments. Click on Auto-Assign in the right hand side of the page. This is configured so that it starts as a clean slate so only use knowing that it will erase any previous assignments if any.
The Auto-assign will redirect you to the assignments view page for assignments. This page will have all of the TA, Senior Grader, and Grader Assignments as separate tables. Below that are the admin files that are used to track the unassigned applicants, any modifications to assignments, and new classes that gets update when and assignment gets deleted as the class will now need a new TA or grader. The admin files are only for viewing.
Click on one of the tables to send out offers and modify offers. At the top of the table there are three buttons. The SEND ALL OFFERS button is a toggle that will send or unsend the TA/Grader job to all of the assignees and makes it viewable on the applicants end. You can also individually send and unsend offers to assignees.
The next button is the REVOKE CONFIRMATION FOR ALL APPLICANTS that will revoke the confirmation of all the assignees. This is to give the admin the option to revoke the offers of all the assignees without deleting the assignment. You can also individually revoke the assignment for assignees if that assignee accepts and confirms the offer through their portal. The Next button
The last button at the top is the DELETE ALL UNCONFIRMED ASSIGNMENTS which will remove all of the assignments where a student has not confirmed their offer. The table doesn't show applicants that decline their position as the application will simply remove their assignment automatically if they decline. This button is for the students that simply don't accept the offer with the admin's timeframe. The button removes the assignment from the table and creates a negative recommendation for that student and assignment.
In the table to the right are the admin actions buttons specifically EDIT and DELETE.
EDIT will redirect you to the assignment page where you can change that position's assignee with one of the unassigned applicants. This will update the table with the new assignment and send add the old assignee to the unassigned applicants table.
DELETE will remove the assignment from the table, create a negative recommendation for that student/position, and add the position to the new class needs file.
After all the modifications and deletions, head back to the manage assignments page where you first ran the Auto-Assign. The Re-run Auto-Assign button will now become clickable as it detects changes to the assignments that made positions open up that need to be filled. This button will also become available if a class position is added last second to the application in the View Classes tab. This button will run the algorithm again except with only the unassigned applicants and the new needs. Afterwards it'll redirect to the assignment view page as before preserving all of the old assignments and adding the new ones.
After assigning and re-assigning for as many times as you'd like, then you go back to the manage assignments tab. Click on EXPORT FINAL CSV. This will get all of the assignments for every position, organized by assignment type, with all of the relevant applicant information into one singular csv.
WARNING!! The assignments dont need to be confirmed to be sent to the final assignments cvs. This is so that the admin can easily export all the assignments for all the tables whenever they'd like. For instance the Admin can export this right after making the initial assignments to get every assignees email organized by position type. This can be used for when the admin wants to send out emails to all the assignees before sending out the offers through the table.
This will go over all of the other buttons on the main admin page(excluding Manage Data tab)
The View Applicants page is how to view all of the applications submitted by users. This page allows you to search for an applicant at the top along clickable table headers that will sort the table by that column. At the very right of the table there is a column called more that will take you to that individual's application, allowing you to edit or delete it.
The View Withdrawal Requests page is where you will see all of the job offers that were rejected by the applicants
The View All Recommendations page is where you'll see all of the recommendations made by professors but also the application. Recommendations made by the app will be light pink and recommendations made by professors will be light green. Recommendations are made by the applications whenever an assignment is deleted so that the python algorithm knows not to try and reassign an applicant to the same position.
You can also delete individual recommendations using the DELETE button
The view Blacklisted Students page is where you can add, view, and remove blacklisted students. This is implemented in a way as to not let the student know that they are blacklisted. The student will be able to submit and view their application but it will never get submitted to the algorithm. You add a student to the blacklist by inputting their name in email in the form and clicking ADD TO BLACKLIST. You can remove blacklists by clicking REMOVE in the table.
You can send emails though the application as well using this page. But will require setup. Either make a google account for this application or use your own(Warning tamu accounts won't work for this as they cant create app passwords). Go to https://myaccount.google.com/apppasswords to create an app and get the app password
Then add the email address associated with the app password to the .env file like so,
SMTP_EMAIL="(Email@address)" SMTP_PASSWORD='(App Password)'
This will cover all of the admin settings in the Manage Data (Clear/Admin/Export) tab.
These are the buttons that will wipe data from the application
The CLEAR ALL DATA button will wipe all of the data from the application except for the master admins added through the ENV variables
The CLEAR ALL APPLICANTS button will delete all of the applicants and associated data with the applications. Users, admins, courses, advisors, and blacklists are still there.
The CLEAR ALL USERS button will delete all the data associated with the users and their application. Only the courses, advisors, and blacklists remain.
The CLEAR ALL COURSES button will only delete all of the courses from the data. This is not recommended to use after assigning applicants but will not affect those assignments only the subsequent assignments if any.
The CLEAR ALL ASSIGNMENTS button is used to wipe the database of any of the assignments made. This can be used to reset all of the assignments without affecting anything else
The CLEAR ALL ADVISORS button delets all of the advisors
The CLEAR ALL RECOMMENDATIONS button deletes all of the recommendations
The CLEAR ALL WITHDRAWAL REQUESTS button deletes all of the Withdrawal Requests
This will cover all of the functionality in the function tab.
The Add New Admin page is how you add new admins. This is for admins that aren't in the ENV as those are reserved as a master admin and will always persist regardless of applications wipes/clears.
The Add New Advisor page is how you can add, view and remove advisors. You can import advisors via csv using the import functionality. There is an example in the documentation folder. The exact format matters.
!!! IMPORTANT!!! This is also how you set the faculty roles for the application.
The Export Data button will export all of the data in the app in a individual csv files into a single zip file
The Import Data button takes in a zip file and will add all of the data from the csvs into the appropriate tables in the database. WARNING!!! This should only be used by first exporting the data then importing. Modifying the files from the export can lead to corrupted data if handled improperly. There are associations between models in the database that can get messed up.
-
Ruby version
ruby "3.4.1" or higher -
Python Version and libraries Python 3.9
rich==13.3.2 scipy==1.7.1 pandas~=1.5.3 numpy~=1.22.4
-
Configuration
Run this to install all the right ruby dependencies
bundle install- Setup instructions:
-
Create a google app
https://console.cloud.google.com/
- Create a new project
- go to OAuth Consent Screen and fill it out
- Go to Create OAuth client ID
- Fill out the app name information
- Add http://127.0.0.1:3000/auth/google_oauth2/callback to the redirect uri and Create
- Save Client id and Client secret credentials
- Create .env file in root directory of project
- add previously saved client id to GOOGLE_CLIENT_ID="CREDENTIALS"
- add previously saved client secret GOOGLE_CLIENT_SECRET="CREDENTIALS"
- add admin emails to .env ADMIN_EMAILS="[email protected],[email protected]"
- Create a new project
-
run rails migrations
rails db:migrate
-
run app locally
rails server
-
- Ensure Heroku CLI is installed
- Login to heroku
heroku login- Create app in Heroku
heroku create your-app-name- Push Project to Heroku
git push heroku main-
Go to your app console on your heroku dashboard and add Heroku Postgress Essential 0 to add-ons. This is the lowest tier, Change based on your needs.
-
Add env var to heroku
heroku config:set GOOGLE_CLIENT_ID="google client id" GOOGLE_CLIENT_SECRET="google client secret"
heroku config:set ADMIN_EMAILS="[email protected],[email protected]"- Add Python buildpack to heroku
heroku buildpacks:add heroku/python- Provision Bucketeer addon
heroku addons:create bucketeerThis will automatically set the env variables in heroku. These are not needed for local deployment.
- Increase Dyno Timeout This is just an extra precaution
heroku config:set WEB_TIMEOUT=60- Run migrations on Heroku
heroku run rails db:migrate- Go to OAuth portal and update the redirect uri
- Fill out with this https://(YOUR APP URL)/auth/google_oauth2/callback
rspecbundle exec cucumberrubocopopen coverage/index.html