diff --git a/Html/.log b/Html/.log index e69de29..9877e2f 100644 --- a/Html/.log +++ b/Html/.log @@ -0,0 +1,631 @@ +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] + * Restarting with stat + * Debugger is active! + * Debugger PIN: 188-535-136 +(41568) wsgi starting up on http://0.0.0.0:5551 +(41568) accepted ('127.0.0.1', 50044) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:48] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 302 351 0.001881 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:48] "GET /login HTTP/1.1" 200 1835 0.003117 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:48] "GET /static/css/login.css HTTP/1.1" 304 183 0.005173 +(41568) accepted ('127.0.0.1', 50056) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:48] "GET /static/js/login.js HTTP/1.1" 304 183 0.000986 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:48] "GET /favicon.ico HTTP/1.1" 404 331 0.001235 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:48] "POST /login_post HTTP/1.1" 200 748 0.021746 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:48] "GET /favicon.ico HTTP/1.1" 404 331 0.000762 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:48] "GET /dashboard HTTP/1.1" 200 17371 0.010426 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:49] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001344 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:49] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.001144 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:49] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000875 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:49] "GET /static/css/footer.css HTTP/1.1" 304 184 0.000854 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:49] "GET /static/js/dashboard.js HTTP/1.1" 304 186 0.000818 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:49] "GET /favicon.ico HTTP/1.1" 404 331 0.000986 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:49] "GET /favicon.ico HTTP/1.1" 404 331 0.000971 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:51] "GET /switch-role/student HTTP/1.1" 302 372 0.000993 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:51] "GET /teacherboard HTTP/1.1" 200 8203 0.008271 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:51] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001360 +(41568) accepted ('127.0.0.1', 50062) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:51] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.000989 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:51] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000896 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:51] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.001140 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:51] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.001083 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:51] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000880 +(41568) accepted ('127.0.0.1', 50072) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:51] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.001091 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:51] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000889 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:51] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001189 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:51] "GET /static/css/footer.css HTTP/1.1" 304 184 0.000928 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:51] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.000815 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:52] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004618 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:52] "GET /favicon.ico HTTP/1.1" 404 331 0.001004 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:52] "GET /favicon.ico HTTP/1.1" 404 331 0.000762 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11082 0.007377 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001594 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/css/lesson.css HTTP/1.1" 304 183 0.001420 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.001116 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001244 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000817 +(41568) accepted ('127.0.0.1', 50082) +(41568) accepted ('127.0.0.1', 50092) +(41568) accepted ('127.0.0.1', 50094) +(41568) accepted ('127.0.0.1', 50108) +(41568) accepted ('127.0.0.1', 50120) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000917 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000766 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000756 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000771 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000969 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001322 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.000898 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/js/lesson.js HTTP/1.1" 304 185 0.000931 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.000803 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:14:54] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004504 +(41568) accepted ('127.0.0.1', 39744) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11083 0.007307 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001199 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001104 +(41568) accepted ('127.0.0.1', 39756) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/css/lesson.css HTTP/1.1" 304 183 0.001733 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000834 +(41568) accepted ('127.0.0.1', 39766) +(41568) accepted ('127.0.0.1', 39768) +(41568) accepted ('127.0.0.1', 39772) +(41568) accepted ('127.0.0.1', 39784) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000829 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000832 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000846 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000815 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.001219 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.001018 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001423 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.000894 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.000993 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /static/js/lesson.js HTTP/1.1" 200 53750 0.000902 +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:08] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004910 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11083 0.005075 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001413 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.000923 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/css/lesson.css HTTP/1.1" 304 183 0.000996 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.001151 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000757 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000763 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000773 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000756 +(41568) accepted ('127.0.0.1', 53354) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000737 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000761 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001197 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001050 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/js/lesson_markdown.js HTTP/1.1" 200 6493 0.001188 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /static/js/lesson.js HTTP/1.1" 304 184 0.001322 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:33:44] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004757 +(41568) accepted ('127.0.0.1', 42416) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11083 0.005412 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001825 +(41568) accepted ('127.0.0.1', 42430) +(41568) accepted ('127.0.0.1', 42438) +(41568) accepted ('127.0.0.1', 42440) +(41568) accepted ('127.0.0.1', 42452) +(41568) accepted ('127.0.0.1', 42466) +(41568) accepted ('127.0.0.1', 42468) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001312 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/css/lesson.css HTTP/1.1" 304 183 0.000961 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000868 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000821 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000809 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000825 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.001333 +(41568) accepted ('127.0.0.1', 42470) +(41568) accepted ('127.0.0.1', 42472) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000785 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000911 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001202 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001057 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.000901 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /static/js/lesson.js HTTP/1.1" 200 53763 0.000989 +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:35:51] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004616 +(41568) accepted ('127.0.0.1', 42772) +180.160.52.227,127.0.0.1 - - [03/Nov/2025 15:38:21] "GET / HTTP/1.1" 302 351 0.000849 +180.160.52.227,127.0.0.1 - - [03/Nov/2025 15:38:21] "GET /login HTTP/1.1" 200 1835 0.000920 +180.160.52.227,127.0.0.1 - - [03/Nov/2025 15:38:24] "GET / HTTP/1.1" 302 351 0.001306 +180.160.52.227,127.0.0.1 - - [03/Nov/2025 15:38:24] "GET /login HTTP/1.1" 200 1835 0.000905 +(41568) accepted ('127.0.0.1', 46166) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:39] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11083 0.004903 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001889 +(41568) accepted ('127.0.0.1', 46178) +(41568) accepted ('127.0.0.1', 46190) +(41568) accepted ('127.0.0.1', 46206) +(41568) accepted ('127.0.0.1', 46210) +(41568) accepted ('127.0.0.1', 46212) +(41568) accepted ('127.0.0.1', 46222) +(41568) accepted ('127.0.0.1', 46226) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001045 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/css/lesson.css HTTP/1.1" 200 4146 0.000942 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000808 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000778 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000762 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000790 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000771 +(41568) accepted ('127.0.0.1', 46234) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000786 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.001189 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001223 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.000968 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.000873 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /static/js/lesson.js HTTP/1.1" 200 53761 0.000983 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:42:40] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004733 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11150 0.007183 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001868 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.001353 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001031 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000923 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.000880 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/css/lesson_markdown.css HTTP/1.1" 200 1245 0.000782 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000813 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000787 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000800 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000809 +(41568) accepted ('127.0.0.1', 48348) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000741 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001690 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.000945 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.000864 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:06] "GET /static/js/lesson.js HTTP/1.1" 304 185 0.000844 +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:07] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.005091 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11151 0.007048 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001528 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000904 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.000990 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.001003 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.000759 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000728 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000784 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000797 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 193 0.000731 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000735 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.001118 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001194 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001149 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/js/lesson.js HTTP/1.1" 304 185 0.000854 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.000767 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:43:45] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004491 +(41568) accepted ('127.0.0.1', 38458) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11151 0.004839 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001295 +(41568) accepted ('127.0.0.1', 38462) +(41568) accepted ('127.0.0.1', 38466) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001142 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.001243 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.001024 +(41568) accepted ('127.0.0.1', 38470) +(41568) accepted ('127.0.0.1', 38486) +(41568) accepted ('127.0.0.1', 38494) +(41568) accepted ('127.0.0.1', 38504) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.001319 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.001103 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000792 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/css/lesson_markdown.css HTTP/1.1" 200 1725 0.000824 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000826 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000897 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.001240 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001281 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001209 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/js/lesson.js HTTP/1.1" 304 185 0.000850 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.000809 +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:46:51] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004485 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11151 0.004950 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001471 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001643 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.001233 +(41568) accepted ('127.0.0.1', 53938) +(41568) accepted ('127.0.0.1', 53942) +(41568) accepted ('127.0.0.1', 53950) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000910 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.001187 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000817 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/css/lesson_markdown.css HTTP/1.1" 200 1710 0.000786 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000784 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000797 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000783 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000802 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001250 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.000945 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.000779 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:04] "GET /static/js/lesson.js HTTP/1.1" 304 185 0.000838 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:05] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004577 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11146 0.007167 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001522 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.001271 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001164 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000807 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000755 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000758 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000757 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000716 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000972 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000849 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000757 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001177 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001008 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.001343 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /static/js/lesson.js HTTP/1.1" 304 185 0.001212 +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:47:42] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.005836 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11147 0.007278 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.001461 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001120 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000822 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000736 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.000760 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.000764 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000764 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000742 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.001175 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000772 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000795 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.002104 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.002253 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.002281 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:09] "GET /static/js/lesson.js HTTP/1.1" 304 185 0.000992 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:48:10] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004510 +(41568) accepted ('127.0.0.1', 39694) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11156 0.010571 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.002091 +(41568) accepted ('127.0.0.1', 39708) +(41568) accepted ('127.0.0.1', 39714) +(41568) accepted ('127.0.0.1', 39716) +(41568) accepted ('127.0.0.1', 39730) +(41568) accepted ('127.0.0.1', 39744) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001202 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.001020 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.001257 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000926 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000930 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.001009 +(41568) accepted ('127.0.0.1', 39756) +(41568) accepted ('127.0.0.1', 39768) +(41568) accepted ('127.0.0.1', 39776) +(41568) accepted ('127.0.0.1', 39792) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000958 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000888 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000874 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000998 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.002097 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001481 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.001140 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /static/js/lesson.js HTTP/1.1" 304 185 0.001155 +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:33] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.006016 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11147 0.008506 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001878 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.001546 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.001038 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001013 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000991 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000987 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000905 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000928 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000937 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000899 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000902 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001467 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001093 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.001618 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /static/js/lesson.js HTTP/1.1" 304 185 0.001103 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:45] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.005278 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11156 0.007705 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.002006 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001177 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001066 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.001048 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.001003 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000926 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000952 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.001171 +(41568) accepted ('127.0.0.1', 52012) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000942 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000979 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.001197 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001437 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001351 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.001576 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /static/js/lesson.js HTTP/1.1" 304 185 0.001589 +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:51] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.005877 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:56] "GET /teacherboard HTTP/1.1" 200 8212 0.005493 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:56] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001826 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:56] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.001127 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:56] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.001117 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:56] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000941 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:56] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000984 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:56] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.000948 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:56] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.001184 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:56] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.001034 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:56] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001667 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:56] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001152 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:56] "GET /static/css/footer.css HTTP/1.1" 304 184 0.001183 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:56] "GET /favicon.ico HTTP/1.1" 404 331 0.006401 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:57] "GET /favicon.ico HTTP/1.1" 404 331 0.000847 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:57] "GET /switch-role/teacher HTTP/1.1" 302 363 0.001044 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:57] "GET /dashboard HTTP/1.1" 200 17380 0.019266 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:57] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001298 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:57] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.001060 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:57] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000862 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:57] "GET /static/css/footer.css HTTP/1.1" 304 184 0.000830 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:57] "GET /static/js/dashboard.js HTTP/1.1" 304 186 0.000919 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:57] "GET /favicon.ico HTTP/1.1" 404 331 0.001099 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:50:58] "GET /favicon.ico HTTP/1.1" 404 331 0.000814 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /switch-role/student HTTP/1.1" 302 372 0.000975 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /teacherboard HTTP/1.1" 200 8212 0.004555 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001387 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.000929 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.001197 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000878 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000803 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000819 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000782 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000752 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001189 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001122 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /static/css/footer.css HTTP/1.1" 304 184 0.000885 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:00] "GET /favicon.ico HTTP/1.1" 404 331 0.001021 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /favicon.ico HTTP/1.1" 404 331 0.000760 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /teacherboard HTTP/1.1" 200 8212 0.004878 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001571 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001217 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.001152 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.001058 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.001141 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.001056 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.001016 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.001000 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001390 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /static/css/footer.css HTTP/1.1" 304 184 0.000859 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.000772 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /favicon.ico HTTP/1.1" 404 331 0.000989 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:01] "GET /favicon.ico HTTP/1.1" 404 331 0.000762 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:02] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.005184 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11156 0.004915 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001574 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.001165 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000964 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000815 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000774 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.000750 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000753 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000780 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000760 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000784 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.000735 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001244 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001065 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/js/lesson.js HTTP/1.1" 304 185 0.001165 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.000884 +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:51:05] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.005124 +(41568) accepted ('127.0.0.1', 57372) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11156 0.004882 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001895 +(41568) accepted ('127.0.0.1', 57384) +(41568) accepted ('127.0.0.1', 57390) +(41568) accepted ('127.0.0.1', 57396) +(41568) accepted ('127.0.0.1', 57412) +(41568) accepted ('127.0.0.1', 57426) +(41568) accepted ('127.0.0.1', 57430) +(41568) accepted ('127.0.0.1', 57446) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001004 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000892 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000819 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000768 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000796 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000804 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000786 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.000776 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.001617 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.001436 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001345 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001246 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/js/lesson.js HTTP/1.1" 200 54304 0.000999 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /static/js/lesson_markdown.js HTTP/1.1" 200 6287 0.000801 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:57:07] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004729 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11156 0.005552 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001728 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001486 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.001004 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.001244 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.001079 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000858 +(41568) accepted ('127.0.0.1', 46042) +(41568) accepted ('127.0.0.1', 46046) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000917 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000883 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.001270 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000921 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.001407 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001396 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001082 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.001312 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /static/js/lesson.js HTTP/1.1" 304 184 0.000996 +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +59.78.194.184,127.0.0.1 - - [03/Nov/2025 15:58:10] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.005539 +(41568) accepted ('127.0.0.1', 58128) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11156 0.004758 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001748 +(41568) accepted ('127.0.0.1', 58134) +(41568) accepted ('127.0.0.1', 58140) +(41568) accepted ('127.0.0.1', 58152) +(41568) accepted ('127.0.0.1', 58162) +(41568) accepted ('127.0.0.1', 58176) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001761 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.000915 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000857 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.001128 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000749 +(41568) accepted ('127.0.0.1', 58188) +(41568) accepted ('127.0.0.1', 58192) +(41568) accepted ('127.0.0.1', 58204) +(41568) accepted ('127.0.0.1', 58214) +(41568) accepted ('127.0.0.1', 58216) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000790 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000767 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000782 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000763 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000954 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.002242 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 193 0.001456 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.000909 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /static/js/lesson.js HTTP/1.1" 200 54367 0.000957 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:01:09] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004564 +(41568) accepted ('127.0.0.1', 36530) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:15] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11156 0.004877 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001436 +(41568) accepted ('127.0.0.1', 36542) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001638 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.001038 +(41568) accepted ('127.0.0.1', 36554) +(41568) accepted ('127.0.0.1', 36568) +(41568) accepted ('127.0.0.1', 36580) +(41568) accepted ('127.0.0.1', 36586) +(41568) accepted ('127.0.0.1', 36602) +(41568) accepted ('127.0.0.1', 36604) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.001074 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000784 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000789 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000796 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000788 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000779 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000750 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000787 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001206 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001106 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/js/lesson_markdown.js HTTP/1.1" 200 11083 0.001661 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /static/js/lesson.js HTTP/1.1" 200 54433 0.001492 +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:16] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004935 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11156 0.004975 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001501 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.001069 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001175 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.000865 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000763 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000750 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000847 +(41568) accepted ('127.0.0.1', 32888) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000780 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000793 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000755 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000776 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001219 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001457 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/js/lesson_markdown.js HTTP/1.1" 200 11089 0.001206 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /static/js/lesson.js HTTP/1.1" 304 184 0.000976 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:06:51] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.005745 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11156 0.004841 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001493 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.001615 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.000821 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.000773 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000769 +(41568) accepted ('127.0.0.1', 53038) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000744 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000798 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000743 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000798 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000774 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000762 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001206 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001246 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/js/lesson.js HTTP/1.1" 304 184 0.001454 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /static/js/lesson_markdown.js HTTP/1.1" 200 11087 0.000961 +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:07:09] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004865 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11156 0.005453 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.002162 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001370 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.001126 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.001186 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000945 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000908 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000856 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.001496 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000953 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000960 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.001141 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001338 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001483 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/js/lesson_markdown.js HTTP/1.1" 200 11102 0.001370 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /static/js/lesson.js HTTP/1.1" 304 184 0.001143 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:08:30] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.006591 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11156 0.004809 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001432 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.001246 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.000798 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.001027 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000804 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000759 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000743 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000761 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000737 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000851 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.001217 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001230 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001219 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/js/lesson_markdown.js HTTP/1.1" 200 6292 0.001312 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:52] "GET /static/js/lesson.js HTTP/1.1" 200 59245 0.001177 +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:09:53] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.005272 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11156 0.004771 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001279 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.001287 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000856 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000765 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000752 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.001090 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000741 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.000756 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000734 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000750 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000779 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.001222 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.000952 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 192 0.000946 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /static/js/lesson.js HTTP/1.1" 200 59210 0.000921 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:07] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.004544 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /api/materials/68bacdfadf5aeae0912f7f18/chapters/%E7%AC%AC%E5%9B%9B%E5%91%A8/lessons/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 11156 0.004941 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/css/teacherboard.css HTTP/1.1" 304 190 0.001591 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/css/lesson.css HTTP/1.1" 304 184 0.001462 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/css/teacher_course_setting.css HTTP/1.1" 304 200 0.000901 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/css/dashboard.css HTTP/1.1" 304 187 0.000816 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/css/lesson_markdown.css HTTP/1.1" 304 194 0.000769 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/css/lesson_setting.css HTTP/1.1" 304 191 0.000762 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/css/modelinput.css HTTP/1.1" 304 188 0.000943 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/css/navbar.css HTTP/1.1" 304 184 0.000774 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/image/algorithm/book_cover.png HTTP/1.1" 304 191 0.000746 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/js/course_current.js HTTP/1.1" 304 191 0.000826 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/js/modelinput.js HTTP/1.1" 304 188 0.000754 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/js/teacher_course_setting.js HTTP/1.1" 304 201 0.001233 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/js/teacherboard.js HTTP/1.1" 304 191 0.000933 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/js/lesson_markdown.js HTTP/1.1" 304 192 0.001308 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /static/js/lesson.js HTTP/1.1" 200 59199 0.001151 +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +name='算法分析与设计' description='测试:算法分析与设计课程' teacher_id='TCake' created_at=datetime.datetime(2025, 9, 5, 19, 48, 10, 16000) updated_at=datetime.datetime(2025, 11, 3, 13, 43, 44, 383000) image_url='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/TCake_book_cover.png' chapters=[Chapter(chapter_name='第一周', lessons=[Lesson(lesson_name='效率的重要性与实践验证', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250916T050319Z_score_prompt.md')]), Chapter(chapter_name='第二周', lessons=[Lesson(lesson_name='分治法与代表算法——归并排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T153841Z_score_prompt.md')]), Chapter(chapter_name='第三周', lessons=[Lesson(lesson_name='分治法实践与优化', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250922T154450Z_score_prompt.md')]), Chapter(chapter_name='第四周', lessons=[Lesson(lesson_name='基于比较的排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131013Z_score_prompt.md')]), Chapter(chapter_name='第五周', lessons=[Lesson(lesson_name='非比较型排序', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20251103T131045Z_score_prompt.md')]), Chapter(chapter_name='基础算法', lessons=[Lesson(lesson_name='二分', markdown_lesson_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_lesson.md', markdown_prompt_file_name='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_prompt.md', markdown_score_prompt_file_link='https://hsamooc-cdn-1374354408.cos.ap-guangzhou.myqcloud.com/materials_68bacdfadf5aeae0912f7f18_untitled_untitled_20250905T194845Z_score_prompt.md')])] +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:10:20] "GET /materials/68bacdfadf5aeae0912f7f18 HTTP/1.1" 200 4434 0.005099 +(41568) accepted ('127.0.0.1', 52830) +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:12:34] "POST /api/materials/save/68bacdfadf5aeae0912f7f18/%E7%AC%AC%E5%9B%9B%E5%91%A8/%E5%9F%BA%E4%BA%8E%E6%AF%94%E8%BE%83%E7%9A%84%E6%8E%92%E5%BA%8F HTTP/1.1" 200 1082 0.585302 +59.78.194.184,127.0.0.1 - - [03/Nov/2025 16:14:05] "POST /api/upload HTTP/1.1" 200 327 0.510310 diff --git a/Html/app.py b/Html/app.py index 8369740..9209929 100644 --- a/Html/app.py +++ b/Html/app.py @@ -12,7 +12,7 @@ if __name__ == "__main__": app, host="0.0.0.0", port=5551, - debug=False, # 开发期打开 + debug=True, # 开发期打开 # allow_unsafe_werkzeug=True, # 避免 dev server 的安全限制提示 # ssl_context=('server.crt', 'server.key') ) diff --git a/Html/apps/static/css/lesson.css b/Html/apps/static/css/lesson.css index 3b0b39f..f123176 100644 --- a/Html/apps/static/css/lesson.css +++ b/Html/apps/static/css/lesson.css @@ -125,7 +125,7 @@ .tab-btn.active { background:#f0f8ff; border-color:#a0c4ff; } .actions { margin-left:auto; } .actions button { padding:6px 12px; border:none; border-radius:8px; background:#4CAF50; color:#fff; cursor:pointer; } - .tab-content { flex:1; padding:8px; } + .tab-content { flex:1; padding:8px;display: flex; } .tab { display:none; height:100%; } .tab.active { display:block; height:100%; } textarea { diff --git a/Html/apps/static/css/lesson_markdown.css b/Html/apps/static/css/lesson_markdown.css new file mode 100644 index 0000000..0ac4cdc --- /dev/null +++ b/Html/apps/static/css/lesson_markdown.css @@ -0,0 +1,56 @@ +/* 左右分栏:左=编辑,右=预览 */ + .editor-pane { + grid-template-columns: 1fr 1fr; /* 左右各一半 */ + gap: 12px; + align-items: start; + } + /* 兼容你页面现有布局:让编辑区域(左半)占满左侧 */ + .tab-content { + height: calc(100vh - 220px); /* 视口高度自适应,按需调整 */ + overflow: hidden; /* 内部由 EasyMDE 自己滚动 */ + display: flex; + } + .tab { + height: 100%; + } + .tab textarea { + height: 100%; + } + /* 右侧预览 */ + .md-preview-pane { + border: 1px solid #e5e7eb; + border-radius: 8px; + padding: 16px; + background: #fff; + height: calc(100vh - 220px); + overflow: auto; + } + .md-preview-pane h1, .md-preview-pane h2, .md-preview-pane h3 { + border-bottom: 1px solid #f1f5f9; + padding-bottom: .3em; + margin-top: 1.2em; + } + .md-preview-pane img { + max-width: 100%; + height: auto; + } + /* 只影响右侧 Markdown 预览里的表格 */ +.md-preview-pane .table { + /* 如果你想完全摆脱 bootstrap.table 的影响 */ + all: revert; /* 或者 all: unset; 视需求选择 */ + display: table; + border-collapse: collapse; + /* 下面写你自己的表格样式 */ + border: 1px solid #e5e7eb; +} + +.md-preview-pane .table th, +.md-preview-pane .table td { + border: 1px solid #e5e7eb; + padding: 8px 10px; +} + +.md-preview-pane .table thead th { + background: #f8fafc; + font-weight: 600; +} diff --git a/Html/apps/static/js/lesson.js b/Html/apps/static/js/lesson.js index fbabd45..02fd2f8 100644 --- a/Html/apps/static/js/lesson.js +++ b/Html/apps/static/js/lesson.js @@ -801,10 +801,11 @@ function ValidTextareaNoBlankHead(textarea) { // 更新 textarea 的值(如果有变化) textarea.value = lines.join("\n"); } -const editors = document.querySelectorAll("textarea"); +const editorsDoc = document.querySelectorAll("textarea"); const PREFIX = "### "; // 记录每个 textarea 最新的“标题内容”(不含前缀) const lastTitleMap = new Map(); + // 防止循环触发 let isProgrammaticUpdate = false; function getFirstLine(text) { @@ -823,7 +824,7 @@ const lastTitleMap = new Map(); return { line: normalized, title }; } // 初始化 lastTitleMap(把当前值规范化一次) - editors.forEach(ed => { + editorsDoc.forEach(ed => { const rawFirst = getFirstLine(ed.value || ""); const { line, title } = normalizeFirstLine(rawFirst); if (line !== rawFirst) { @@ -837,7 +838,7 @@ const lastTitleMap = new Map(); function syncOthers(sourceEditor, newTitle) { isProgrammaticUpdate = true; try { - editors.forEach(ed => { + editorsDoc.forEach(ed => { if (ed === sourceEditor) return; const first = getFirstLine(ed.value || ""); const { line } = normalizeFirstLine(first); @@ -851,56 +852,204 @@ const lastTitleMap = new Map(); isProgrammaticUpdate = false; } } -editors.forEach(editor => { - editor.addEventListener("input", (event) => { - const textarea = event.target - const value = event.target.value; - const type = event.target.dataset.type; - // 在这里做提示或校验 - console.log(`内容已更改: ${event.target.id} => ${value}`); + +// ==== 前置:你的三编辑器实例与 id 映射(按你实际为准)==== +const ID_LESSON = 'editor-lesson'; +const ID_PROMPT = 'editor-prompt'; +const ID_SCORE = 'editor-score'; - ValidTextareaNoBlankHead(event.target) +// editors: { [textareaId]: EasyMDEInstance } +const editorIds = [ID_LESSON, ID_PROMPT, ID_SCORE]; - const rawFirst = getFirstLine(value); +// 全局防抖/重入保护:避免程序化更新再触发同步 + +// // 记录上一次各编辑器的标题文本(不含 "### " 前缀) +// const lastTitleMap = new Map(); + +// —— 工具:从 EasyMDE 拿值 / 设值(会同步 textarea,因为 forceSync:true)—— +const getMD = (id) => editors[id].value(); +const setMD = (id, text) => editors[id].value(text); + +// —— 工具:仅替换“首行”为 normalizedLine,尽量不破坏光标与撤销栈 —— +// line 是完整首行文本(含 "### ") +function setFirstLineInEditor(ed, normalizedLine) { + const cm = ed.codemirror; + cm.operation(() => { + const doc = cm.getDoc(); + const firstLine = doc.getLine(0) ?? ""; + if (firstLine === normalizedLine) return; + + // 记住用户光标 + const cursors = doc.listSelections(); + + // 用 replaceRange 仅替换首行 + doc.replaceRange( + normalizedLine, + { line: 0, ch: 0 }, + { line: 0, ch: firstLine.length } + ); + + // 尽力恢复光标(如果原先在首行,偏移可能要校正) + doc.setSelections(cursors); + }); +} + +// —— 工具:从 Markdown 文本取首行(兼容你现有函数) +function getFirstLineFromText(text) { + const idx = text.indexOf('\n'); + return idx === -1 ? text : text.slice(0, idx); +} + +// —— 工具:把 normalizedLine 写回文本首行(备用:整段 setValue)—— +function setFirstLineInText(text, normalizedLine) { + const idx = text.indexOf('\n'); + return idx === -1 ? normalizedLine : (normalizedLine + text.slice(idx)); +} + +// —— 同步另外两个编辑器的首行(仅标题行),避免全文覆盖 —— +function syncOthersTitle(fromId, titleText /*不含前缀*/, normalizedLine /*含### */) { + editorIds.forEach((id) => { + if (id === fromId) return; + const ed = editors[id]; + if (!ed) return; + + const currentFirst = ed.codemirror.getDoc().getLine(0) ?? ""; + if (currentFirst !== normalizedLine) { + setFirstLineInEditor(ed, normalizedLine); + lastTitleMap.set(ed, titleText); + } + }); +} + +// —— 更新 tab 按钮上的 “*” 修改状态(保持你原逻辑)—— +function refreshTabDirtyBadges() { + let btn = document.getElementById("tab-btn-lesson"); + if (CURRENT.active.lesson !== getMD(ID_LESSON)) { + btn.innerText = AddModifiedStat(btn.innerText); + } else { + btn.innerText = ClearModifiedStat(btn.innerText); + } + + btn = document.getElementById("tab-btn-prompt"); + if (CURRENT.active.prompt !== getMD(ID_PROMPT)) { + btn.innerText = AddModifiedStat(btn.innerText); + } else { + btn.innerText = ClearModifiedStat(btn.innerText); + } + + btn = document.getElementById("tab-btn-score"); + if (CURRENT.active.score !== getMD(ID_SCORE)) { + btn.innerText = AddModifiedStat(btn.innerText); + } else { + btn.innerText = ClearModifiedStat(btn.innerText); + } +} + +// —— 单个编辑器的 change 处理器工厂 —— +function bindEditorChangeHandler(textareaId) { + const ed = editors[textareaId]; + const cm = ed.codemirror; + + // 初始化 lastTitleMap + lastTitleMap.set(ed, ""); + + cm.on('change', () => { + if (isProgrammaticUpdate) return; + + const value = ed.value(); + const rawFirst = getFirstLineFromText(value); + + // 你自己的校验(如果要继续保留) + // ValidTextareaNoBlankHead(ed.element.nextSibling /* textarea DOM? */); + + // 归一化首行,要求 "### " 前缀 const { line: normalizedLine, title: currentTitle } = normalizeFirstLine(rawFirst); + // 若首行不规范,程序化改回去(仅替换首行) if (normalizedLine !== rawFirst) { - isProgrammaticUpdate = true;// 把首行改回以 '### ' 开头 + isProgrammaticUpdate = true; try { - textarea.value = setFirstLine(value, normalizedLine); + setFirstLineInEditor(ed, normalizedLine); } finally { isProgrammaticUpdate = false; } } - const lastTitle = lastTitleMap.get(textarea) ?? "";// —— 2) 如标题内容有变化,则同步到其他两个 —— // + + // 标题变化则同步到其他两个编辑器(只同步首行) + const lastTitle = lastTitleMap.get(ed) ?? ""; if (currentTitle !== lastTitle) { - lastTitleMap.set(textarea, currentTitle);// 更新自身记录 - syncOthers(textarea, currentTitle); + lastTitleMap.set(ed, currentTitle); + isProgrammaticUpdate = true; + try { + syncOthersTitle(textareaId, currentTitle, normalizedLine); + } finally { + isProgrammaticUpdate = false; + } } - let btn = document.getElementById("tab-btn-lesson"); - if (CURRENT.active.lesson != document.getElementById("editor-lesson").value){ - btn.innerText = AddModifiedStat(btn.innerText) - }else{ - btn.innerText = ClearModifiedStat(btn.innerText) - } - btn = document.getElementById("tab-btn-prompt"); - if (CURRENT.active.prompt != document.getElementById("editor-prompt").value){ - btn.innerText = AddModifiedStat(btn.innerText) - }else{ - btn.innerText = ClearModifiedStat(btn.innerText) - } - btn = document.getElementById("tab-btn-score"); - if (CURRENT.active.score != document.getElementById("editor-score").value){ - btn.innerText = AddModifiedStat(btn.innerText) - }else{ - btn.innerText = ClearModifiedStat(btn.innerText) + // 刷新三个 Tab 的“修改中 * ”标识 + refreshTabDirtyBadges(); + + // 如果你还有右侧预览: + if (typeof renderToPreview === 'function' && textareaId === activeId) { + renderToPreview(ed.value()); } }); -}); +} + +// 绑定三个编辑器 +editorIds.forEach(bindEditorChangeHandler); + +// editorsDoc.forEach(editor => { +// editor.addEventListener("input", (event) => { +// const textarea = event.target +// const value = event.target.value; +// const type = event.target.dataset.type; +// // 在这里做提示或校验 +// console.log(`内容已更改: ${event.target.id} => ${value}`); + +// ValidTextareaNoBlankHead(event.target) + +// const rawFirst = getFirstLine(value); +// const { line: normalizedLine, title: currentTitle } = normalizeFirstLine(rawFirst); + +// if (normalizedLine !== rawFirst) { +// isProgrammaticUpdate = true;// 把首行改回以 '### ' 开头 +// try { +// textarea.value = setFirstLine(value, normalizedLine); +// } finally { +// isProgrammaticUpdate = false; +// } +// } +// const lastTitle = lastTitleMap.get(textarea) ?? "";// —— 2) 如标题内容有变化,则同步到其他两个 —— // +// if (currentTitle !== lastTitle) { +// lastTitleMap.set(textarea, currentTitle);// 更新自身记录 +// syncOthers(textarea, currentTitle); +// } + +// let btn = document.getElementById("tab-btn-lesson"); +// if (CURRENT.active.lesson != document.getElementById("editor-lesson").value){ +// btn.innerText = AddModifiedStat(btn.innerText) +// }else{ +// btn.innerText = ClearModifiedStat(btn.innerText) +// } +// btn = document.getElementById("tab-btn-prompt"); +// if (CURRENT.active.prompt != document.getElementById("editor-prompt").value){ +// btn.innerText = AddModifiedStat(btn.innerText) +// }else{ +// btn.innerText = ClearModifiedStat(btn.innerText) +// } +// btn = document.getElementById("tab-btn-score"); +// if (CURRENT.active.score != document.getElementById("editor-score").value){ +// btn.innerText = AddModifiedStat(btn.innerText) +// }else{ +// btn.innerText = ClearModifiedStat(btn.innerText) +// } +// }); +// }); - // 把“某个步骤”对应的三个片段载入到三个编辑器 +// 把“某个步骤”对应的三个片段载入到三个编辑器 function loadStepToEditors(phaseText, stepText) { // 三份文档里都取对应 phase/step 的片段(不存在则回退) const L = CURRENT.parsed.lesson, P = CURRENT.parsed.prompt, S = CURRENT.parsed.score; @@ -918,9 +1067,9 @@ function loadStepToEditors(phaseText, stepText) { const pText = sliceSection(subP, stepText, 3) || promptPhase; const sText = sliceSection(subS, stepText, 3) || scorePhase; - document.getElementById('editor-lesson').value = lText; - document.getElementById('editor-prompt').value = pText; - document.getElementById('editor-score').value = sText; + editors['editor-lesson'].value(lText); + editors['editor-prompt'].value(pText); + editors['editor-score'].value(sText); CURRENT.active={ //保存打开时的三个文本 phase:phaseText, @@ -938,16 +1087,32 @@ function loadStepToEditors(phaseText, stepText) { } - // Tab 切换 - document.addEventListener('click', (e)=>{ - if (e.target.classList.contains('tab-btn')) { - document.querySelectorAll('.tab-btn').forEach(b=>b.classList.remove('active')); - e.target.classList.add('active'); - const id = e.target.dataset.target; - document.querySelectorAll('.tab').forEach(t=>t.classList.remove('active')); - document.getElementById(id).classList.add('active'); - } - }); +document.addEventListener('click', (e) => { + if (e.target.classList.contains('tab-btn')) { + document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active')); + e.target.classList.add('active'); + + const id = e.target.dataset.target; + document.querySelectorAll('.tab').forEach(t => t.classList.remove('active')); + document.getElementById(id).classList.add('active'); + + // 广播 tab 变更(告诉别人当前激活的 tab id / 以及要用哪个 editorId) + const editorIdMap = { + 'tab-lesson' : 'editor-lesson', + 'tab-prompt' : 'editor-prompt', + 'tab-score' : 'editor-score', + }; + const activeBtnId = e.target.id; // 如 'tab-btn-lesson' + const editorId = + activeBtnId === 'tab-btn-lesson' ? 'editor-lesson' : + activeBtnId === 'tab-btn-prompt' ? 'editor-prompt' : + 'editor-score'; + + document.dispatchEvent(new CustomEvent('tab:change', { + detail: { tabId: id, editorId } + })); + } +}); // 保存全部:将三个编辑器中的文本保存回相应的 markdown 文件 document.getElementById('save-all-btn')?.addEventListener('click', async () => { diff --git a/Html/apps/static/js/lesson_markdown.js b/Html/apps/static/js/lesson_markdown.js new file mode 100644 index 0000000..1139738 --- /dev/null +++ b/Html/apps/static/js/lesson_markdown.js @@ -0,0 +1,198 @@ +const editors = {}; // id -> EasyMDE +(function(){ + // ====== 配置:图片上传接口 ====== + const UPLOAD_URL = '/api/upload'; // 返回 { url: 'https://...' } + + // ====== Markdown 渲染器 ====== + const md = window.markdownit({ + html: false, // 禁止原生HTML,安全些(如需支持可设为 true) + linkify: true, + typographer: true, + breaks: true + }); + + const $preview = document.getElementById('md-preview'); + + // ====== 三个 textarea 的 EasyMDE 实例 ====== + const textareas = [ + { id: 'editor-lesson', tabBtnId: 'tab-btn-lesson' }, + { id: 'editor-prompt', tabBtnId: 'tab-btn-prompt' }, + { id: 'editor-score', tabBtnId: 'tab-btn-score' }, + ]; + + let activeId = 'editor-lesson'; // 默认激活 + + // 工具:将 Markdown 渲染到右侧预览 + const renderToPreview = (markdownStr) => { + const rawHtml = md.render(markdownStr || ''); + const safe = DOMPurify.sanitize(rawHtml); + $preview.innerHTML = safe; + }; + + // 工具:节流/防抖 + function debounce(fn, delay){ + let t; + return function(...args){ + clearTimeout(t); + t = setTimeout(()=>fn.apply(this,args), delay); + } + } + const debouncedPreview = debounce(renderToPreview, 120); + + // 工具:插入文本到当前光标 + function insertAtCursor(cm, text){ + const doc = cm.getDoc(); + const cursor = doc.getCursor(); + doc.replaceRange(text, cursor); + } + + // 图片上传:给粘贴/拖拽/按钮选择共用 + async function uploadFile(file){ + const form = new FormData(); + form.append('file', file); + const { data } = await axios.post(UPLOAD_URL, form, { + headers: { 'Content-Type': 'multipart/form-data' } + }); + if(!data || !data.url){ + throw new Error('上传返回缺少 url 字段'); + } + return data.url; + } + + // 为一个 EasyMDE 实例注入图片粘贴/拖拽/按钮上传 + function bindImageHandlers(easy){ + const cm = easy.codemirror; + + // 1) 粘贴图片 + cm.on('paste', async (cmInst, e)=>{ + const items = (e.clipboardData || e.originalEvent?.clipboardData)?.items || []; + for(const it of items){ + if(it.kind === 'file'){ + const file = it.getAsFile(); + if(file && file.type.startsWith('image/')){ + e.preventDefault(); + try{ + const url = await uploadFile(file); + insertAtCursor(cmInst, `![image](${url})`); + }catch(err){ + console.error(err); + alert('图片上传失败,请重试'); + } + } + } + } + }); + + // 2) 拖拽图片 + easy.codemirror.getWrapperElement().addEventListener('drop', async (e)=>{ + const files = e.dataTransfer?.files || []; + if(!files.length) return; + const img = Array.from(files).find(f=>f.type.startsWith('image/')); + if(!img) return; + e.preventDefault(); + try{ + const url = await uploadFile(img); + insertAtCursor(cm, `![image](${url})`); + }catch(err){ + console.error(err); + alert('图片上传失败,请重试'); + } + }); + + // 3) 工具栏“上传图片”按钮:使用隐藏 input[type=file] + const fileInput = document.createElement('input'); + fileInput.type = 'file'; + fileInput.accept = 'image/*'; + fileInput.style.display = 'none'; + fileInput.addEventListener('change', async ()=>{ + const file = fileInput.files?.[0]; + if(!file) return; + try{ + const url = await uploadFile(file); + insertAtCursor(cm, `![image](${url})`); + }catch(err){ + console.error(err); + alert('图片上传失败,请重试'); + }finally{ + fileInput.value = ''; + } + }); + document.body.appendChild(fileInput); + + // 将 input 触发器挂到 toolbar 按钮上(下面初始化里有 name: 'upload-image') + easy.toolbar?.forEach(btn=>{ + if(btn?.name === 'upload-image'){ + btn.action = () => fileInput.click(); + } + }); + } + + // 创建并初始化一个 EasyMDE + function createMDEFor(textareaId){ + const el = document.getElementById(textareaId); + if(!el) return null; + + const mde = new EasyMDE({ + element: el, + autoDownloadFontAwesome: false, + spellChecker: false, + status: false, + autofocus: textareaId === activeId, + minHeight: '100%', + renderingConfig: { singleLineBreaks: false }, + uploadImage: false, // 我们自定义上传 + toolbar: [ + 'bold','italic','heading','|', + 'quote','unordered-list','ordered-list','table','|', + 'code','link', + { name:'upload-image', action:null, className:'fa fa-image', title:'插入图片(上传)' }, + '|','preview','side-by-side','fullscreen', + '|','guide' + ], + // 保证 textarea 同步(默认就会同步 value;保存时你的原逻辑仍可读取) + forceSync: true + }); + + // 内容变化 -> 刷新预览(仅激活编辑器触发) + mde.codemirror.on('change', ()=>{ + if(textareaId === activeId){ + debouncedPreview(mde.value()); + } + }); + + bindImageHandlers(mde); + return mde; + } + + // 初始化三个编辑器 + for(const t of textareas){ + editors[t.id] = createMDEFor(t.id); + } + + // 初次渲染预览 + debouncedPreview(editors[activeId]?.value() || ''); + + // 监听 Tab 切换按钮,让预览跟随当前激活编辑器 + function setActiveEditor(id){ + activeId = id; + // 确保 EasyMDE 的编辑区获得焦点(可选) + const ed = editors[id]; + if(ed){ + ed.codemirror.refresh(); + ed.codemirror.focus(); + renderToPreview(ed.value()); + } + } + document.addEventListener('tab:change', (e) => { + const { editorId } = e.detail || {}; + if (editorId) setActiveEditor(editorId); + }); + + // 如果你已有 tab 切换逻辑(例如给 .tab-btn 切换 active 类),保留原逻辑即可; + // 我们只需在切换时调用 setActiveEditor 对齐预览内容。 +})(); + + + + + diff --git a/Html/apps/templates/lesson.html b/Html/apps/templates/lesson.html index a443a5b..c60f2fb 100644 --- a/Html/apps/templates/lesson.html +++ b/Html/apps/templates/lesson.html @@ -4,17 +4,26 @@ 课时编辑 + - + + + + + + + + + {% include 'navbar.html' %} @@ -74,6 +83,9 @@
+ @@ -81,7 +93,9 @@ + +