#!/usr/bin/env python3 """ 模拟前端调用API 验证清理后的API对用户友好 """ import sys import os import json sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) def simulate_frontend_call(): """模拟前端API调用""" print("🌐 模拟前端API调用") print("=" * 60) try: from api.models import SearchRequest print("📱 前端发送搜索请求...") # 模拟前端发送的请求(简洁明了) frontend_request_data = { "query": "芭比娃娃", "size": 10, "from_": 0, "filters": { "categoryName": "玩具" } } print(f"📤 请求数据:") print(json.dumps(frontend_request_data, indent=2, ensure_ascii=False)) # 创建API请求对象 search_request = SearchRequest(**frontend_request_data) print(f"\n✅ API请求创建成功!") print(f" - 查询: '{search_request.query}'") print(f" - 大小: {search_request.size}") print(f" - 偏移: {search_request.from_}") print(f" - 过滤器: {search_request.filters}") # 验证请求不包含内部参数 internal_params = ['enable_translation', 'enable_embedding', 'enable_rerank'] print(f"\n🔒 内部参数检查:") for param in internal_params: if hasattr(search_request, param): print(f" ❌ {param}: 仍然暴露给用户") return False else: print(f" ✅ {param}: 对用户透明") print(f"\n🎉 前端调用验证成功!") print(f"✅ API接口简洁明了") print(f"✅ 用户只需提供基本搜索参数") print(f"✅ 复杂功能对用户完全透明") print(f"✅ 后端自动处理翻译、向量搜索等功能") # 模拟响应结构 print(f"\n📤 后端响应示例:") response_example = { "hits": [], "total": 0, "max_score": 0.0, "took_ms": 45, "aggregations": {}, "query_info": { "original_query": "芭比娃娃", "rewritten_query": "brand:芭比 OR name:芭比娃娃娃娃", "detected_language": "zh", "translations": { "en": "Barbie doll", "ru": "кукла Барби" } }, "performance_info": { "request_info": { "reqid": "abc123", "has_error": False, "warnings_count": 0 }, "performance": { "total_duration_ms": 45.0, "stage_timings_ms": { "query_parsing": 25.0, "boolean_parsing": 1.0, "query_building": 2.0, "elasticsearch_search": 10.0, "result_processing": 1.0 } } } } print(json.dumps(response_example, indent=2, ensure_ascii=False)) return True except Exception as e: print(f"❌ 模拟失败: {e}") import traceback traceback.print_exc() return False def show_api_comparison(): """显示清理前后的API对比""" print(f"\n📊 API接口对比:") print("=" * 60) print(f"❌ 清理前(暴露内部参数):") print(json.dumps({ "query": "芭比娃娃", "size": 10, "from_": 0, "enable_translation": True, # ❌ 用户不需要关心 "enable_embedding": True, # ❌ 用户不需要关心 "enable_rerank": True, # ❌ 用户不需要关心 "min_score": None }, indent=2, ensure_ascii=False)) print(f"\n✅ 清理后(用户友好):") print(json.dumps({ "query": "芭比娃娃", "size": 10, "from_": 0, "filters": {"categoryName": "玩具"}, "min_score": None }, indent=2, ensure_ascii=False)) if __name__ == "__main__": success = simulate_frontend_call() show_api_comparison() if success: print(f"\n🎊 API清理完全成功!") print(f"🌟 现在的API对用户非常友好!") else: print(f"\n💥 还有问题需要解决") sys.exit(0 if success else 1)