main.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #!/usr/bin/env python
  2. # -*- coding: UTF-8 -*-
  3. '''
  4. @Project :fsatest
  5. @File :main.py
  6. @Author :zhanghui
  7. @Function :主要测试自动化部署
  8. @Date :2025/12/2 17:03
  9. '''
  10. from flask import Flask
  11. # 初始化 Flask 应用
  12. app = Flask(__name__)
  13. # 配置 CORS 中间件 - 允许跨域请求
  14. app.add_middleware(
  15. CORSMiddleware,
  16. allow_origins=[
  17. "http://localhost:5173", # Vue 开发服务器
  18. "http://127.0.0.1:5173", # Vue 开发服务器(另一个地址)
  19. "http://47.95.23.25:5173", # 局域网 Vue 地址
  20. "*", # 允许所有来源(生产环境建议限制具体域名)
  21. ],
  22. allow_credentials=True,
  23. allow_methods=["*"], # 允许所有 HTTP 方法 (GET, POST, PUT, DELETE 等)
  24. allow_headers=["*"], # 允许所有请求头
  25. )
  26. # 批量注册所有路由
  27. for router in all_routers:
  28. app.include_router(router)
  29. # 定义根路径的 GET 接口(访问 IP:端口 即可触发)
  30. @app.route('/', methods=['GET'])
  31. def test_env():
  32. # 直接返回响应内容
  33. return "进入测试环境v1.0.0", 200
  34. # 健康检查接口
  35. @app.get("/health", summary="服务健康检查")
  36. async def health_check():
  37. return {"status": "healthy", "service": "multi_domain_intent_recognition"}
  38. # ========== 缓存管理 API ==========
  39. @app.post("/api/v1/cache/clear")
  40. async def clear_all_caches():
  41. """
  42. 清除所有缓存(规则更新后调用)
  43. 功能:
  44. - 清除Layer1规则匹配缓存
  45. - 清除Layer4 LLM缓存
  46. - 清除上下文融合缓存
  47. 用途:
  48. - 开发/测试阶段:修改规则后调用此接口
  49. - 确保新规则立即生效
  50. Returns:
  51. {"status": "success", "message": "所有缓存已清除"}
  52. """
  53. try:
  54. logger = logging.getLogger(__name__)
  55. # 获取各个组件
  56. multi_layer_classifier = getattr(app.state, 'multi_layer_classifier', None)
  57. fuser = getattr(app.state, 'fuser', None)
  58. # 清除Layer1规则匹配缓存
  59. if multi_layer_classifier and hasattr(multi_layer_classifier, 'layer1'):
  60. if hasattr(multi_layer_classifier.layer1, 'matcher'):
  61. if hasattr(multi_layer_classifier.layer1.matcher, 'cache'):
  62. multi_layer_classifier.layer1.matcher.cache.clear()
  63. logger.info("[API] Layer1规则匹配缓存已清除")
  64. # 清除Layer4 LLM缓存
  65. if multi_layer_classifier and hasattr(multi_layer_classifier, 'layer4'):
  66. if hasattr(multi_layer_classifier.layer4, 'clear_cache'):
  67. multi_layer_classifier.layer4.clear_cache()
  68. logger.info("[API] Layer4 LLM缓存已清除")
  69. # 清除上下文融合缓存
  70. if fuser and hasattr(fuser, 'clear_cache'):
  71. fuser.clear_cache()
  72. logger.info("[API] 上下文融合缓存已清除")
  73. return {
  74. "status": "success",
  75. "code": 200,
  76. "message": "所有缓存已清除",
  77. "timestamp": time.time()
  78. }
  79. except Exception as e:
  80. logger.error(f"[API] 缓存清除失败: {str(e)}")
  81. return {
  82. "status": "error",
  83. "message": f"缓存清除失败: {str(e)}"
  84. }
  85. if __name__ == "__main__":
  86. # 启动服务:绑定所有网卡(0.0.0.0),端口 5000(可修改)
  87. app.run(host='0.0.0.0', port=5500, debug=False)