try hello message
This commit is contained in:
@@ -20,6 +20,7 @@ def realtime_response(config: dict, realtime_action: dict) -> None:
|
||||
|
||||
|
||||
bb = backboard_manager.get_backboard(user_uuid)
|
||||
if bb is None: return
|
||||
assert isinstance(bb, Backboard)
|
||||
|
||||
# 统一记历史
|
||||
|
||||
@@ -18,14 +18,15 @@ class User:
|
||||
self.head_icon = head_icon # URL of the user's head icon
|
||||
self._id = _id
|
||||
self.kwargs = kwargs
|
||||
self.mongo = current_app.extensions["mongo"]
|
||||
|
||||
def save_chapter_memory(self, course_id, lesson_name, subchapter_title, mem_list, score, is_rebuttal):
|
||||
'''
|
||||
Save the memory of a chapter
|
||||
into the mongo db
|
||||
'''
|
||||
try:
|
||||
mongo = current_app.extensions["mongo"]
|
||||
cp = mongo.db.course_process.find_one({"user_uuid": self.user_uuid, "material_id": course_id})
|
||||
cp = self.mongo.db.course_process.find_one({"user_uuid": self.user_uuid, "material_id": course_id})
|
||||
if not cp:
|
||||
return
|
||||
cp['course_last_study_date'] = datetime.now().strftime('%Y-%m-%d')
|
||||
@@ -57,13 +58,12 @@ class User:
|
||||
break
|
||||
if not have_lesson:
|
||||
cp['lesson_processs'].append(([], chapter_name, lesson_name))
|
||||
mongo.db.course_process.update_one({"user_uuid": self.user_uuid, "material_id": course_id}, {"$set": cp})
|
||||
self.mongo.db.course_process.update_one({"user_uuid": self.user_uuid, "material_id": course_id}, {"$set": cp})
|
||||
except Exception as e:
|
||||
print("=-=-=-=-=-=")
|
||||
print(e)
|
||||
def get_all_course_progress(self):
|
||||
mongo = current_app.extensions["mongo"]
|
||||
course_processes = mongo.db.course_process.find({"user_uuid": self.user_uuid})
|
||||
course_processes = self.mongo.db.course_process.find({"user_uuid": self.user_uuid})
|
||||
for cp in course_processes:
|
||||
print(f"Course: {cp['material_id']}")
|
||||
for lessons,chapter_name,lesson_name in cp["lesson_processs"]:
|
||||
@@ -76,17 +76,56 @@ class User:
|
||||
print(f" Rebuttal Score: {step['rebuttal_score']}")
|
||||
|
||||
def get_course_progress(self, course_id):
|
||||
mongo = current_app.extensions["mongo"]
|
||||
cp = mongo.db.course_process.find_one({"user_uuid": self.user_uuid, "material_id": course_id})
|
||||
cp = self.mongo.db.course_process.find_one({"user_uuid": self.user_uuid, "material_id": course_id})
|
||||
return cp
|
||||
|
||||
def set_course_progress(self, chat_historys, step_scores, material_id, chapter_name, lesson_name):
|
||||
'''
|
||||
chat_historys: ['', '', ...] 用户对话历史(包括函数调用,也就是右侧栏用户看到的内容)
|
||||
step_scores: [10, 20, ...] 各个步骤的得分
|
||||
'''
|
||||
try:
|
||||
cl = self.mongo.db.course_process
|
||||
document = cl.find_one({
|
||||
'user_uuid': self.user_uuid,
|
||||
'material_id': material_id
|
||||
})
|
||||
if not document:
|
||||
cl.insert_one({
|
||||
'user_uuid': self.user_uuid,
|
||||
'material_id': material_id,
|
||||
'lesson_processs': [],
|
||||
'course_put_in_date': datetime.now().strftime('%Y-%m-%d'),
|
||||
'course_last_study_date': datetime.now().strftime('%Y-%m-%d'),
|
||||
'course_total_study_time': 0
|
||||
})
|
||||
document = cl.find_one({
|
||||
'user_uuid': self.user_uuid,
|
||||
'material_id': material_id
|
||||
})
|
||||
lesson_processes = document.get('lesson_processs', [])
|
||||
finded = False
|
||||
for process in lesson_processes:
|
||||
if process[1]==chapter_name and process[2]==lesson_name:
|
||||
process[0] = chat_historys
|
||||
if len(process)<=3:
|
||||
process.append(step_scores)
|
||||
else: process[3] = step_scores
|
||||
finded = True
|
||||
if not finded:
|
||||
lesson_processes.append((chat_historys, chapter_name, lesson_name, step_scores))
|
||||
cl.update_one({'user_uuid': self.user_uuid, 'material_id': material_id}, {'$set': {'lesson_processs': lesson_processes}})
|
||||
|
||||
except Exception as e:
|
||||
print("=-=-=-=-=-=")
|
||||
print(e)
|
||||
|
||||
def select_new_course(self, course_id, course:Material):
|
||||
try:
|
||||
if course_id in self.select_course:
|
||||
return True
|
||||
self.select_course.append(course_id)
|
||||
mongo = current_app.extensions["mongo"]
|
||||
mongo.db.course_process.insert_one({
|
||||
self.mongo.db.course_process.insert_one({
|
||||
'user_uuid': self.user_uuid,
|
||||
'material_id': course_id,
|
||||
'lesson_processs':[],
|
||||
@@ -95,9 +134,9 @@ class User:
|
||||
'course_total_study_time':0})
|
||||
for chapter in course.chapters:
|
||||
for lesson in chapter.lessons:
|
||||
mongo.db.course_process.update_one({"user_uuid": self.user_uuid, "material_id": course_id}, {"$push": {"lesson_processs": ([], chapter.chapter_name, lesson.lesson_name)}})
|
||||
self.mongo.db.course_process.update_one({"user_uuid": self.user_uuid, "material_id": course_id}, {"$push": {"lesson_processs": ([], chapter.chapter_name, lesson.lesson_name)}})
|
||||
self.select_course.append(course_id)
|
||||
mongo.db.users.update_one({"user_uuid": self.user_uuid}, {"$push": {"select_course": course_id}})
|
||||
self.mongo.db.users.update_one({"user_uuid": self.user_uuid}, {"$push": {"select_course": course_id}})
|
||||
except Exception as e:
|
||||
print("=-=-=-=-=-=")
|
||||
print(e)
|
||||
@@ -131,31 +170,27 @@ class UserList:
|
||||
def add_user(self, username, password, teacher=False):
|
||||
"""添加新的用户登录信息"""
|
||||
# 检查是否已经有该用户
|
||||
mongo = current_app.extensions["mongo"]
|
||||
if mongo.db.users.find_one({"username": username}) is None:
|
||||
mongo.db.users.insert_one({"user_uuid": Binary.from_uuid(uuid.uuid4()), "username": username, "teacher": teacher, "password": password, "select_course": [], "head_icon": ""})
|
||||
if current_app.extensions["mongo"].db.users.find_one({"username": username}) is None:
|
||||
current_app.extensions["mongo"].db.users.insert_one({"user_uuid": Binary.from_uuid(uuid.uuid4()), "username": username, "teacher": teacher, "password": password, "select_course": [], "head_icon": ""})
|
||||
else:
|
||||
print(f"User with ID {username} already exists.")
|
||||
|
||||
def get_user_by_name(self, username):
|
||||
"""根据用户ID获取用户信息"""
|
||||
mongo = current_app.extensions["mongo"]
|
||||
if username not in self.Users:
|
||||
self.Users[username] = User(**mongo.db.users.find_one({"username": username}))
|
||||
self.Users[username] = User(**current_app.extensions["mongo"].db.users.find_one({"username": username}))
|
||||
return self.Users[username]
|
||||
else:
|
||||
return self.Users[username]
|
||||
|
||||
def has_user(self, username):
|
||||
"""检查用户是否存在"""
|
||||
mongo = current_app.extensions["mongo"]
|
||||
return mongo.db.users.find_one({"username": username}) is not None
|
||||
return current_app.extensions["mongo"].db.users.find_one({"username": username}) is not None
|
||||
|
||||
def get_user_is_teacher(self, username):
|
||||
"""获取指定 user_id 的用户是否为教师"""
|
||||
mongo = current_app.extensions["mongo"]
|
||||
if mongo.db.users.find_one({"username": username}) is not None:
|
||||
result = mongo.db.users.find_one({"username": username})
|
||||
if current_app.extensions["mongo"].db.users.find_one({"username": username}) is not None:
|
||||
result = current_app.extensions["mongo"].db.users.find_one({"username": username})
|
||||
return result['teacher']
|
||||
return None
|
||||
|
||||
@@ -169,11 +204,13 @@ class UserList:
|
||||
|
||||
def update_password(self, username, new_password):
|
||||
"""更新用户的密码"""
|
||||
mongo = current_app.extensions["mongo"]
|
||||
assert mongo.db.users.find_one({"username": username}) is not None, f"User with ID {username} does not exist."
|
||||
mongo.db.users.update_one({"username": username}, {"$set": {"password": new_password, "teacher": mongo.db.users.find_one({"username": username})['teacher']}})
|
||||
|
||||
def delete_user(self, username):
|
||||
"""删除用户"""
|
||||
mongo = current_app.extensions["mongo"]
|
||||
assert mongo.db.users.find_one({"username": username}) is not None, f"User with ID {username} does not exist."
|
||||
mongo.db.users.delete_one({"username": username})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user