Integration with the University - COS-301/graduates GitHub Wiki
Documentation
Introduction
This feature will be responsible for the sharing of information between the graduate portal and the UP website. It shall retrieve the academic records of students for use by the authentication team. This feature will also facilitate any other communication that needs to take place between the portal and UP, such as student details, etc. Lastly, once blockchain integration has occurred, this feature will retrieve the degrees from UP to be accessible through the portal.
System Functional Requirements
Functional Requirements
- This feature shall get a students' name and details automatically.
- This feature shall get a student's academic record automatically.
- This feature shall get a student's degree automatically.
Non-Functional Requirements
Quality Requirements
- Student privacy must always be maintained
- The retrievals should be quick so as to not create a speed bottleneck for the whole project.
Architectural Requirements
- Scalability - The feature should be able to handle large numbers of retrievals.
- Availability - The feature should be able to make retrievals whenever necessary.
- Maintainability - The feature needs to be designed in a way that allows it to continue to perform its duty in spite of changes to the APIs on either the server or university’s sides.
Architectural Constraints
- The University does not have an API currently that we can use to retrieve the required data, so we will need to use mock data for our current implementation.
- The feature will need to store the pdf files it retrieves with firebase, according to the storage team.
Diagrams
Case Diagrams
API Documentation
getStudentDetailsUP(a)
a : String that is the student number of the individual returns:
- studentNumber
- userID
- contactNumber
- name
- surname
- course
getAcademicRecord()
returns:
- fileAsString Is a stub
getDegree()
returns:
- fileAsString Is a stub
Database Structure
This feature does automatically what other features allow the user to do manually, and so it is important that the data is stored in the same place. This means that this feature will use the storage and student details features' databases. This is to allow for the data retrieved automatically to still accessible to their features.
Acceptance Criteria
The feature must get the student's personal details such as names and contact details automatically, it must also get the student's academic record and degree and all of that info must be done automatically. And at the same time get the students' consent also maintaining students' privacy.
Acceptance Criteria Checklist.pdf
Testing
PR Number: 179 Commit Hash: 690830e Status: Passed Date: 2022/03/21 Tester: Awelani Murovhi Developer: Gabriel Grobler Description: ✨ (up-integration): Added initial stub
PR Number: 798 Commit Hash: f614980 Status: Passed Date: 2022/04/15 Tester: Awelani Murovhi Developer: Gabriel Grobler Description: 🎨 (up-integration): updated file structure, added .spec file
PR Number: 864 Commit Hash: 7e8adde Status: Passed Date: 2022/04/16 Tester: Awelani Murovhi Developer: Thangeni Faresa Description: 🚧(service engineer)- add models, events and handlers
PR Number: 879 Commit Hash: a9a14f7 Status: Passed Date: 2022/04/17 Tester: Awelani Murovhi Developer: Phillipa Dufana Description: 🗃 (data engineer) Added gets and sets functions PR Number: 899 Commit Hash: n/a Status: Failed Date: 2022/04/16 Tester: Awelani Murovhi Developer: Wesley Pachai Description: A few checks failed, due to dependency errors.
PR Number: 934 Commit Hash: 76647ce Status: Passed Date: 2022/04/17 Tester: Awelani Murovhi Developer: Wesley Pachai Description: ✨(UI): Added Basic Framework
PR Number: 961 Commit Hash: f830c21 Status: Passed Date: 2022/04/17 Tester: Awelani Murovhi Developer: Gabriel Grobler Description: 🎨(up-integration): expanded on academic record entity, added references
PR Number: 978 Commit Hash: 6b65960 Status: Passed Date: 2022/04/17 Tester: Awelani Murovhi Developer: Thangeni Faresa Description: 🚚 (service engineer)- fixed paths, called get methods
PR Number:1005 Commit Hash:ddaacd2 Status:Passed Date:2022/04/18 Tester:Awelani Murovhi Developer:Gabriel Grobler Description:🎨 (up-integration):major changes to api and and attached layers
PR Number:1027 Commit Hash:7394d1d Status: Passed Date:2022/04/18 Tester:Awelani Murovhi Developer:Wesley Pachai Description:✨(UI): Adding UI Components
PR Number:1047 Commit Hash:3d09e83 Status:Passed Date:2022/04/18 Tester:Awelani Murovhi Developer:Gabriel Grobler Description:✅ (up-integration): added unit tests for api resolver, fixed api error
PR Number:1104 Commit Hash:43c4a1e Status:Passed Date:2022/04/18 Tester:Awelani Murovhi Developer:Wesley Pachai Description:✨(UI): Added HTML and SCSS
PR Number:1127 Commit Hash:n/a Status: Failed Date:2022/04/18 Tester:Awelani Murovhi Developer:Wesley Pachai Description:The PR was not up to date with the latest branch.
PR Number:1143 Commit Hash:n/a Status:Failed Date:2022/04/18 Tester:Awelani Murovhi Developer:Wesley Pachai Description:Includes were missing from some of the files, causing a check to fail.
PR Number:1149 Commit Hash:f49ccaa Status: Passed Date:2022/04/19 Tester:Awelani Murovhi Developer:Wesley Pachai Description:✨(UI): Receives Student Number and Choices
PR Number:1199 Commit Hash:02f148c Status:Passed Date:2022/04/21 Tester:Awelani Murovhi Developer:Wesley Pachai Description:(UI): Fixes to routing Module
Roles for Sprint 2
James Butler - u20437863 - Project Manager
- I have fulfilled much of the same role as in sprint 1 in addition to the following points.
- I have given guidance about how the different components should integrate.
- I have given reviews and critiques of the code put forward in my teams’ PRs and merged them once I was satisfied that all issues were addressed.
Ponalo Notwane - u16115092 - Business Analyst
- Worked on outlining the acceptance criteria of the feature.
- I’ve been working closely with other BAs on figuring out how each document should be formatted under a specific given criteria which requires a bit of research first.
- I’ve also drawn use case diagrams which can be seen on the wiki under the documentation page titled Diagrams.
- Worked on compiling the team wiki document along with my PM
- Assessing whether the whole feature does meet the acceptance criteria or not.
Thangeni Faresa - u18312374 - Service Engineer
- I Fulfilled the role of a service engineer and applying the information and knowledge acquired from the research.
- I Worked on implementing the service layer for the UP integration feature.
- I Worked with the API engineer and Data engineer to integrate our code and their functionalities.
- I Participated in service engineers and API engineers discussion to resolve and offer potential solutions to common problems.
Gabriel Grobler - u20534541 - API Engineer
- I Worked on implementing the API layer for our feature so that it is currently a framework that acts as an example for future years to expand on.
- I worked alongside the service and data engineer to implement the current API structure.
- I worked on creating the unit tests for the API layer.
Brett du Plessis - u19037717 - Developer Operations
- I helped with reviewing pull requests.
- I followed the various DevOps channels and chats and stayed informed about any pipeline breakages.
Wesley Pachai - u20578688 - Designer and UI Engineer
- I Collaborated with designers to finalize themes.
- I Worked on implementing the User Interface for the feature.
- I Worked on implementing the routing for the feature.
- I Stayed up to date on the developments in the UI Engineer role, including the inclusion of the mobiles friendliness considerations from @SeePeeYou.
Philippa Dufana - u19053313 - Data Engineer
- I created the get and set functions that our feature requires.
- I had meetings and collaborated with the API and Service engineers.
Awelani Murovhi - u18335412 - Tester
- I have worked on compiling the testing logs for my team’s PRs as per the specifications on the testing wiki.
- I advised the rest of the team on implementing unit tests.
Plans for future implementation
Getting the Student Details
Currently the function getStudentDetailsUP gets the data directly from the systems database. This is what should be altered to get the data from the UP API. The data returned at present should not be used for validation. In future, when access to the UP API becomes available then the student details can be fetched directly from the UP API instead of fetching only mock data from the database. With this data that has been retrieved from the UP side, validation of the user can take place for example: a student does belong to the course that they specified when creating their account (being a CS student or an IKS student).
Getting Academic Record
Currently the user is expected to upload their academic record manually. This is done by making a call to the storage API as they have accounted for uploading files to the database. In future this process can be automated by getting the academic record directly from the UP API and uploading it to the database through the storage API. If this is not the case and the academic record is still expected to be uploaded manually then the retrieved one can be used to verify that the information is correct.
Getting Degree
Similar to the academic record the user is currently expected to upload their degree manually. This is done by making a call to the storage API as they have accounted for uploading files to the database. In future this process can be automated by getting the academic record directly from the UP API and uploading it to the database through the storage API or the blockchain if that is functional. If this is not the case and the academic record is still expected to be uploaded manually then the retrieved one can be used to verify that the information is correct.
Suggestion for future implementation
Validation
When a query from the service layer is handled it uses what is written in the repository layer to retrieve the information from the database. If the data from the UP API is to be used for validation purposes then the current query's may suffice to retrieve what is in the database to compare with what the UP API has returned.
Automatic addition
Currently the API makes a call to the service layer where the query's are handled by the service layer. If the data that is being retrieved from the UP API is going to be stored automatically then commands will have to be added and handled to perform these tasks. This will be done in the service layer. If the degree and academic record are to be retrieved and stored automatically then it should directly call the storage API for the addition of the files to the database.
API Endpoint Calls
The API endpoint calls that the UI makes need to be checked for errors and be updated to retrieve the correct values.