# -*- coding: utf-8 -*- """ 启动TSP智能助手综合管理平台 """ import sys import os import logging import threading import asyncio from datetime import datetime # 添加项目根目录到Python路径 sys.path.append(os.path.dirname(os.path.abspath(__file__))) def setup_logging(): """设置日志""" logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler('logs/dashboard.log'), logging.StreamHandler() ] ) def start_websocket_server(): """启动WebSocket服务器""" try: from src.web.websocket_server import WebSocketServer server = WebSocketServer(host="localhost", port=8765) server.run() except Exception as e: print(f"WebSocket服务器启动失败: {e}") def main(): """主函数""" print("=" * 60) print("TSP智能助手 - 综合管理平台") print("=" * 60) print(f"启动时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") print() # 设置日志 setup_logging() logger = logging.getLogger(__name__) try: # 检查必要目录 os.makedirs('logs', exist_ok=True) os.makedirs('data', exist_ok=True) logger.info("正在启动TSP智能助手综合管理平台...") # 快速系统检查(不创建完整实例) try: from src.core.database import db_manager from src.core.llm_client import QwenClient # 快速测试数据库连接 db_ok = db_manager.test_connection() # 快速测试LLM连接 llm_client = QwenClient() llm_ok = llm_client.test_connection() logger.info(f"系统检查结果: 数据库={db_ok}, LLM={llm_ok}") if not (db_ok and llm_ok): logger.warning("系统检查发现问题,但继续启动...") except Exception as e: logger.error(f"系统检查失败: {e}") print(f"警告: 系统检查失败 - {e}") # 导入并启动Flask应用 from src.web.app import app print("系统功能:") print(" ✓ 智能对话系统") print(" ✓ 对话历史管理") print(" ✓ Token消耗监控") print(" ✓ AI调用成功率监控") print(" ✓ Agent管理") print(" ✓ 预警管理") print(" ✓ 知识库管理") print(" ✓ 工单管理") print(" ✓ 数据分析") print(" ✓ 系统设置") print(" ✓ Redis缓存支持") print(" ✓ 性能优化") print() print("访问地址:") print(" 主页: http://localhost:5000") print(" 预警管理: http://localhost:5000/alerts") print(" 实时对话: http://localhost:5000/chat") print(" WebSocket: ws://localhost:8765") print() print("按 Ctrl+C 停止服务") print("=" * 60) # 在单独线程中启动WebSocket服务器 websocket_thread = threading.Thread(target=start_websocket_server, daemon=True) websocket_thread.start() # 启动Flask应用 app.run( debug=False, host='0.0.0.0', port=5000, threaded=True ) except KeyboardInterrupt: print("\n正在停止服务...") logger.info("用户手动停止服务") except Exception as e: print(f"启动失败: {e}") logger.error(f"启动失败: {e}") sys.exit(1) if __name__ == "__main__": main()