项目实训(十一)| 学习路线模块:个性化学习路线生成 一 个性化路线生成流程1.1 接口设计个性化路线生成分为基础版和增强版两个接口。基础版接收用户水平和学习方向两个核心参数增强版增加学习目标关键词学习周期每日时长等扩展参数。router.post(/learning-path)asyncdefgenerate_learning_path(body:LearningPathRequest,user_id:strDepends(get_current_user_id)):pathawaitlearning_path_service.generate_learning_path(user_levelbody.user_level,learning_directionbody.learning_direction,known_conceptsbody.known_concepts,)returnResponseBase(datapath)router.post(/learning-path/enhanced)asyncdefgenerate_learning_path_enhanced(body:LearningPathRequest,user_id:strDepends(get_current_user_id)):pathawaitlearning_path_service.generate_learning_path_enhanced(user_levelbody.user_level,learning_directionbody.learning_direction,learning_goalbody.learning_goal,keywordsbody.keywords,study_periodbody.study_period,daily_timebody.daily_time,)returnResponseBase(datapath)1.2 生成机制后端服务层调用 LLM 生成路线结构包含阶段数节点数和学习目标等信息。首次生成仅返回框架数据学习内容在用户进入节点时按需加载。这种解耦设计的核心技术考量在于 LLM 调用成本较高一次性生成全部内容会导致响应时间过长。通过只生成框架结构可以快速响应用户请求让用户尽快开始学习。节点内容的按需生成则通过会话机制实现在用户进入具体节点时才调用 LLM 生成详细内容同时进行缓存避免重复调用。1.3 路线保存与分享用户可将生成的路线保存到热榜通过 save_generated_path 接口将 AI 生成的路线数据转换为用户路线格式持久化。router.post(/learning-path/save)asyncdefsave_generated_path(body:GeneratedPathSaveRequest,user_id:strDepends(get_current_user_id)):stages_data[{name:s.name,goal:s.goal,duration_days:s.duration_days,nodes:[{title:n.title,learning_goal:n.learning_goal}fornins.nodes],}forsinbody.stages]resultawaitlearning_path_service.create_user_path(user_iduser_id,titlebody.title,summarybody.summary,stages_datastages_data,)returnResponseBase(dataresult)保存的路线与用户手动创建的路线具有相同的结构和功能支持投票收藏等互动操作。这种设计实现了内容生成和内容分享的闭环用户不仅可以获取个性化路线还可以将优质路线贡献给社区形成完整的学习生态。二 数据流转设计2.1 三层数据模型路线数据在三个层级间流转。展示层仅包含卡片所需的基础信息详情层增加阶段和节点列表学习层在用户进入节点时动态生成具体内容。展示层数据结构示例{id:path_001,title:零基础入门投资,summary:从基础知识到实战操作的完整学习路径,difficulty_level:入门,learning_direction:股票投资,estimated_days:14,stage_count:3,learner_count:1256}详情层数据增加阶段和节点列表学习层数据包含具体的教学内容块。这种分层设计使得数据可以根据使用场景进行裁剪避免不必要的数据传输。展示层用于首页列表详情层用于路线详情页学习层用于节点学习页每层数据按需加载。2.2 渐进式加载策略渐进式加载与用户操作流程相匹配用户先浏览路线概览再查看详细结构最后进入具体学习内容每个阶段仅加载当前需要的数据。这种策略的技术优势在于减少初始页面加载时间提升用户体验。同时通过延迟加载非关键内容可以降低服务器负载提高系统的整体性能。渐进式加载的实现依赖于前端路由和状态管理当用户导航到不同页面时触发相应的数据加载逻辑。三 技术实现亮点3.1 状态管理优化前端使用 Provider 模式管理全局状态将学习路线数据集中管理。Provider 通过 ChangeNotifier 实现状态变更通知相关 Widget 自动响应状态变化并刷新界面。这种响应式状态管理机制确保界面数据与后端数据的一致性同时简化了状态传递逻辑。3.2 异步处理机制系统大量使用异步操作处理数据请求和内容生成避免阻塞主线程影响用户体验。前端使用 async await 语法处理异步操作后端使用 FastAPI 的异步支持实现高并发请求处理。异步操作配合状态管理确保界面在数据加载期间保持响应并在数据就绪后及时更新。3.3 缓存策略后端对生成的路线内容进行缓存避免重复调用 LLM 生成相同内容。缓存机制结合会话管理确保用户在同一会话中多次访问同一节点时直接返回缓存数据。缓存策略的设计考量在于减少 LLM 调用次数降低服务成本同时提高响应速度。