一、功能概述与设计目标
本功能旨在根据学生的基本信息(年级、学习项目、学习目标等)自动生成一份结构清晰、分周布置的个性化学习计划。该计划以 Markdown 格式返回,并支持一键导出为 Word 文档,便于教师打印或家长留存。
核心目标包括:
-
面向小学、初中、高中三个阶段定制内容
-
提供丰富的学科与知识点选择
-
收集学生偏好、资源、时间等个性参数
-
自动生成结构化周计划,并以 Markdown 渲染 + Word 下载方式展示
二、前端设计与表单交互
1. 阶段与科目选择
左侧侧边栏提供年级阶段选择(小学/初中/高中),每个阶段关联不同的学科与知识主题,实现动态适配:
subjectList() {
return this.subjects[this.planVersion];
}
点击某一科目后,右侧会联动显示该学科下的具体知识点主题,增强交互灵活性。
2. 表单输入字段
用户需填写以下关键信息:
-
当前水平(零基础/初级/中级/高级)
-
学习偏好(如:喜欢自学、注重讨论等)
-
每日学习时长(含快捷“+0.5小时”按钮)
-
学习周期(单位:周)
-
可用资源(教材、家教、网课等)
-
学习目标(最大200字)
3. 提交与弹窗预览
用户提交后系统将展示一个 Markdown 渲染弹窗,提供:
-
🧾 结构化学习计划预览(以周为单位)
-
🔗 Word 下载链接
-
❌ 关闭按钮
<div v-html="renderedPlan"></div>
<a :href="downloadUrl">下载Word文档</a>
三、后端生成逻辑(Flask + DeepSeek + Pandoc)
后端采用 Flask 构建 REST API 接口,整体流程如下:
@app.route('/api/plan', methods=['POST'])
def generate_plan():
1. 获取用户 prompt 请求内容
2. 调用 DeepSeek API 获取 Markdown 计划
3. 使用 pypandoc 转为 docx 文档
4. 返回 plan_markdown 与下载链接
1. Prompt 构建与模型调用
后端接收到前端 prompt 后,使用 deepseek-chat
模型生成带有标题、周数、建议内容等 Markdown 学习计划:
rsp = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "system", "content": "你是一个中国高中教师..."},
{"role": "user", "content": prompt}])
模型回复示例:
## 第1周:基础认知
- 阅读:函数的基本定义
- 实践:绘制简单函数图像
- 检查点:区分一次函数与二次函数
...
2. Markdown → Word 文档转换
后端使用 pypandoc
将 Markdown 格式文档转为 .docx
:
pypandoc.convert_text(plan_md, 'docx', format='md', outputfile=out_path)
文件保存至 static/plans/
文件夹,供前端直接访问。
3. 最终输出结构
{
"success": true,
"plan_markdown": "...",
"download_url": "http://host/static/plans/study_plan_xxx.docx"
}
4. 最终文档效果
四、用户体验优化点
-
所有输入控件支持即时反馈与清空验证
-
Markdown 弹窗支持滚动 + 动画弹入
-
Word 下载链接添加 target 属性,避免跳转干扰
-
表单输入字段以“并排 + 按钮”形式优化填写效率
五、安全性与稳定性
-
后端接口设置错误捕获与日志记录(logger.error)
-
输入合法性校验:如 prompt 缺失直接返回 400 错误
-
文件保存路径使用
uuid4
保证唯一性,防止覆盖 -
异常处理统一返回
{success: false, error: ...}
,前端显示提示
六、总结
学习计划制定功能是师说教学系统中实现“千人千面”教学的关键一环。通过用户输入 → AI智能生成 → 多格式输出的完整链路,系统实现了个性化内容与高质量文档并重的智能教育体验。
无论是学生、教师,还是家长,该模块都极具应用价值。未来配合用户行为分析与课程反馈机制,将进一步提升系统的智能化与人性化程度。