From f7c5db1f84f00887806257ac849ea0deb3854229 Mon Sep 17 00:00:00 2001 From: bxbach732 Date: Tue, 16 Sep 2025 02:04:56 +0300 Subject: [PATCH 1/4] feat: add a way to get new session on page load max age for session is set to 3600 --- task_template/app/main.py | 2 +- task_template/app/routers/session.py | 12 ++++++++++++ task_template/frontend_poetry/src/App.jsx | 15 ++++++++++++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/task_template/app/main.py b/task_template/app/main.py index e0eb6cd..41e7ee1 100644 --- a/task_template/app/main.py +++ b/task_template/app/main.py @@ -28,7 +28,7 @@ app.state.limiter = limiter app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler) -app.add_middleware(SessionMiddleware, secret_key=secrets.token_hex(32), max_age=None) +app.add_middleware(SessionMiddleware, secret_key=secrets.token_hex(32), max_age=3600) logger.info("Session middleware added") app.include_router(task_router) app.include_router(session_router) diff --git a/task_template/app/routers/session.py b/task_template/app/routers/session.py index 5f1dfe5..bed9c4b 100644 --- a/task_template/app/routers/session.py +++ b/task_template/app/routers/session.py @@ -33,6 +33,7 @@ def get_session(request: Request) -> SessionData: ).hexdigest() request.session["key"] = session_id sessions[session_id] = SessionData(history=[], id=session_id) + logger.info("Session id here") logger.info(sessions[session_id]) return sessions[session_id] @@ -44,3 +45,14 @@ def clear_session(request: Request): else: sessions.pop(session_id) return True + +@router.get("/onLoad") +async def on_page_load( + session: SessionData = Depends(get_session), +): + sessionID = session.id + if sessionID in sessions: + del sessions[sessionID] + logger.info("Session already exists. Deleting and getting a new one") + else: + logger.info("New session created") \ No newline at end of file diff --git a/task_template/frontend_poetry/src/App.jsx b/task_template/frontend_poetry/src/App.jsx index ba54b43..5ba2535 100644 --- a/task_template/frontend_poetry/src/App.jsx +++ b/task_template/frontend_poetry/src/App.jsx @@ -1,4 +1,4 @@ -import { useState } from 'react'; +import { useState, useEffect } from 'react'; import ConversationDisplay from "./components/ConversationDisplay"; import Dialogue from "./components/Dialogue"; import TaskDescription from "./components/TaskDescription"; @@ -8,6 +8,7 @@ import FeedbackForm from "./components/FeedbackForm"; import TutorialPopUp from './components/TutorialPopUp'; import ThemeForm from './components/ThemeForm'; import SurveyButton from './components/SurveyButton' +import axios from 'axios' import "./index.css"; const App = () => { @@ -18,6 +19,18 @@ const App = () => { const [theme, setTheme] = useState(""); const [isLoading, setIsLoading] = useState(false); + useEffect(() => { + const onPageLoad = async() => { + try { + await axios.get('/api/v1/session/onLoad'); + console.log("check session") + } catch (error) { + console.log(error) + } + } + onPageLoad(); + }, []) + const addMessage = (message) => { setMessages(prevMessages => prevMessages.concat(message)); }; From 0f6b4ef9e28c5f7e71625b56a0791bd70a855a6f Mon Sep 17 00:00:00 2001 From: bxbach732 Date: Tue, 16 Sep 2025 03:02:52 +0300 Subject: [PATCH 2/4] fix: add clearing old session id from the queue on page load --- task_template/app/routers/session.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/task_template/app/routers/session.py b/task_template/app/routers/session.py index bed9c4b..cccc1bd 100644 --- a/task_template/app/routers/session.py +++ b/task_template/app/routers/session.py @@ -1,5 +1,6 @@ from fastapi import Depends, Request, APIRouter from routers.router_models import SessionData +from grpc_server.queue_handler import queue_handler from typing import Dict import time import hashlib @@ -53,6 +54,7 @@ async def on_page_load( sessionID = session.id if sessionID in sessions: del sessions[sessionID] + queue_handler.clear_session(sessionID) logger.info("Session already exists. Deleting and getting a new one") else: logger.info("New session created") \ No newline at end of file From d91b2678ce53a694f49477c28732ab3c69a90f83 Mon Sep 17 00:00:00 2001 From: bxbach732 Date: Tue, 16 Sep 2025 11:57:57 +0300 Subject: [PATCH 3/4] fix: change from clear session to remove response queue to prevent crashing from having no model info --- task_template/app/routers/session.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/task_template/app/routers/session.py b/task_template/app/routers/session.py index cccc1bd..210296c 100644 --- a/task_template/app/routers/session.py +++ b/task_template/app/routers/session.py @@ -49,12 +49,13 @@ def clear_session(request: Request): @router.get("/onLoad") async def on_page_load( + request: Request, session: SessionData = Depends(get_session), ): sessionID = session.id if sessionID in sessions: - del sessions[sessionID] - queue_handler.clear_session(sessionID) + queue_handler.remove_response_queue(sessionID) + clear_session(request) logger.info("Session already exists. Deleting and getting a new one") else: logger.info("New session created") \ No newline at end of file From b1e7b04ca941f7a3e1c73d387b9ed2945d2c5212 Mon Sep 17 00:00:00 2001 From: bxbach732 Date: Tue, 30 Sep 2025 01:54:37 +0300 Subject: [PATCH 4/4] fix: change remove_response_queue to clear_session --- task_template/app/routers/session.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/task_template/app/routers/session.py b/task_template/app/routers/session.py index 210296c..a759abd 100644 --- a/task_template/app/routers/session.py +++ b/task_template/app/routers/session.py @@ -54,7 +54,7 @@ async def on_page_load( ): sessionID = session.id if sessionID in sessions: - queue_handler.remove_response_queue(sessionID) + queue_handler.clear_session(sessionID) clear_session(request) logger.info("Session already exists. Deleting and getting a new one") else: