main.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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://47.22.23.25:5173" # 局域网 Vue 地址
  18. ],
  19. allow_credentials=True,
  20. allow_methods=["*"], # 允许所有 HTTP 方法 (GET, POST, PUT, DELETE 等)
  21. allow_headers=["*"], # 允许所有请求头
  22. )
  23. # 批量注册所有路由
  24. for router in all_routers:
  25. app.include_router(router)
  26. # 定义根路径的 GET 接口(访问 IP:端口 即可触发)
  27. @app.route('/', methods=['GET'])
  28. def test_env():
  29. # 直接返回响应内容
  30. return "进入测试环境v1.0.0", 200
  31. # 健康检查接口
  32. @app.get("/health", summary="服务健康检查")
  33. async def health_check():
  34. return {"status": "healthy", "service": "multi_domain_intent_recognition"}
  35. # ========== 缓存管理 API ==========
  36. @app.post("/api/v1/cache/clear")
  37. async def clear_all_caches():
  38. """
  39. 清除所有缓存(规则更新后调用)
  40. 功能:
  41. - 清除Layer1规则匹配缓存
  42. - 清除Layer4 LLM缓存
  43. - 清除上下文融合缓存
  44. 用途:
  45. - 开发/测试阶段:修改规则后调用此接口
  46. - 确保新规则立即生效
  47. Returns:
  48. {"status": "success", "message": "所有缓存已清除"}
  49. """
  50. try:
  51. logger = logging.getLogger(__name__)
  52. # 获取各个组件
  53. multi_layer_classifier = getattr(app.state, 'multi_layer_classifier', None)
  54. fuser = getattr(app.state, 'fuser', None)
  55. # 清除Layer1规则匹配缓存
  56. if multi_layer_classifier and hasattr(multi_layer_classifier, 'layer1'):
  57. if hasattr(multi_layer_classifier.layer1, 'matcher'):
  58. if hasattr(multi_layer_classifier.layer1.matcher, 'cache'):
  59. multi_layer_classifier.layer1.matcher.cache.clear()
  60. logger.info("[API] Layer1规则匹配缓存已清除")
  61. # 清除Layer4 LLM缓存
  62. if multi_layer_classifier and hasattr(multi_layer_classifier, 'layer4'):
  63. if hasattr(multi_layer_classifier.layer4, 'clear_cache'):
  64. multi_layer_classifier.layer4.clear_cache()
  65. logger.info("[API] Layer4 LLM缓存已清除")
  66. # 清除上下文融合缓存
  67. if fuser and hasattr(fuser, 'clear_cache'):
  68. fuser.clear_cache()
  69. logger.info("[API] 上下文融合缓存已清除")
  70. return {
  71. "status": "success",
  72. "code": 200,
  73. "message": "所有缓存已清除",
  74. "timestamp": time.time()
  75. }
  76. except Exception as e:
  77. logger.error(f"[API] 缓存清除失败: {str(e)}")
  78. return {
  79. "status": "error",
  80. "message": f"缓存清除失败: {str(e)}"
  81. }
  82. if __name__ == "__main__":
  83. # 启动服务:绑定所有网卡(0.0.0.0),端口 5000(可修改)
  84. app.run(host='0.0.0.0', port=5500, debug=False)