当前位置: 首页 > news >正文

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括:

1.学生端整体界面布局

2.模拟考场与部分个人画像流程的串联

3.整体学生端逻辑

一、学生端

在主界面可以选择自己的用户角色

选择学生则进入学生登录界面

整体的布局如图所示:

二、模拟考场的整体逻辑

在模拟考场界面,点击生成题目后,系统会调用DeepSeek API来获取符合要求的三个题目并返回给前端,前端可以选择其中一个进行模拟。如下图所示:

在作答界面则可以填写作文标题,填写作文内容,选择提交后,前端会调用后端的save-record接口,该接口会保存文章。

@teacher_bp.route('/save-record', methods=['POST'])
def save_record():"""保存考试所写作文"""from main import mysqluser_model = UserModel(mysql)try:data = request.get_json()print(data)student_id = data.get('student_id')teacher_id = data.get('teacher_id')essay_topic = data.get('essay_topic')essay_text = data.get('essay_text')essay_title = data.get('essay_title')if not all([student_id, essay_text, essay_topic, teacher_id]):return jsonify({"error": "缺少必要参数"}), 400# 使用create_essay方法创建作文记录essay_id = user_model.create_essay(student_id=student_id,content=essay_text,topic=essay_topic,  # 使用topic字段存储题目title=essay_title # 标题暂时为空,可以后续添加)# 保存test_record时加入essay_idrecord = user_model.save_test_record(student_id=student_id,teacher_id=teacher_id,essay_id=essay_id  # 添加essay_id参数)return jsonify({"message": "作文保存成功", "essay_id": essay_id,"record_id": record}), 200except Exception as e:logger.error(f"Error in save_record: {str(e)}")return jsonify({"error": "服务器内部错误"}), 500

在该方法中会先创建作文记录插入到essay表,之后创建个人记录保存到test_record表,该表以essay_id为外键。

在作文记录查询界面,即可查看到自己刚才已经提交的作文

点击立即批改则会调用后端update_profile接口

@profile_bp.route('/update-profile', methods=['POST'])
@login_required  # 确保此路由需要登录
def update_profile():"""接收作文,进行全面分析并更新学生各项数据"""data = request.get_json()print(data)if not data:return jsonify({"error": "Request body must be JSON"}), 400# --- Start Debug ---current_app.logger.info(f"收到的请求数据: {data}")current_app.logger.info(f"当前登录的用户信息: student_id={getattr(current_user, 'id', 'N/A')}")# --- End Debug ---student_id = data.get('student_id')essay_id =data.get('essay_id')title = data.get('essay_title')topic = data.get('essay_topic')content = data.get('essay_content')record_id=data.get('record_id')# 增加对当前用户身份的验证if not current_user.id or current_user.id != student_id:return jsonify({"error": "提交的学生ID与当前登录用户不匹配"}), 403if not all([student_id, content]):return jsonify({"error": "缺少必需字段:student_id 和 essay_content"}), 400from main import mysqltry:user_model = UserModel(mysql)  # Needs mysql and UserModel# 1. 创建作文记录essay_id = essay_idprint("")# 2. 分析作文 (使用增强版分析)analysis_result = analyze_essay_comprehensive(content, student_id)# 3. 更新学生画像 (基础得分)user_model.update_writing_profile(student_id, essay_id, analysis_result['scores'])# 4. 保存写作风格特征if 'style_features' in analysis_result:user_model.save_writing_style_features(essay_id, analysis_result['style_features'])# 5. 保存错误模式if 'error_patterns' in analysis_result:user_model.save_error_patterns(student_id, essay_id, analysis_result['error_patterns'])# 6. 分析进步情况progress_result = user_model.analyze_and_record_progress(student_id, essay_id)# 7. 更新学习路径建议for dimension, suggestion in analysis_result.get('suggestions', {}).items():# 根据评分决定优先级score = analysis_result['scores'].get(dimension, 0)current_priority = LearningPathPriority.LOW  # 默认低优先级if score < 70:current_priority = LearningPathPriority.HIGH  # 高优先级elif score < 85:current_priority = LearningPathPriority.MEDIUM  # 中优先级user_model.create_learning_path(student_id, dimension, suggestion,priority=current_priority,  # 使用计算出的优先级created_by='AI',essay_id=essay_id)# 8. 如果包括了历史数据分析,更新学习风格偏好if 'continuous_analysis' in analysis_result:learning_preferences = {'preferred_topics': analysis_result.get('continuous_analysis', {}).get('preferred_topics', ''),'strength_areas': analysis_result.get('continuous_analysis', {}).get('strength_areas', ''),'improvement_areas': analysis_result.get('continuous_analysis', {}).get('improvement_areas', ''),'learning_patterns': analysis_result.get('continuous_analysis', {}).get('learning_patterns', ''),'response_to_feedback': analysis_result.get('continuous_analysis', {}).get('response_to_feedback', '')}user_model.update_learning_preferences(student_id, learning_preferences)success = user_model.save_essay_rate(record_id)return jsonify({"message": "Profile updated successfully","profile": analysis_result,"progress": progress_result})except Exception as e:current_app.logger.error(f"更新个人画像失败: {str(e)}")return jsonify({"error": str(e)}), 500

该接口进行学生文章多维度的评分与记录,批改完成后,学生可从个人画像界面查看批改结果。

如上图所示。

三、学生端逻辑

经小组再次讨论,确认学生端的整体逻辑。学生端主要有三种作文,一种是模拟考场作文,一种是智能训练作文,一种是老师发布的命题作文了,这三种作文首先都会存到essay表,老师发布的作文还会有一个发布表,同时为了能查出该作文是否已经批改,还加入了一个test_record表,这样整体逻辑就是学生可以使用ai批改自己的训练作文,能获得自己每次训练的个人画像,之后还能获得成长路线

相关文章:

  • 【TinyWebServer】HTTP连接处理
  • ntp时间同步服务
  • Admin.Net中的消息通信SignalR解释
  • WebLogic简介
  • 架空线路图像视频监测装置
  • 什么是MongoDB
  • http协议同时传输文本和数据的新理解
  • Spring Boot 如何自动配置 MongoDB 连接?可以自定义哪些配置?
  • Dynadot邮箱工具指南(六):将域名邮箱添加至网易邮箱大师
  • MongoDB 数据库应用
  • 【第二十三章 IAP】
  • 【DAY45】 Tensorboard使用介绍
  • 手写muduo网络库(二):文件描述符fd及其事件的封装(Channel类的实现)
  • 接口测试中缓存处理策略
  • Suna 开源 AI Agent 安装配置过程全解析(输出与交互详解)
  • 国产具身大模型首入汽车工厂,全场景验证开启工业智能新阶段
  • Vuex 自动化生成工具
  • BeckHoff <--> 基恩士(CV-X300)三维机械手视觉系统的通讯 控制
  • 在GIS 工作流中实现数据处理
  • 百度之星2021——BD202104 萌新
  • 网络挣钱的正经路子/免费的关键词优化工具
  • 建设部网站怎么查询企业业绩/推广形式
  • 做电影网站用什么虚拟主机/新的数据新闻
  • 网站架构演变流程/免费个人网站模板
  • 网站优化成都哪里好/苏州关键词搜索排名
  • 如何查看自己做的网站大小/东莞网站营销推广