身份令牌验证与推荐接口

Change-Id: I572c2e74b9336f2f472805d164969656278dfd8d
diff --git a/Merge/back_rhj/app/routes.py b/Merge/back_rhj/app/routes.py
index 23ff49b..f123a84 100644
--- a/Merge/back_rhj/app/routes.py
+++ b/Merge/back_rhj/app/routes.py
@@ -1,5 +1,6 @@
 from flask import Blueprint, request, jsonify
 from .functions.FAuth import FAuth
+from .services.recommendation_service import RecommendationService
 from sqlalchemy import create_engine
 from sqlalchemy.orm import sessionmaker
 from config import Config
@@ -8,6 +9,9 @@
 
 main = Blueprint('main', __name__)
 
+# 初始化推荐服务
+recommendation_service = RecommendationService()
+
 def token_required(f):
     """装饰器:需要令牌验证"""
     @wraps(f)
@@ -322,4 +326,69 @@
         return jsonify({
             'success': False, 
             'message': f'JWT令牌验证失败: {str(e)}'
-        }), 500
\ No newline at end of file
+        }), 500
+        
+@main.route('/verify_user', methods=['POST'])
+@token_required
+def verify_user(current_user):
+    """测试JWT令牌接口(需要登录)"""
+    try:
+        # 获取当前请求的token(从装饰器已验证的Authorization header)
+        auth_header = request.headers.get('Authorization')
+        current_token = auth_header[7:] if auth_header and auth_header.startswith('Bearer ') else None
+        
+        print(f"当前用户: {current_user.username}")
+        print(f"当前用户ID: {current_user.id}")
+        print(current_user.role)
+        print(f"Token验证成功: {current_token[:20]}..." if current_token else "No token")
+        
+        # 可选:检查请求体中是否有额外的token需要验证
+        data = request.get_json() or {}
+        additional_token = data.get('token')
+        
+        response_data = {
+            'success': True,
+            'userid': current_user.id,
+            'role': current_user.role,
+        }
+        
+        return jsonify(response_data), 200
+        
+    except Exception as e:
+        print(f"用户验证错误: {str(e)}")
+        return jsonify({
+            'success': False, 
+            'message': f'JWT令牌验证失败: {str(e)}'
+        }), 500
+
+@main.route('/recommend', methods=['POST'])
+@token_required
+def get_recommendations(current_user):
+    """获取个性化推荐接口"""
+    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}")
+        
+        # 调用推荐系统
+        recommendations = recommendation_service.get_recommendations(user_id, topk)
+        
+        return jsonify({
+            'success': True,
+            'data': {
+                'user_id': user_id,
+                'recommendations': recommendations,
+                'count': len(recommendations),
+                'type': 'personalized'
+            },
+            'message': '个性化推荐获取成功'
+        }), 200
+        
+    except Exception as e:
+        print(f"推荐系统错误: {str(e)}")
+        return jsonify({
+            'success': False, 
+            'message': f'推荐获取失败: {str(e)}'
+        }), 500