From c633db61cce2e155b08840732ba043ba6f9a4dca Mon Sep 17 00:00:00 2001 From: Kevin Lan Date: Sun, 23 Mar 2025 11:59:59 -0400 Subject: [PATCH 1/5] Fix semester change bug --- .../src/pages/TimetableBuilder/TimetableBuilder.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/course-matrix/frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx b/course-matrix/frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx index b2ee82d7..bad9cdc2 100644 --- a/course-matrix/frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx +++ b/course-matrix/frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx @@ -359,11 +359,13 @@ const TimetableBuilder = () => {
{ + console.error('Form submission errors:', errors); + })} className="space-y-8" >
- {/* ( @@ -372,7 +374,8 @@ const TimetableBuilder = () => { { - form.setValue('offeringIds', []); - form.setValue('courses', []); + form.setValue("offeringIds", []); + form.setValue("courses", []); form.setValue("semester", value); }} value={field.value} From 15012870c45179750dddd75a5116f0c4bf4b3185 Mon Sep 17 00:00:00 2001 From: Kevin Lan Date: Sun, 23 Mar 2025 12:08:27 -0400 Subject: [PATCH 3/5] Disabled manual choose courses if using Generate button --- .../frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/course-matrix/frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx b/course-matrix/frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx index bad9cdc2..299facb8 100644 --- a/course-matrix/frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx +++ b/course-matrix/frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx @@ -429,7 +429,7 @@ const TimetableBuilder = () => {

Selected courses: {selectedCourses.length} (Max 8)

- {!isEditingTimetable && ( + {!isEditingTimetable && !isGeneratingTimetables && (
Date: Mon, 24 Mar 2025 13:29:23 -0400 Subject: [PATCH 4/5] Disable edit semester --- .../frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/course-matrix/frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx b/course-matrix/frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx index ce38a64c..9d11caf2 100644 --- a/course-matrix/frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx +++ b/course-matrix/frontend/src/pages/TimetableBuilder/TimetableBuilder.tsx @@ -380,6 +380,7 @@ const TimetableBuilder = () => { }} value={field.value} defaultValue={field.value} + disabled={isEditingTimetable} > From 7ca53d68eaa0dd5d12f5f5c4e0c92b6bd4ee9fc3 Mon Sep 17 00:00:00 2001 From: Kevin Lan Date: Mon, 24 Mar 2025 13:33:25 -0400 Subject: [PATCH 5/5] Prevent changing semester using chatbot --- course-matrix/backend/src/controllers/aiController.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/course-matrix/backend/src/controllers/aiController.ts b/course-matrix/backend/src/controllers/aiController.ts index accc0493..2c00c009 100644 --- a/course-matrix/backend/src/controllers/aiController.ts +++ b/course-matrix/backend/src/controllers/aiController.ts @@ -255,6 +255,7 @@ export const chat = asyncHandler(async (req: Request, res: Response) => { - If the user provides a course code of length 6 like CSCA08, then assume they mean CSCA08H3 (H3 appended) - If the user wants to create a timetable, first call getCourses to get course information on the requested courses, then call generateTimetable. - Do not make up fake courses or offerings. + - You can only edit title of the timetable, nothing else. If a user tries to edit something else, acknowledge this limitation. `, messages, tools: { @@ -267,13 +268,10 @@ export const chat = asyncHandler(async (req: Request, res: Response) => { }, }), updateTimetable: tool({ - description: "Update a user's timetable by title and/or semester", + description: "Update a user's timetable's title", parameters: z.object({ id: z.number().positive(), timetable_title: z.string().optional(), - semester: z - .enum(["Fall 2025", "Summer 2025", "Winter 2026"]) - .optional(), }), execute: async (args) => { return await availableFunctions.updateTimetable(args, req);