Skip to content

Releases: Project-IPCA/ipca-backend

v4.0.0

07 Mar 15:18
5067976

Choose a tag to compare

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 Group API to include programming language in the request (APP-0163).
    • Updated the Get Exercise Info API to include programming language checks (APP-0157).
    • Updated the Create Exercise API to add programming language in query parameters (APP-0159).
    • Added a programming language flag before sending to the worker (APP-0160).
    • Updated Get My Groups and Get Available Groups APIs 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 Groups and Get Available Groups APIs to support filtering by programming language (APP-0169).
  • Created an endpoint to recover the admin user (APP-0174).

🛠 Fixes

  • Fixed migration script for down migration to ensure correct execution (APP-0162).
  • Migrated the lab_exercises table in the database to allow every role to edit exercises (APP-0175).
  • Fixed the business logic for the Get Average Chapter Score API (APP-0173).

🔧 Improvements

  • Improved exercise selection for groups to ensure only valid exercises with test cases can be selected (APP-0166).
  • Updated the Get All Chapters API response to support the new frontend UI (APP-0171).

v3.2.0

10 Feb 09:32
757d044

Choose a tag to compare

Version 3.2.0

February 10, 2025

✨ New Features

  • Add GET /api/supervisor/last_log to retrieve the latest activity logs, improving the activity logs feature (APP-0151).

🛠 Fixes

  • Fix POST /api/auth/logout not pushing an activity log (APP-0152).

v3.1.0

07 Feb 09:10
a4b5e3e

Choose a tag to compare

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/total to get the total number of students in a group or overall. (APP-0137).
    • Created GET /api/supervisor/group/total to 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/total to get the total number of staff overall. (APP-0140).
    • Created GET /api/supervisor/submissions/total to get the total number of submissions in a group or overall. (APP-0141).
    • Created GET /api/supervisor/average_dept_score to get the average department score across all chapters overall. (APP-0143).
    • Created GET /api/supervisor/stats/submission/time to get the submission count for the past 7 days. (APP-0144).

🔧 Improvements

  • Updated GET /api/supervisor/stats/score/chapter by adding year query parameter for overall stats. (APP-0143).
  • Updated GET /api/supervisor/students/total, GET /api/supervisor/staff/total, and GET /api/supervisor/stats/score/chapter by handling cases where year or group_id is not sent. (APP-0146).

v3.0.0

31 Jan 13:38
b16fb51

Choose a tag to compare

Version 3.0.0

January 31, 2025

✨ New Features

  • Implement role-based protected routes and components for roles: TA, Supervisor, Executive, and Beyonder.

    • Create the role_permissions table and update the departments and user tables. (APP-0114
    • Add the executives table and include the executive role in staff options. (APP-0127).
    • Develop a permission-checking function, apply it to all endpoints, and create a role permission API. (APP-0115).
  • 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/supervisor to 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/staffs and GET /api/supervisor/available_groups by adding a role response field and renaming supervisor_id. (APP-0126).
  • Add the role field to GET /api/supervisor/role_permission to support role validation in the super frontend. (APP-0129).
  • Modify POST /api/supervisor/group to allow group creation by roles other than Supervisor. (APP-0131, APP-0133).
  • Update GET/PUT /api/supervisor/my_group_info to enable roles other than Supervisor to update groups. (APP-0134).

v2.1.0

26 Jan 10:58
d4a4219

Choose a tag to compare

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/login and the super frontend application employs the endpoint /api/auth/login/super, ensuring a clear distinction in their authentication processes (APP-0124).

v2.0.0

25 Jan 10:22
733ade1

Choose a tag to compare

Version 2.0.0

January 25, 2025

✨ New Features

  • Added a name_en field to departments to support the multilingual system. This update includes the creation of the POST /api/supervisor/department endpoint and enhancements to the these endpoint.
    • GET /api/common/departments
    • GET /api/supervisor/available_groups
    • GET /api/supervisor/my_groups
    • GET /api/supervisor/group/{group_id}
    • GET /api/supervisor/my_group_info/{group_id}
    • GET /api/common/departments
    • GET /api/common/user_info
    • PUT /api/common/user_info
    • GET /api/supervisor/student_info/{student_id} (APP-0123, APP-0123)

🛠 Fixes

  • Resolved an issue with the GET /api/student/all_chapter endpoint where the response.is_open field 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

14 Jan 11:08
37a54cf

Choose a tag to compare

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

24 Dec 15:28
2cfe3a3

Choose a tag to compare

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.
  • 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.

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