From f50d37259e56c0d68fe45424c8746bd1e1f4a16e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=9D=B0=20Jie=20Zhao=20=EF=BC=88=E9=9B=84?= =?UTF-8?q?=E7=8B=AE=E6=B1=BD=E8=BD=A6=E7=A7=91=E6=8A=80=EF=BC=89?= <00061074@chery.local> Date: Mon, 3 Nov 2025 12:23:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B7=87=EE=86=BC=EE=98=B2=E9=90=A2?= =?UTF-8?q?=E3=84=A6=E5=9F=9B=E5=A8=89=E3=84=A5=E5=94=BD=E9=8D=94=E7=86=BB?= =?UTF-8?q?=E5=85=98=E9=8D=9C=E5=B1=BC=E7=B4=AD=E9=8D=96=E6=A0=A7=E5=8F=BE?= =?UTF-8?q?=E6=B5=A0=E6=A0=A8=E6=B9=87=E9=8D=94=EF=BC=84=E6=AE=91=E9=96=BF?= =?UTF-8?q?=E6=AC=92=EE=87=A4=E6=BE=B6=E5=8B=AD=E6=82=8A=20-=20=E6=B7=87?= =?UTF-8?q?=EE=86=BC=EE=98=B2=E5=A8=89=E3=84=A5=E5=94=BD=E9=8F=83=E7=A7=9B?= =?UTF-8?q?ser=5Fdata=E6=B6=93=E7=AF=98one=E7=80=B5=E8=89=B0=E5=9A=A7?= =?UTF-8?q?=E9=90=A8=E5=87=99ttributeError=20-=20=E5=A8=A3=E8=AF=B2?= =?UTF-8?q?=E5=A7=9E=E9=90=A2=E3=84=A6=E5=9F=9B=E7=80=9B=E6=A8=BA=E6=B9=AA?= =?UTF-8?q?=E9=8E=AC=D1=84=EE=97=85=E9=8F=8C=E3=83=A5=E5=9F=8C=E9=8E=B5?= =?UTF-8?q?=E2=82=AC=E9=8F=88=E5=A4=8B=E6=B9=87=E9=8D=94=3F-=20=E9=8F=80?= =?UTF-8?q?=E7=A1=85=E7=B9=98=E9=96=BF=E6=AC=92=EE=87=A4=E9=8F=83=E3=83=A5?= =?UTF-8?q?=E7=B9=94=E7=92=81=E6=9D=BF=E7=B6=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web_app.py | 95 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 77 insertions(+), 18 deletions(-) diff --git a/web_app.py b/web_app.py index 8872e25..15b8ab6 100644 --- a/web_app.py +++ b/web_app.py @@ -409,19 +409,45 @@ def user_register(): core = get_app_core() user_data = core.get_user_data(user_id) - # 更新用户基本信息 - user_data.profile['name'] = name - core.data_manager.save_user_data(user_data) + # 如果用户不存在,创建新用户 + if not user_data: + initial_data = { + 'profile': { + 'name': name, + 'age': 25, + 'gender': '未知', + 'height': 170, + 'weight': 60, + 'activity_level': 'moderate' + }, + 'preferences': {} + } + if core.create_user(user_id, initial_data): + user_data = core.get_user_data(user_id) + else: + return jsonify({ + 'success': False, + 'message': '创建用户失败' + }), 500 - session['user_id'] = user_id - return jsonify({ - 'success': True, - 'user_id': user_id, - 'name': name - }) + # 更新用户基本信息 + if user_data: + user_data.profile['name'] = name + core.data_manager.save_user_data(user_data) + session['user_id'] = user_id + return jsonify({ + 'success': True, + 'user_id': user_id, + 'name': name + }) + else: + return jsonify({ + 'success': False, + 'message': '用户数据获取失败' + }), 500 except Exception as e: - logger.error(f"用户注册失败: {e}") + logger.error(f"用户注册失败: {e}", exc_info=True) return jsonify({ 'success': False, 'message': f'注册失败: {str(e)}' @@ -439,11 +465,19 @@ def submit_questionnaire(): 'message': '请先登录' }), 401 + core = get_app_core() + # 确保用户存在 + user_data = core.get_user_data(user_id) + if not user_data: + return jsonify({ + 'success': False, + 'message': '用户数据不存在,请先注册' + }), 404 + data = request.get_json() questionnaire_type = data.get('type', 'basic') # basic, taste, physiological answers = data.get('answers', {}) - core = get_app_core() input_data = { 'type': 'questionnaire', 'questionnaire_type': questionnaire_type, @@ -464,7 +498,7 @@ def submit_questionnaire(): }), 500 except Exception as e: - logger.error(f"提交问卷失败: {e}") + logger.error(f"提交问卷失败: {e}", exc_info=True) return jsonify({ 'success': False, 'message': f'提交失败: {str(e)}' @@ -482,6 +516,15 @@ def record_meal(): 'message': '请先登录' }), 401 + core = get_app_core() + # 确保用户存在 + user_data = core.get_user_data(user_id) + if not user_data: + return jsonify({ + 'success': False, + 'message': '用户数据不存在,请先注册' + }), 404 + data = request.get_json() meal_data = { 'date': data.get('date', datetime.now().strftime('%Y-%m-%d')), @@ -493,7 +536,6 @@ def record_meal(): 'notes': data.get('notes', '') } - core = get_app_core() input_data = { 'type': 'meal_record', **meal_data @@ -513,7 +555,7 @@ def record_meal(): }), 500 except Exception as e: - logger.error(f"记录餐食失败: {e}") + logger.error(f"记录餐食失败: {e}", exc_info=True) return jsonify({ 'success': False, 'message': f'记录失败: {str(e)}' @@ -531,12 +573,21 @@ def get_recommendations(): 'message': '请先登录' }), 401 + core = get_app_core() + # 确保用户存在 + user_data = core.get_user_data(user_id) + if not user_data: + return jsonify({ + 'success': False, + 'message': '用户数据不存在,请先注册', + 'recommendations': [] + }), 404 + data = request.get_json() meal_type = data.get('meal_type', 'lunch') preferences = data.get('preferences', {}) context = data.get('context', {}) - core = get_app_core() input_data = { 'type': 'meal_recommendation', 'meal_type': meal_type, @@ -559,7 +610,7 @@ def get_recommendations(): }), 500 except Exception as e: - logger.error(f"获取推荐失败: {e}") + logger.error(f"获取推荐失败: {e}", exc_info=True) return jsonify({ 'success': False, 'message': f'获取失败: {str(e)}', @@ -578,10 +629,18 @@ def analyze_nutrition(): 'message': '请先登录' }), 401 + core = get_app_core() + # 确保用户存在 + user_data = core.get_user_data(user_id) + if not user_data: + return jsonify({ + 'success': False, + 'message': '用户数据不存在,请先注册' + }), 404 + data = request.get_json() meal_data = data.get('meal_data', {}) - core = get_app_core() input_data = { 'type': 'nutrition_analysis', 'meal_data': meal_data @@ -601,7 +660,7 @@ def analyze_nutrition(): }), 500 except Exception as e: - logger.error(f"营养分析失败: {e}") + logger.error(f"营养分析失败: {e}", exc_info=True) return jsonify({ 'success': False, 'message': f'分析失败: {str(e)}'