diff --git a/Html/apps/sockets/namespaces.py b/Html/apps/sockets/namespaces.py
index e4bfa70..c385e59 100644
--- a/Html/apps/sockets/namespaces.py
+++ b/Html/apps/sockets/namespaces.py
@@ -62,32 +62,24 @@ class VSCodeNamespace(Namespace):
class AgentNamespace(Namespace):
- def on_login(self, data):
- self.app = current_app
- ex = current_app.extensions
- uuid2username = ex["uuid2username"]
- backboard_manager = ex["backboard_manager"]
- data = json.loads(data)
- user_uuid = data['user_uuid']
- course_id = data['course_id']
- lesson_name = data['lesson_name']
- chapter_name = data['chapter_name']
- user_id = uuid2username[user_uuid]
- session['user_uuid'] = user_uuid
- join_room(user_uuid, namespace='/agent') # 将该用户加入以user_id为名的room
- print(f'User connected with session user_uuid: {user_uuid}')
-
- user_uuid2chatmanager = ex["user_uuid2chatmanager"]
- user_uuid2ase_client = ex["user_uuid2ase_client"]
- if (user_uuid2ase_client.get(user_uuid,None) is not None and user_uuid2ase_client[user_uuid].connected):
- user_uuid2ase_client[user_uuid].disconnect()
- chatmanager = user_uuid2chatmanager[user_uuid]
- chatmanager.function_manager.add_function(judge, {'course_id': course_id, 'root_path': f'/home/{user_id}/{course_id}/{chapter_name}/{lesson_name}'})
- chatmanager.function_manager.add_function(next_chapter, {'user_uuid': user_uuid})
- continue_learn = not chatmanager.restart
- if continue_learn:# 尝试加载用户学习进度
+ def _load_learning_progress(self, chatmanager, user_id, course_id, chapter_name, lesson_name, continue_learn):
+ """加载并恢复用户学习进度
+
+ Args:
+ chatmanager: 聊天管理器实例
+ user_id: 用户ID
+ course_id: 课程ID
+ chapter_name: 章节名称
+ lesson_name: 课时名称
+ continue_learn: 是否继续学习
+
+ Returns:
+ int: 需要跳过的章节数
+ """
+ need_skip_chapters = 0
+
+ if continue_learn: # 尝试加载用户学习进度
progress_result = load_learning_progress(user_id, course_id, chapter_name, lesson_name)
- need_skip_chapters = 0
if progress_result['exists']:
progress = progress_result['data']
@@ -111,6 +103,33 @@ class AgentNamespace(Namespace):
# 使用默认值,确保有完整的结构
chatmanager.chat_historys = progress_result['data']['chat_historys']
chatmanager.scores = progress_result['data']['scores']
+
+ return need_skip_chapters
+
+ def on_login(self, data):
+ self.app = current_app
+ ex = current_app.extensions
+ uuid2username = ex["uuid2username"]
+ backboard_manager = ex["backboard_manager"]
+ data = json.loads(data)
+ user_uuid = data['user_uuid']
+ course_id = data['course_id']
+ lesson_name = data['lesson_name']
+ chapter_name = data['chapter_name']
+ user_id = uuid2username[user_uuid]
+ session['user_uuid'] = user_uuid
+ join_room(user_uuid, namespace='/agent') # 将该用户加入以user_id为名的room
+ print(f'User connected with session user_uuid: {user_uuid}')
+
+ user_uuid2chatmanager = ex["user_uuid2chatmanager"]
+ user_uuid2ase_client = ex["user_uuid2ase_client"]
+ if (user_uuid2ase_client.get(user_uuid,None) is not None and user_uuid2ase_client[user_uuid].connected):
+ user_uuid2ase_client[user_uuid].disconnect()
+ chatmanager = user_uuid2chatmanager[user_uuid]
+ chatmanager.function_manager.add_function(judge, {'course_id': course_id, 'root_path': f'/home/{user_id}/{course_id}/{chapter_name}/{lesson_name}'})
+ chatmanager.function_manager.add_function(next_chapter, {'user_uuid': user_uuid})
+ continue_learn = not chatmanager.restart
+ need_skip_chapters = self._load_learning_progress(chatmanager, user_id, course_id, chapter_name, lesson_name, continue_learn)
fmd,fmdp,fsp = load_full_markdown_file(course_id, chapter_name, lesson_name)
user_uuid2ase_client[user_uuid] = HSAEngineClient(current_app.config["ASE_ENGINE_URL"], current_app.config["ASE_ENGINE_NAMESPACE"],id=user_id, chatmanager = chatmanager)