# config/web_config.py """ Web服务配置文件 包含端口号、会话配置等相关设置 """ import os # Flask应用配置 class WebConfig: # 服务端口 PORT = int(os.environ.get('WEB_PORT', 3400)) # 服务主机 HOST = os.environ.get('WEB_HOST', '0.0.0.0') # 调试模式 DEBUG = os.environ.get('WEB_DEBUG', 'False').lower() == 'true' # 密钥用于会话和CSRF保护 SECRET_KEY = os.environ.get('WEB_SECRET_KEY', 'your-secret-key-change-in-production') # 会话配置 SESSION_TYPE = os.environ.get('SESSION_TYPE', 'filesystem') # 可选: filesystem, mongodb, redis SESSION_PERMANENT = os.environ.get('SESSION_PERMANENT', 'False').lower() == 'true' SESSION_USE_SIGNER = os.environ.get('SESSION_USE_SIGNER', 'True').lower() == 'true' SESSION_KEY_PREFIX = os.environ.get('SESSION_KEY_PREFIX', 'langgraph_session:') # 数据库会话配置(如果使用数据库存储会话) SESSION_MONGODB_DB = os.environ.get('SESSION_MONGODB_DB', 'langgraph_sessions') SESSION_MONGODB_COLLECT = os.environ.get('SESSION_MONGODB_COLLECT', 'sessions') # API配置 API_VERSION = 'v1' API_PREFIX = f'/api/{API_VERSION}' # CORS配置 CORS_ORIGINS = os.environ.get('CORS_ORIGINS', '*').split(',') CORS_METHODS = os.environ.get('CORS_METHODS', 'GET,POST,PUT,DELETE,OPTIONS').split(',') CORS_HEADERS = os.environ.get('CORS_HEADERS', 'Content-Type,Authorization').split(',') # 请求体大小限制 MAX_CONTENT_LENGTH = int(os.environ.get('MAX_CONTENT_LENGTH', 16 * 1024 * 1024)) # 默认16MB # 上传文件配置 UPLOAD_FOLDER = os.environ.get('UPLOAD_FOLDER', 'uploads') MAX_UPLOAD_SIZE = int(os.environ.get('MAX_UPLOAD_SIZE', 50 * 1024 * 1024)) # 默认50MB # 日志配置 LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO') LOG_FORMAT = os.environ.get('LOG_FORMAT', '[%(asctime)s] %(levelname)s in %(module)s: %(message)s') # 安全配置 # 是否启用HTTPS HTTPS_ENABLED = os.environ.get('HTTPS_ENABLED', 'False').lower() == 'true' # JWT配置(如果使用JWT认证) JWT_SECRET_KEY = os.environ.get('JWT_SECRET_KEY', 'jwt-secret-string') JWT_ACCESS_TOKEN_EXPIRES = int(os.environ.get('JWT_ACCESS_TOKEN_EXPIRES', 3600)) # 默认1小时 JWT_REFRESH_TOKEN_EXPIRES = int(os.environ.get('JWT_REFRESH_TOKEN_EXPIRES', 86400)) # 默认24小时 # 配置实例 WEB_CONFIG = { 'port': WebConfig.PORT, 'host': WebConfig.HOST, 'debug': WebConfig.DEBUG, 'secret_key': WebConfig.SECRET_KEY, 'session_type': WebConfig.SESSION_TYPE, 'session_permanent': WebConfig.SESSION_PERMANENT, 'session_use_signer': WebConfig.SESSION_USE_SIGNER, 'session_key_prefix': WebConfig.SESSION_KEY_PREFIX, 'session_mongodb_db': WebConfig.SESSION_MONGODB_DB, 'session_mongodb_collect': WebConfig.SESSION_MONGODB_COLLECT, 'api_version': WebConfig.API_VERSION, 'api_prefix': WebConfig.API_PREFIX, 'cors_origins': WebConfig.CORS_ORIGINS, 'cors_methods': WebConfig.CORS_METHODS, 'cors_headers': WebConfig.CORS_HEADERS, 'max_content_length': WebConfig.MAX_CONTENT_LENGTH, 'upload_folder': WebConfig.UPLOAD_FOLDER, 'max_upload_size': WebConfig.MAX_UPLOAD_SIZE, 'log_level': WebConfig.LOG_LEVEL, 'log_format': WebConfig.LOG_FORMAT, 'https_enabled': WebConfig.HTTPS_ENABLED, 'jwt_secret_key': WebConfig.JWT_SECRET_KEY, 'jwt_access_token_expires': WebConfig.JWT_ACCESS_TOKEN_EXPIRES, 'jwt_refresh_token_expires': WebConfig.JWT_REFRESH_TOKEN_EXPIRES }