fix: 淇鐢ㄦ埛娉ㄥ唽鍔熻兘鍜屼紭鍖栧叾浠栨湇鍔$殑閿欒澶勭悊 - 淇娉ㄥ唽鏃秛ser_data涓篘one瀵艰嚧鐨凙ttributeError - 娣诲姞鐢ㄦ埛瀛樺湪鎬ф鏌ュ埌鎵€鏈夋湇鍔?- 鏀硅繘閿欒鏃ュ織璁板綍
This commit is contained in:
79
web_app.py
79
web_app.py
@@ -409,19 +409,45 @@ def user_register():
|
||||
core = get_app_core()
|
||||
user_data = core.get_user_data(user_id)
|
||||
|
||||
# 如果用户不存在,创建新用户
|
||||
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
|
||||
|
||||
# 更新用户基本信息
|
||||
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)}'
|
||||
|
||||
Reference in New Issue
Block a user