修复推荐系统api
Change-Id: I3d35c2a6dd923c70d0eefdbe81916ec863c77df2
diff --git a/Merge/back_rhj/app/routes.py b/Merge/back_rhj/app/routes.py
index f123a84..6f159ca 100644
--- a/Merge/back_rhj/app/routes.py
+++ b/Merge/back_rhj/app/routes.py
@@ -1,6 +1,7 @@
from flask import Blueprint, request, jsonify
from .functions.FAuth import FAuth
-from .services.recommendation_service import RecommendationService
+from app.services.recommendation_service import RecommendationService
+from app.utils.graph_build import build_user_post_graph
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from config import Config
@@ -17,7 +18,10 @@
@wraps(f)
def decorated(*args, **kwargs):
token = request.headers.get('Authorization')
+ print(f"收到的Authorization头: {token}")
+
if not token:
+ print("缺少Authorization头")
return jsonify({'success': False, 'message': '缺少访问令牌'}), 401
session = None
@@ -25,22 +29,35 @@
# 移除Bearer前缀
if token.startswith('Bearer '):
token = token[7:]
+ print(f"提取的token: {token[:20]}...")
engine = create_engine(Config.SQLURL)
SessionLocal = sessionmaker(bind=engine)
session = SessionLocal()
f_auth = FAuth(session)
+ # 验证token
+ token_data = f_auth.verify_token(token)
+ print(f"Token验证结果: {token_data}")
+
+ if not token_data:
+ print("Token验证失败 - token无效")
+ return jsonify({'success': False, 'message': '无效的访问令牌'}), 401
+
user = f_auth.get_user_by_token(token)
if not user:
+ print("根据token获取用户失败")
return jsonify({'success': False, 'message': '无效的访问令牌'}), 401
+ print(f"Token验证成功,用户: {user.username}, ID: {user.id}")
+
# 将用户信息传递给路由函数
return f(user, *args, **kwargs)
except Exception as e:
+ print(f"Token验证异常: {str(e)}")
if session:
session.rollback()
- return jsonify({'success': False, 'message': '令牌验证失败'}), 401
+ return jsonify({'success': False, 'message': f'令牌验证失败: {str(e)}'}), 401
finally:
if session:
session.close()
@@ -368,12 +385,12 @@
try:
data = request.get_json() or {}
user_id = data.get('user_id') or current_user.id
- topk = data.get('topk', 10) # 默认推荐10个
- print(f"为用户 {user_id} 获取推荐,数量: {topk}")
+ print(f"为用户 {user_id} 获取个性化推荐")
# 调用推荐系统
- recommendations = recommendation_service.get_recommendations(user_id, topk)
+ user2idx, post2idx = build_user_post_graph(return_mapping=True)
+ recommendations = recommendation_service.get_recommendations(float(user_id), topk=10)
return jsonify({
'success': True,