learn progress
This commit is contained in:
@@ -100,7 +100,7 @@ def get_multiagents_dialog_list(user_id: str) -> List[Dict]:
|
|||||||
current_app.logger.error(f"获取MultiAgents对话列表异常: {str(e)}")
|
current_app.logger.error(f"获取MultiAgents对话列表异常: {str(e)}")
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def load_learning_progress(user_id: str, material_id: str, chapter_name: str, lesson_name: str) -> Optional[Dict]:
|
def load_learning_progress(user_id: str, material_id: str, chapter_name: str, lesson_name: str) -> Dict:
|
||||||
"""
|
"""
|
||||||
加载用户学习进度
|
加载用户学习进度
|
||||||
|
|
||||||
@@ -111,7 +111,10 @@ def load_learning_progress(user_id: str, material_id: str, chapter_name: str, le
|
|||||||
- lesson_name: 课时名
|
- lesson_name: 课时名
|
||||||
|
|
||||||
返回:
|
返回:
|
||||||
- Optional[Dict]: 学习进度数据,如果不存在则返回None
|
- Dict: 学习进度数据,包含以下字段:
|
||||||
|
- exists: bool,表示学习记录是否存在
|
||||||
|
- data: Dict,学习进度详细数据,包含chat_historys、scores、chapter_chain_now等字段
|
||||||
|
- message: str,操作结果描述
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
mongo = current_app.extensions["mongo"]
|
mongo = current_app.extensions["mongo"]
|
||||||
@@ -126,11 +129,44 @@ def load_learning_progress(user_id: str, material_id: str, chapter_name: str, le
|
|||||||
# 转换ObjectId为字符串
|
# 转换ObjectId为字符串
|
||||||
if "_id" in progress:
|
if "_id" in progress:
|
||||||
progress["_id"] = str(progress["_id"])
|
progress["_id"] = str(progress["_id"])
|
||||||
return progress
|
return {
|
||||||
return None
|
"exists": True,
|
||||||
|
"data": progress,
|
||||||
|
"message": "学习记录加载成功"
|
||||||
|
}
|
||||||
|
# 返回默认值,确保即使没有学习记录也有完整的结构
|
||||||
|
return {
|
||||||
|
"exists": False,
|
||||||
|
"data": {
|
||||||
|
"user_id": user_id,
|
||||||
|
"material_id": material_id,
|
||||||
|
"chapter_name": chapter_name,
|
||||||
|
"lesson_name": lesson_name,
|
||||||
|
"chat_historys": [],
|
||||||
|
"scores": [],
|
||||||
|
"chapter_chain_now": None,
|
||||||
|
"updated_at": datetime.now().isoformat()
|
||||||
|
},
|
||||||
|
"message": "未找到学习记录,返回默认值"
|
||||||
|
}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
current_app.logger.error(f"加载学习进度失败: {str(e)}")
|
error_msg = f"加载学习进度失败: {str(e)}"
|
||||||
return None
|
current_app.logger.error(error_msg)
|
||||||
|
# 发生错误时返回默认结构,确保系统稳定性
|
||||||
|
return {
|
||||||
|
"exists": False,
|
||||||
|
"data": {
|
||||||
|
"user_id": user_id,
|
||||||
|
"material_id": material_id,
|
||||||
|
"chapter_name": chapter_name,
|
||||||
|
"lesson_name": lesson_name,
|
||||||
|
"chat_historys": [],
|
||||||
|
"scores": [],
|
||||||
|
"chapter_chain_now": None,
|
||||||
|
"updated_at": datetime.now().isoformat()
|
||||||
|
},
|
||||||
|
"message": error_msg
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def upload_learning_progress_to_cloud(progress: Dict) -> Dict:
|
def upload_learning_progress_to_cloud(progress: Dict) -> Dict:
|
||||||
|
|||||||
@@ -86,10 +86,11 @@ class AgentNamespace(Namespace):
|
|||||||
chatmanager.function_manager.add_function(next_chapter, {'user_uuid': user_uuid})
|
chatmanager.function_manager.add_function(next_chapter, {'user_uuid': user_uuid})
|
||||||
|
|
||||||
if not chatmanager.restart:# 尝试加载用户学习进度
|
if not chatmanager.restart:# 尝试加载用户学习进度
|
||||||
progress = load_learning_progress(user_id, course_id, chapter_name, lesson_name)
|
progress_result = load_learning_progress(user_id, course_id, chapter_name, lesson_name)
|
||||||
need_skip_chapters = 0
|
need_skip_chapters = 0
|
||||||
|
|
||||||
if progress:
|
if progress_result['exists']:
|
||||||
|
progress = progress_result['data']
|
||||||
# 恢复学习进度数据
|
# 恢复学习进度数据
|
||||||
if 'scores' in progress:
|
if 'scores' in progress:
|
||||||
# 根据scores的数量确定需要跳过的章节数
|
# 根据scores的数量确定需要跳过的章节数
|
||||||
@@ -108,8 +109,10 @@ class AgentNamespace(Namespace):
|
|||||||
chatmanager.chapter_chain_now = progress['chapter_chain_now']
|
chatmanager.chapter_chain_now = progress['chapter_chain_now']
|
||||||
upload_learning_progress_to_cloud(progress)
|
upload_learning_progress_to_cloud(progress)
|
||||||
else:
|
else:
|
||||||
chatmanager.chat_historys = []
|
# 使用默认值,确保有完整的结构
|
||||||
chatmanager.scores = []
|
chatmanager.chat_historys = progress_result['data']['chat_historys']
|
||||||
|
chatmanager.scores = progress_result['data']['scores']
|
||||||
|
print(f"未找到学习记录,使用默认值: {progress_result['message']}")
|
||||||
|
|
||||||
fmd,fmdp,fsp = load_full_markdown_file(course_id, chapter_name, lesson_name)
|
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)
|
user_uuid2ase_client[user_uuid] = HSAEngineClient(current_app.config["ASE_ENGINE_URL"], current_app.config["ASE_ENGINE_NAMESPACE"],id=user_id, chatmanager = chatmanager)
|
||||||
|
|||||||
41
Html/test_progress.py
Normal file
41
Html/test_progress.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Add the project root to the Python path
|
||||||
|
sys.path.insert(0, '/Users/cakecai/Documents/gitea/hsa/Html')
|
||||||
|
|
||||||
|
from flask import Flask
|
||||||
|
from flask_pymongo import PyMongo
|
||||||
|
|
||||||
|
# Create a minimal Flask app for testing
|
||||||
|
app = Flask(__name__)
|
||||||
|
app.config['MONGO_URI'] = 'mongodb://localhost:27017/test_db'
|
||||||
|
mongo = PyMongo(app)
|
||||||
|
|
||||||
|
# Register the mongo extension with the app
|
||||||
|
app.extensions = {'mongo': mongo}
|
||||||
|
|
||||||
|
# Import the function to test
|
||||||
|
with app.app_context():
|
||||||
|
from apps.services.course_services.learning_progess_process import load_learning_progress
|
||||||
|
|
||||||
|
# Test with non-existent record
|
||||||
|
print("Testing with non-existent record:")
|
||||||
|
result = load_learning_progress("test_user", "test_course", "test_chapter", "test_lesson")
|
||||||
|
print(f"Result: {result}")
|
||||||
|
print(f"Exists: {result['exists']}")
|
||||||
|
print(f"Data keys: {list(result['data'].keys())}")
|
||||||
|
print(f"Message: {result['message']}")
|
||||||
|
print("\n")
|
||||||
|
|
||||||
|
# Test that default values are correctly set
|
||||||
|
print("Testing default values:")
|
||||||
|
print(f"Chat historys: {result['data']['chat_historys']}")
|
||||||
|
print(f"Scores: {result['data']['scores']}")
|
||||||
|
print(f"Chapter chain now: {result['data']['chapter_chain_now']}")
|
||||||
|
print(f"Updated at: {result['data']['updated_at']}")
|
||||||
|
print("\n")
|
||||||
|
|
||||||
|
print("Test completed successfully!")
|
||||||
Reference in New Issue
Block a user