From 7e4f5ef446a52b70acb8741b979f07c4b3068bef Mon Sep 17 00:00:00 2001 From: root-daemon Date: Thu, 7 Aug 2025 00:27:45 +0530 Subject: [PATCH 1/2] fix: update docker-compose for Redis configuration and clean up worker error logging --- server/docker-compose.yml | 3 +++ server/src/bull/worker.js | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/server/docker-compose.yml b/server/docker-compose.yml index 468b333..f6c61f7 100644 --- a/server/docker-compose.yml +++ b/server/docker-compose.yml @@ -7,6 +7,9 @@ services: dockerfile: Dockerfile env_file: - .env + environment: + - REDIS_HOST=redis + - REDIS_PORT=6379 depends_on: - redis - postgres diff --git a/server/src/bull/worker.js b/server/src/bull/worker.js index b5a0f07..d08031c 100644 --- a/server/src/bull/worker.js +++ b/server/src/bull/worker.js @@ -91,7 +91,6 @@ const initCalendar = () => { worker.on("error", (err) => { console.error("Worker error:", err); - job.log("Worker error:", err); }); }; From 0d65c999c7afef55fce1ce60326bd3f6f9da214f Mon Sep 17 00:00:00 2001 From: root-daemon Date: Thu, 7 Aug 2025 00:46:33 +0530 Subject: [PATCH 2/2] refactor: improve day order retrieval and enhance timetable parsing with room number --- server/src/api/controllers/api.controller.js | 15 ++++++++------- server/src/parsers/timetableParser.js | 16 +++++++++++++--- server/src/utils/generateTimetable.js | 5 ++++- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/server/src/api/controllers/api.controller.js b/server/src/api/controllers/api.controller.js index 858dcc0..9b84ecd 100644 --- a/server/src/api/controllers/api.controller.js +++ b/server/src/api/controllers/api.controller.js @@ -85,13 +85,14 @@ export const getDayOrder = async (req, res, next) => { .setZone("Asia/Kolkata") .toFormat("yyyy-MM-dd"); - const { dayOrder } = await prisma.academia.findFirst({ - where: { - date: todayIST, - }, - }); - - res.status(200).json({ success: true, data: dayOrder }); + const academiaRecord = await prisma.academia.findFirst({ + where: { + date: todayIST, + }, + }); + + const dayOrder = academiaRecord?.dayOrder || null; + res.status(200).json({ success: true, data: dayOrder }); } catch (error) { console.error(error); next(error); diff --git a/server/src/parsers/timetableParser.js b/server/src/parsers/timetableParser.js index 150a487..d908711 100644 --- a/server/src/parsers/timetableParser.js +++ b/server/src/parsers/timetableParser.js @@ -62,12 +62,22 @@ export const parseTimetable = (htmlSnippet) => { const rows = $(".course_tbl tbody tr").slice(1); rows.each((i, row) => { const columns = $(row).find("td"); + const courseTitle = columns.eq(2).text().trim() || "N/A"; + const slot = columns.eq(8).text().trim() || "N/A"; + const roomNumber = columns.eq(9).text().trim() || "N/A"; // GCR Code column contains room numbers like "TP 706" + console.log(`Column 9 (GCR/Room): '${columns.eq(9).text().trim()}'`); + console.log(`Column 10 (Room No): '${columns.eq(10).text().trim()}'`); + console.log(`Column 11 (Year): '${columns.eq(11).text().trim()}'`); + + console.log(`Row ${i}: Title=${courseTitle}, Slot=${slot}, Room=${roomNumber}, Total columns=${columns.length}`); + courses.push({ - courseTitle: columns.eq(2).text().trim() || "N/A", - slot: columns.eq(8).text().trim() || "N/A", + courseTitle, + slot, + roomNumber, }); }); - console.log(courses) + console.log("Final courses array:", courses) return { batch, courses }; }; diff --git a/server/src/utils/generateTimetable.js b/server/src/utils/generateTimetable.js index 4cfa2b9..e529a32 100644 --- a/server/src/utils/generateTimetable.js +++ b/server/src/utils/generateTimetable.js @@ -8,7 +8,10 @@ const generateTimetable = (courses, batch) => { .split(/[-/]+/) .filter((code) => code.trim() !== ""); codes.forEach((code) => { - slotMap[code] = course.courseTitle; + const subjectWithRoom = course.roomNumber && course.roomNumber !== "N/A" + ? `${course.courseTitle} - ${course.roomNumber}` + : course.courseTitle; + slotMap[code] = subjectWithRoom; }); });