fix: 淇鐢ㄦ埛娉ㄥ唽鍔熻兘鍜屼紭鍖栧叾浠栨湇鍔$殑閿欒澶勭悊 - 淇娉ㄥ唽鏃秛ser_data涓篘one瀵艰嚧鐨凙ttributeError - 娣诲姞鐢ㄦ埛瀛樺湪鎬ф鏌ュ埌鎵€鏈夋湇鍔?- 鏀硅繘閿欒鏃ュ織璁板綍
This commit is contained in:
95
web_app.py
95
web_app.py
@@ -409,19 +409,45 @@ def user_register():
|
|||||||
core = get_app_core()
|
core = get_app_core()
|
||||||
user_data = core.get_user_data(user_id)
|
user_data = core.get_user_data(user_id)
|
||||||
|
|
||||||
# 更新用户基本信息
|
# 如果用户不存在,创建新用户
|
||||||
user_data.profile['name'] = name
|
if not user_data:
|
||||||
core.data_manager.save_user_data(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({
|
if user_data:
|
||||||
'success': True,
|
user_data.profile['name'] = name
|
||||||
'user_id': user_id,
|
core.data_manager.save_user_data(user_data)
|
||||||
'name': name
|
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:
|
except Exception as e:
|
||||||
logger.error(f"用户注册失败: {e}")
|
logger.error(f"用户注册失败: {e}", exc_info=True)
|
||||||
return jsonify({
|
return jsonify({
|
||||||
'success': False,
|
'success': False,
|
||||||
'message': f'注册失败: {str(e)}'
|
'message': f'注册失败: {str(e)}'
|
||||||
@@ -439,11 +465,19 @@ def submit_questionnaire():
|
|||||||
'message': '请先登录'
|
'message': '请先登录'
|
||||||
}), 401
|
}), 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()
|
data = request.get_json()
|
||||||
questionnaire_type = data.get('type', 'basic') # basic, taste, physiological
|
questionnaire_type = data.get('type', 'basic') # basic, taste, physiological
|
||||||
answers = data.get('answers', {})
|
answers = data.get('answers', {})
|
||||||
|
|
||||||
core = get_app_core()
|
|
||||||
input_data = {
|
input_data = {
|
||||||
'type': 'questionnaire',
|
'type': 'questionnaire',
|
||||||
'questionnaire_type': questionnaire_type,
|
'questionnaire_type': questionnaire_type,
|
||||||
@@ -464,7 +498,7 @@ def submit_questionnaire():
|
|||||||
}), 500
|
}), 500
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"提交问卷失败: {e}")
|
logger.error(f"提交问卷失败: {e}", exc_info=True)
|
||||||
return jsonify({
|
return jsonify({
|
||||||
'success': False,
|
'success': False,
|
||||||
'message': f'提交失败: {str(e)}'
|
'message': f'提交失败: {str(e)}'
|
||||||
@@ -482,6 +516,15 @@ def record_meal():
|
|||||||
'message': '请先登录'
|
'message': '请先登录'
|
||||||
}), 401
|
}), 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()
|
data = request.get_json()
|
||||||
meal_data = {
|
meal_data = {
|
||||||
'date': data.get('date', datetime.now().strftime('%Y-%m-%d')),
|
'date': data.get('date', datetime.now().strftime('%Y-%m-%d')),
|
||||||
@@ -493,7 +536,6 @@ def record_meal():
|
|||||||
'notes': data.get('notes', '')
|
'notes': data.get('notes', '')
|
||||||
}
|
}
|
||||||
|
|
||||||
core = get_app_core()
|
|
||||||
input_data = {
|
input_data = {
|
||||||
'type': 'meal_record',
|
'type': 'meal_record',
|
||||||
**meal_data
|
**meal_data
|
||||||
@@ -513,7 +555,7 @@ def record_meal():
|
|||||||
}), 500
|
}), 500
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"记录餐食失败: {e}")
|
logger.error(f"记录餐食失败: {e}", exc_info=True)
|
||||||
return jsonify({
|
return jsonify({
|
||||||
'success': False,
|
'success': False,
|
||||||
'message': f'记录失败: {str(e)}'
|
'message': f'记录失败: {str(e)}'
|
||||||
@@ -531,12 +573,21 @@ def get_recommendations():
|
|||||||
'message': '请先登录'
|
'message': '请先登录'
|
||||||
}), 401
|
}), 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()
|
data = request.get_json()
|
||||||
meal_type = data.get('meal_type', 'lunch')
|
meal_type = data.get('meal_type', 'lunch')
|
||||||
preferences = data.get('preferences', {})
|
preferences = data.get('preferences', {})
|
||||||
context = data.get('context', {})
|
context = data.get('context', {})
|
||||||
|
|
||||||
core = get_app_core()
|
|
||||||
input_data = {
|
input_data = {
|
||||||
'type': 'meal_recommendation',
|
'type': 'meal_recommendation',
|
||||||
'meal_type': meal_type,
|
'meal_type': meal_type,
|
||||||
@@ -559,7 +610,7 @@ def get_recommendations():
|
|||||||
}), 500
|
}), 500
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"获取推荐失败: {e}")
|
logger.error(f"获取推荐失败: {e}", exc_info=True)
|
||||||
return jsonify({
|
return jsonify({
|
||||||
'success': False,
|
'success': False,
|
||||||
'message': f'获取失败: {str(e)}',
|
'message': f'获取失败: {str(e)}',
|
||||||
@@ -578,10 +629,18 @@ def analyze_nutrition():
|
|||||||
'message': '请先登录'
|
'message': '请先登录'
|
||||||
}), 401
|
}), 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()
|
data = request.get_json()
|
||||||
meal_data = data.get('meal_data', {})
|
meal_data = data.get('meal_data', {})
|
||||||
|
|
||||||
core = get_app_core()
|
|
||||||
input_data = {
|
input_data = {
|
||||||
'type': 'nutrition_analysis',
|
'type': 'nutrition_analysis',
|
||||||
'meal_data': meal_data
|
'meal_data': meal_data
|
||||||
@@ -601,7 +660,7 @@ def analyze_nutrition():
|
|||||||
}), 500
|
}), 500
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"营养分析失败: {e}")
|
logger.error(f"营养分析失败: {e}", exc_info=True)
|
||||||
return jsonify({
|
return jsonify({
|
||||||
'success': False,
|
'success': False,
|
||||||
'message': f'分析失败: {str(e)}'
|
'message': f'分析失败: {str(e)}'
|
||||||
|
|||||||
Reference in New Issue
Block a user