[[TOC]]
Members
Naral Chalermchaikosol - [email protected]
Max Wang - [email protected]
Vaughn Muirhead - [email protected]
Binhao Li - [email protected]
Prith Manickam - [email protected]
Hugo Findlay - [email protected]
Team Coach
Tim Storer - [email protected]
Auto-Assign is a React-Django-based website to automatically allocate graduates into teams for a 2-year graduate programme. It uses an algorithm that best recommends graduates to their new teams during rotations. The types of users that would use the website are Graduates, Managers, and HR.
Click to view YouTube Video on our Demonstration of AutoAssign
Login Page | Graduate Account: Preference Form Page | Manager Account: Teams Settings Page |
---|---|---|
HR Account: Create Graduate Account Page | HR Account: Manage Teams Page | HR Account: AutoAssign Page |
---|---|---|
- Notes: Only blueprint documents - Wireframe and ER Diagram
- Repository at this stage: https://stgit.dcs.gla.ac.uk/team-project-h/2022/sh23/main/-/tree/e6444f97d4ca3fe31c020fa5479ca0eebc1296c8
- Notes: Frontend and Backend not connected. Only Frontend UI is usable through routing.
- New Features
- Navbar: displaying Logo, AutoAssign Name, Avatar Icon
- Login Page with no authentication
- Forgot Password Page
- Accounts Page: Contact details page
- Graduate Account: Preference form page
- Known Bugs
- Avatar and Sign-out button shown in unauthenticated screens
- Repository at this stage: https://stgit.dcs.gla.ac.uk/team-project-h/2022/sh23/main/-/tree/ea2c5f1bc43492f90baef1c63e4691d7967b370e
- Notes: Frontend and Backend not connected. Only Frontend UI is usable through routing.
- New Features
- New Graduate Account Pages: View Teams Page
- Manager Account: Homepage, Manage Teams page, Team Preference Settings page
- HR Account: Homepage, View Teams, Assign Graduate page, Remove Graduate page, Assign Manager page, Remove Manager page
- Known Bugs
- Avatar and Sign-out button shown in unauthenticated screens
- Repository at this stage: https://stgit.dcs.gla.ac.uk/team-project-h/2022/sh23/main/-/tree/8e135fe7f3f6ad3ce597c8881c3bbe895a12786d
- Notes: Frontend and Backend not connected. Only Frontend UI is usable through routing.
- New Features
- Light/Dark mode toggled from navbar for all pages
- Change Password Page navigated from Accounts Page side-navbar
- New HR Account Pages: Auto-Assign pop-up, Create an Account page which also has functionality to swap specific grads from year 1 and 2, as well as mass shift all year 1 grads to year 2.
- Known Bugs
- Avatar and Sign-out button shown in unauthenticated screens on Navbar
- Repeated placeholder for Avatar icon in Navbar
- Notes: Frontend and Backend are connected, and all features are fully functional.
- ER Diagram: Updated ER diagram showing 1.0 database implementation
- New Features:
- Login Page is now Authenticated
- When a user is logged in, pressing the AutoAssign logo takes you to their respective homepage.
- Visiting an unauthorised URL takes you back to the login page
- User Password can be changed from Change Password Page
- New HR Account Pages: Create Graduates Accounts page, Create Manager Accounts page, Delete Team page, Auto Assign Page
- Manage Team Page now has a component to create a team.
- AutoAssign page can view all unassigned graduate and manager accounts. They can choose to auto assign but will be warned if total team capacity create is too big or small.
- When HR creates an account, an email would be sent to them with a unique link to a registration page
- AutoAssign algorithm uses modified cosine similarity style algorithm
- Login Page is now Authenticated
- Known Bugs
- No known bugs
- Code editor of your choice (VSCode/Webstorm)
- Python 3
- Node.js
- NPM (Node Package Manager)
A full list of dependencies can be seen in:
- Django requirements.txt
- React package.json
Node.js and its package manager, npm, are required dependencies for this project, please see below for installation instructions before proceeding.
Download and run the latest LTS installer for your OS from the node.js website
Many linux distributions come with node.js pre-installed, before proceeding, check for an existing version by running
npm -v
in a terminal. If the terminal returns a version number you have an existing installation and can skip Node.js installation.
Otherwise, see this page for guidance on how to install node.js for your specific distribution.
- Run install.py
- Run startup.py
-
First install all dependencies using:
pip install -r requirements.txt
inside AutoAssign -
Create the database by running the following commands inside AutoAssign:
python3 manage.py makemigrations
python3 manage.py migrate
- Start the backend server with:
python3 manage.py runserver
inside AutoAssign - Try replacing
python3
withpy
if the above steps do not work
- Install the necessary dependencies and start the development server in client by:
npm i
npm run dev
- Finally, open the URL provided by the server
- Here are a few useful commands: Frontend Useful Notes
For testing purposes a population script is included which fills the database with example records. To use this script, run the following command inside AutoAssign: python3 populate.py
If the above step does not work, try: py populate.py
Login Page:
- On the right side of the login page, there is a “Sign in to your account” interface. You can enter your email address and your password to log in.
- On the bottom right of the password input there is a 'forgot password' button, this will take you to a separate page where you can reset your password.
Forgot Password Page:
- On the right side of the page is an input box where you can input the email address attached to your account.
- This will send a password reset link to your email account, click on the link in the email.
- This will take you to a webpage, enter your new password in both boxes and click the submit button.
- You can now log in with your new password.
Light/Dark Mode:
- On the right side of the top navigation bar, you will find the icon of the sun, click on it to switch between light and dark mode.
Accounts Page (after logged on):
- Click the avatar icon in the top navigation bar to go to the accounts page interface. It will take you to the contact details subpage by default and can edit you first and last name by clicking the edit button.
- You can go to the change you password subpage by clicking on the section in the sidenav bar. You can change you password by entering your current password and your new password twice.
-
You will be sent an e-mail to your company account asking you to register.
-
You must provide your name, and create a password.
-
After you have created your account, you will be able to log in, where you have two choices, Skills Preference Form and Your Team.
-
Skills Preference Form
- The Skills Preference Form page will allow you to express which technologies you have experience and interest in.
- You can select as many technologies as you want from the searchable dropdown lists
- Make sure all fields are filled in.
- No duplicate technologies are not allowed
- When you are finished, press save to make sure that the data is correctly stored
-
Your Team
- This page lets you view a list of all the current members of your team
- It shows a table containing their full name and e-mail adress
-
You will be sent an e-mail to your company account asking you to register.
-
You must provide your name, and create a password.
-
After you have created your account, you will be able to log in, where you have two choices, Team Settings and Your Team.
-
Team Settings
- The Team settings page will allow you to select which technologies you would like team members to be interested in.
- Also on this page is a slider which will let you decide how much you want to prioritse a graduate's prior skill or enthuseasm to learn.
- You can select as many technologies as you want from the searchable dropdown lists
- When you are finished, press save to make sure that the data is correctly stored
-
Your Team
- This page lets you view a list of all the current members of your team
- It shows a table containing their full name and e-mail adress
-
You would be given an account with email and password by the developers to log on.
-
Once you log on you will see 9 landing buttons to take to do different functions.
-
Manage Teams Page
- You can view all teams where each are laid out in rows of rectangular icons which contains the details: team name, department name, Manager name & email, and team capacity
- If you click on one of the teams, it shows a list of all graduates that are within it.
-
Delete Team Page
- Click the dropdown or type to search to view all teams that are created which show the team’s name, department name, manager name, and user capacity in one line.
-
Assign Graduate
- Click the dropdown or type to search to view all graduate emails, and the team’s name & department name you want to assign the graduate to.
-
Remove Graduate
- Click the dropdown or type to search to view all graduate accounts as emails that you want to delete permanently.
- Below this there is also an option to view all the year 2 graduates, and mass delete all of them (when the second year rotation/the graduate program is finished for them)
-
Assign Manager
- Click the dropdown or type to search to view all manager emails, and the team’s name & department name you want to assign the manager to. This would either replace the current manager for that team or assign a new one to a team that is unassigned a manager (when you delete that managers account).
-
Remove Manager
- Click the dropdown or type to search to view all graduate accounts as emails that you want to delete permanently.
-
Create Graduate Account
- Use the top component type one or multiple emails of new graduates. They would get an email to register (more information in User Registration).
- There are two tables below it showing all graduates that are in year 1 or year 2. All the new graduates would be moved to the year 1 table. There is also a button to shift all year 1 grads to year 2 (when the rotation for year 1 is over).
-
Create Manager Account
- Use the top component type one or multiple emails of new graduates. They would get an email to register (more information in User Registration).
- There is a table to view all managers.
-
Auto Assign Page
- You can view the total number of graduates created, and the total team capacity. There is AutoAssign button which would display red and show a warning if team capacity is too low or too high, and it would display green if the team capacity is equal to total number of grads. When the button is clicked it would automatically assign all graduates to teams (where you can view them by clicking on each team in the Manage Teams Page.
- This page also shows a table of unassigned graduates and managers before and after pressing AutoAssign.
-
How the AutoAssign Algorithm works
- The algorithm implements an efficient mechanism for assigning graduates to teams. First, all teams are prioritized according to a preset ratio. Then, according to each team's skill requirements and ratio, the qualified graduates are screened and sorted by match score. The matching score is calculated from the graduate form, including skill, experience, and interest level. Finally, the cosine similarity is used to calculate the matching score, and the weighted sum method is used to calculate the total matching score.
- During the automatic assignment process, if a team does not have the corresponding configuration settings, it will not be considered for assignment. At the same time, graduates without skills will also get 0 points and will not participate in the distribution. If there are teams that are not set up, the front end will get a corresponding simultaneity. Graduates who did not participate in the assignment at the end are also shown.
- The system will retrieve a list of all teams and sort them by proficiency/interest priority. Then, call the get_graduates_by_skill function for each team to find all eligible graduates. All unassigned graduates will then be filtered out and sorted by match score.
- Next, the system will iteratively assign graduates until the team is full or all unassigned graduates have been assigned. During this process, to ensure that second-year graduates are not assigned to the departments they were in for first-year. If there are unassigned graduates, they will be randomly assigned to the team with the fewest members. Throughout the process, cosine similarity calculates matching scores; transactions ensure data consistency, and priority and random allocation strategies ensure the fairness and randomness of allocation results.
- Grad 1 should end up on Manager 1’s team as their team values React
- Grad 2 should end up on Manager 2’s team as their team value Angular
- Grad 3 should end up on Manager 1’s team as their team values experience
- Grad 4 should end up on Manager 2’s team as their team values interest
- You will receive an email which prompts you with a sign up link. It should look like this:
- Following the link—you will be redirected to our sign up page.
- Enter your credentials. There will be a notification on the top right to let you know if successful or not.
- If successful, you will be redirected bacak to the log in page. Use your previously submitted credentials.
MIT License: https://stgit.dcs.gla.ac.uk/team-project-h/2022/sh23/main/-/blob/main/LICENSE