Releases: Project-IPCA/ipca-backend
v4.0.0
Version 4.0.0
March 7, 2025
✨ New Features
- Added support for groups to use C language.
- Migrated the database to support C code execution (APP-0154).
- Updated the
Create GroupAPI to include programming language in the request (APP-0163). - Updated the
Get Exercise InfoAPI to include programming language checks (APP-0157). - Updated the
Create ExerciseAPI to add programming language in query parameters (APP-0159). - Added a programming language flag before sending to the worker (APP-0160).
- Updated
Get My GroupsandGet Available GroupsAPIs to include programming language fields (APP-0156). - Split keyword constraints for Python and C languages (APP-0164.
- Updated the overall dashboard to reflect programming language changes (APP-0155).
- Enhanced
Get My GroupsandGet Available GroupsAPIs to support filtering by programming language (APP-0169).
- Created an endpoint to recover the admin user (APP-0174).
🛠 Fixes
- Fixed migration script for
downmigration to ensure correct execution (APP-0162). - Migrated the
lab_exercisestable in the database to allow every role to edit exercises (APP-0175). - Fixed the business logic for the
Get Average Chapter ScoreAPI (APP-0173).
🔧 Improvements
v3.2.0
v3.1.0
Version 3.1.0
February 06, 2025
✨ New Features
- Implemented a dashboard for displaying stats, including overall stats and group stats:
- Created
GET /api/supervisor/students/totalto get the total number of students in a group or overall. (APP-0137). - Created
GET /api/supervisor/group/totalto get the total number of groups overall. (APP-0138). - Created
GET /api/supervisor/score_ranking/{group_id}to get student score rankings in a group. (APP-0139). - Created
GET /api/supervisor/staff/totalto get the total number of staff overall. (APP-0140). - Created
GET /api/supervisor/submissions/totalto get the total number of submissions in a group or overall. (APP-0141). - Created
GET /api/supervisor/average_dept_scoreto get the average department score across all chapters overall. (APP-0143). - Created
GET /api/supervisor/stats/submission/timeto get the submission count for the past 7 days. (APP-0144).
- Created
🔧 Improvements
v3.0.0
Version 3.0.0
January 31, 2025
✨ New Features
-
Implement role-based protected routes and components for roles:
TA,Supervisor,Executive, andBeyonder. -
Implement
DELETE /api/supervisor/admin/{admin_id}to allow admin deletion. (APP-0125). -
Introduce
GET /api/supervisor/average_group_score/{group_id}to support the Dashboard Feature in a future release. (APP-0130) -
Add
GET /api/common/supervisorto provide supervisor options in the super frontend's group creation form. (APP-0132)
🔧 Improvements
- Prevent inactive admins from performing any actions and fix backend crashes caused by invalid user logins. (APP-0128)
- Update
GET /api/common/staffsandGET /api/supervisor/available_groupsby adding aroleresponse field and renamingsupervisor_id. (APP-0126). - Add the
rolefield toGET /api/supervisor/role_permissionto support role validation in the super frontend. (APP-0129). - Modify
POST /api/supervisor/groupto allow group creation by roles other thanSupervisor. (APP-0131, APP-0133). - Update
GET/PUT /api/supervisor/my_group_infoto enable roles other thanSupervisorto update groups. (APP-0134).
v2.1.0
Version 2.1.0
January 26, 2025
🔧 Improvements
- The login functionality has been enhanced by introducing separate endpoints for improved role-based access management, where the frontend application now utilizes the endpoint
/api/auth/loginand the super frontend application employs the endpoint/api/auth/login/super, ensuring a clear distinction in their authentication processes (APP-0124).
v2.0.0
Version 2.0.0
January 25, 2025
✨ New Features
- Added a
name_enfield to departments to support the multilingual system. This update includes the creation of thePOST /api/supervisor/departmentendpoint and enhancements to the these endpoint.GET /api/common/departmentsGET /api/supervisor/available_groupsGET /api/supervisor/my_groupsGET /api/supervisor/group/{group_id}GET /api/supervisor/my_group_info/{group_id}GET /api/common/departmentsGET /api/common/user_infoPUT /api/common/user_infoGET /api/supervisor/student_info/{student_id}(APP-0123, APP-0123)
🛠 Fixes
- Resolved an issue with the
GET /api/student/all_chapterendpoint where theresponse.is_openfield did not function correctly. (APP-0122)
🔧 Improvements
- Introduced time validation for accessing and submitting exercises, ensuring stricter control over submission timelines. (APP-0121)
v1.1.0
Version 1.1.0
Release Date: January 14, 2025
✨ New Features
POST /api/supervisor/admin: Create admin roles, such as supervisors, TAs, and executives. Currently, only the creation of supervisors is supported.DELETE /api/group: Delete student groups
🛠 Fixes
- Fixed an issue where logout events were not correctly sent to Redis or saved in the database, ensuring proper backend event handling.
- Addressed a bug that allowed multiple consecutive spaces in input fields during student creation, ensuring clean and validated data.
🔧 Improvements
- Improved the error response for student creation to return all relevant errors, making debugging and issue resolution more effective.
v1.0.0
Version 1.0.0
December 23, 2024
🚀 Initial Release
Core API Services
-
Auth: Login, logout, and refresh token.
POST /api/auth/login: User login.POST /api/auth/logout: User logout.POST /api/auth/refresh_token: Refresh authentication token.
-
Common: APIs that all roles can access
- User Management
GET /api/common/user_info: Fetch user information.PUT /api/common/user_info: Update user information.POST /api/common/user_profile: Update user profile image.
- Other Utilities
GET /api/common/departments: Get list of departments.POST /api/common/get_keyword_list: Retrieve keywords list.POST /api/common/keyword_check: Check validity of a keyword.GET /api/common/staffs: Get list of staff members.GET /api/common/student_submission: Retrieve student submissions.
- User Management
-
Test: Testing endpoints for infrastructure validation
GET /api/greeting: Test greeting endpoint.GET /api/test_rabbit: Test RabbitMQ functionality.GET /api/test_redis: Test Redis functionality.
-
Init: Initialization endpoints for setting up system data
POST /api/init/department: Initialize department data.POST /api/init/labclassinfo: Initialize lab class information.POST /api/init/supervisor: Initialize supervisor data.POST /api/init/ta: Initialize teaching assistant (TA) data.
-
Student: APIs for student-specific operations
GET /api/student/all_chapter: Get all available chapters.GET /api/student/assigned_exercise: Retrieve assigned exercises.GET /api/student/chapter_list: Get chapter list for a student.POST /api/student/exercise_submit: Submit exercise for evaluation.
-
Supervisor: APIs for managing groups, students, and exercises
- Exercise Management
GET /api/supervisor/assigned_student_exercise: Retrieve exercises assigned to students.PUT /api/supervisor/exercise: Update exercise details.POST /api/supervisor/exercise: Create a new exercise.DELETE /api/supervisor/exercise/{exercise_id}: Delete an exercise.GET /api/supervisor/get_exercise_data/{exercise_id}: Get exercise details.POST /api/supervisor/save_exercise_testcase: Save test cases for an exercise.
- Group Management
GET /api/supervisor/available_groups: Get available groups.POST /api/supervisor/group: Create a new group.GET /api/supervisor/group/{group_id}: Get group details.PUT /api/supervisor/my_group_info/{group_id}: Update group information.GET /api/supervisor/my_groups: Get supervisor's groups.
- Permission and Access Control
POST /api/supervisor/set_chapter_permission: Set chapter permissions.POST /api/supervisor/set_allow_group_login: Allow group login.POST /api/supervisor/set_allow_group_upload_picture: Allow group to upload pictures.PUT /api/supervisor/logout_all_student/{group_id}: Log out all students in a group.
- Student Management
GET /api/supervisor/student_info/{student_id}: Get student information.DELETE /api/supervisor/student/{stu_id}: Remove a student from the system.PUT /api/supervisor/reset_student_password/{stu_id}: Reset student password.POST /api/supervisor/students: Add students in bulk.PUT /api/supervisor/student_can_submit/{student_id}: Allow a student to submit an exercise.PUT /api/supervisor/cancle_student_submission/{submission_id}: Cancel a student's submission.POST /api/supervisor/update_all_group_assigned_chapter_item: Update all groups assigned chapters.POST /api/supervisor/update_group_assigned_chapter_item: Update assigned chapters for a specific group.
- Exercise Management
Database
- MySQL integration with migrations for seamless setup and deployment.
Storage
- MinIO: Integrated for storing data such as profile images, student code, and instructor code.
Queue
- RabbitMQ: Used for queueing operations like code submission processing.
Worker
- IPCA Worker: Used for execute code.