From af0ebda419360d82d5610f87d296b9acb2c70e3c Mon Sep 17 00:00:00 2001 From: CakeCN Date: Sat, 13 Dec 2025 18:16:34 +0800 Subject: [PATCH 1/5] try fix nextchapter bug --- .../{extension_ase/ase_client => _docs}/ACK_SUPPORT_GUIDE.md | 0 Html/apps/extension_ase/ase_client/manager.py | 1 + Html/apps/static/css/lesson.css | 1 - 3 files changed, 1 insertion(+), 1 deletion(-) rename Html/apps/{extension_ase/ase_client => _docs}/ACK_SUPPORT_GUIDE.md (100%) diff --git a/Html/apps/extension_ase/ase_client/ACK_SUPPORT_GUIDE.md b/Html/apps/_docs/ACK_SUPPORT_GUIDE.md similarity index 100% rename from Html/apps/extension_ase/ase_client/ACK_SUPPORT_GUIDE.md rename to Html/apps/_docs/ACK_SUPPORT_GUIDE.md diff --git a/Html/apps/extension_ase/ase_client/manager.py b/Html/apps/extension_ase/ase_client/manager.py index 954936e..5d2cf7b 100644 --- a/Html/apps/extension_ase/ase_client/manager.py +++ b/Html/apps/extension_ase/ase_client/manager.py @@ -120,6 +120,7 @@ class ChatManager: def next_chapter(self): + print(f"now next chapter {self.chapter_chain_now} and len {len(self.chapter_chain)}") assert self.chapter_chain_now + 1 < len(self.chapter_chain), "chapter_chain_now out of range" self.chapter_chain_now += 1 self.bb.next_chapter() diff --git a/Html/apps/static/css/lesson.css b/Html/apps/static/css/lesson.css index 7b33983..0a55797 100644 --- a/Html/apps/static/css/lesson.css +++ b/Html/apps/static/css/lesson.css @@ -1,4 +1,3 @@ - .add-step-btn, .add-phase-btn { background-color: #4CAF50; color: white; From 6acb1db093432eb78fb0203cba99aa2a95f857ae Mon Sep 17 00:00:00 2001 From: CakeCN Date: Sat, 13 Dec 2025 18:36:33 +0800 Subject: [PATCH 2/5] direct no load history when no history --- Html/apps/views/vscode.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Html/apps/views/vscode.py b/Html/apps/views/vscode.py index a9aab96..c4d2b85 100644 --- a/Html/apps/views/vscode.py +++ b/Html/apps/views/vscode.py @@ -6,6 +6,7 @@ from ..services.backboard_service import realtime_response from ..extension_ase.ase_client.manager import ChatManager import subprocess from ..auth.decorators import require_role +from ..services.course_service import load_learning_progress bp = Blueprint("vscode", __name__) @@ -149,7 +150,18 @@ def desktop(user_uuid, course_id, chapter_name, lesson_name): def desktop_nouser(course_id, chapter_name, lesson_name): if "user_uuid" not in session: return redirect(url_for("auth.login")) # 如果你有 auth 蓝图 + user_uuid = session["user_uuid"] + uuid2username = current_app.extensions["uuid2username"] + user_id = uuid2username[user_uuid] + + # 检查是否有学习记录 + progress_result = load_learning_progress(user_id, course_id, chapter_name, lesson_name) + + if not progress_result["exists"]: + # 没有学习记录,直接跳转到学习页面,不显示确认加载历史的页面 + return redirect(url_for("vscode.desktop", user_uuid=user_uuid, course_id=course_id, chapter_name=chapter_name, lesson_name=lesson_name, load_history="false")) + return render_template( "confirm_load_history.html", user_uuid=user_uuid, From 8e79380ba439d4a932838e1a5b6e99945df00786 Mon Sep 17 00:00:00 2001 From: CakeCN Date: Sat, 13 Dec 2025 18:56:21 +0800 Subject: [PATCH 3/5] =?UTF-8?q?progress=20=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../learning_progess_process.py | 3 ++ Html/apps/templates/confirm_load_history.html | 30 ++++++++++++------- Html/apps/views/vscode.py | 11 ++++++- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/Html/apps/services/course_services/learning_progess_process.py b/Html/apps/services/course_services/learning_progess_process.py index 7de7ff5..c91dda5 100644 --- a/Html/apps/services/course_services/learning_progess_process.py +++ b/Html/apps/services/course_services/learning_progess_process.py @@ -36,6 +36,7 @@ def save_learning_progress(chatmanager, user_id: str) -> bool: "chat_historys": chatmanager.chat_historys, "scores": chatmanager.scores, "multiagents_dialogs": his_data, + "chapter_chain_length": len(chatmanager.chapter_chain), "updated_at": datetime.now() } @@ -146,6 +147,7 @@ def load_learning_progress(user_id: str, material_id: str, chapter_name: str, le "chat_historys": [], "scores": [], "chapter_chain_now": None, + "chapter_chain_length": 0, "updated_at": datetime.now().isoformat() }, "message": "未找到学习记录,返回默认值" @@ -164,6 +166,7 @@ def load_learning_progress(user_id: str, material_id: str, chapter_name: str, le "chat_historys": [], "scores": [], "chapter_chain_now": None, + "chapter_chain_length": 0, "updated_at": datetime.now().isoformat() }, "message": error_msg diff --git a/Html/apps/templates/confirm_load_history.html b/Html/apps/templates/confirm_load_history.html index 6cc2b4e..410cbe3 100644 --- a/Html/apps/templates/confirm_load_history.html +++ b/Html/apps/templates/confirm_load_history.html @@ -61,16 +61,26 @@
-

加载历史数据确认

-

您即将进入学习环境,是否需要加载您之前的对话历史记录和学习进度数据?

- + {% if is_course_finished %} +

重新学习确认

+

您已经完成了该课程的学习,是否要重新开始学习?

+ + {% else %} +

加载历史数据确认

+

您即将进入学习环境,是否需要加载您之前的对话历史记录和学习进度数据?

+ + {% endif %}
\ No newline at end of file diff --git a/Html/apps/views/vscode.py b/Html/apps/views/vscode.py index c4d2b85..4505067 100644 --- a/Html/apps/views/vscode.py +++ b/Html/apps/views/vscode.py @@ -162,12 +162,21 @@ def desktop_nouser(course_id, chapter_name, lesson_name): # 没有学习记录,直接跳转到学习页面,不显示确认加载历史的页面 return redirect(url_for("vscode.desktop", user_uuid=user_uuid, course_id=course_id, chapter_name=chapter_name, lesson_name=lesson_name, load_history="false")) + # 获取学习记录数据 + progress_data = progress_result["data"] + chapter_chain_now = progress_data.get("chapter_chain_now", -1) + chapter_chain_length = progress_data.get("chapter_chain_length", 0) + + # 检查是否已经学完所有章节 + is_course_finished = chapter_chain_now >= chapter_chain_length - 1 + return render_template( "confirm_load_history.html", user_uuid=user_uuid, course_id=course_id, chapter_name=chapter_name, - lesson_name=lesson_name + lesson_name=lesson_name, + is_course_finished=is_course_finished ) @bp.route("/vscode_data", methods=["POST"]) From d0331d93619e31c019817566065f509d004780e1 Mon Sep 17 00:00:00 2001 From: CakeCN Date: Sat, 13 Dec 2025 21:47:10 +0800 Subject: [PATCH 4/5] navbar adjust --- Html/apps/static/css/navbar.css | 56 +++++++++++++++++++++++++++++++-- Html/apps/templates/navbar.html | 3 +- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/Html/apps/static/css/navbar.css b/Html/apps/static/css/navbar.css index 69c8e96..0093ceb 100644 --- a/Html/apps/static/css/navbar.css +++ b/Html/apps/static/css/navbar.css @@ -3,13 +3,28 @@ background: linear-gradient(135deg, var(--primary-blue), var(--accent-blue)); box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); padding: 0.8rem 1rem; + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; } .navbar .logo h1 { color: rgb(245, 245, 245); - - font-size: 24px; + font-size: 18px; font-weight: bold; + margin: 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 300px; +} + +.navbar-links { + display: flex; + justify-content: center; + flex: 1; + margin: 0 20px; } .navbar-links a { @@ -69,4 +84,41 @@ /* 下拉浮框 hover 显示 */ .dropdown:hover .dropdown-content { display: block; +} + +/* 响应式设计 */ +@media (max-width: 768px) { + .navbar { + flex-direction: column; + gap: 1rem; + } + + .navbar-links { + margin: 0; + flex-wrap: wrap; + justify-content: center; + gap: 0.5rem; + } + + .navbar-links a { + margin: 0 0.75rem; + font-size: 16px; + } + + .navbar .logo h1 { + font-size: 16px; + max-width: 250px; + } +} + +@media (max-width: 480px) { + .navbar .logo h1 { + font-size: 14px; + max-width: 200px; + } + + .navbar-links a { + margin: 0 0.5rem; + font-size: 14px; + } } \ No newline at end of file diff --git a/Html/apps/templates/navbar.html b/Html/apps/templates/navbar.html index 5614166..14b7730 100644 --- a/Html/apps/templates/navbar.html +++ b/Html/apps/templates/navbar.html @@ -1,7 +1,6 @@ - - +