""" 应用配置 — 所有敏感信息从环境变量读取,支持 .env 文件 """ import os # 加载 .env 文件(如果存在) _env_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '.env') if os.path.exists(_env_path): with open(_env_path) as f: for line in f: line = line.strip() if not line or line.startswith('#') or '=' not in line: continue key, _, value = line.partition('=') key, value = key.strip(), value.strip().strip('"').strip("'") if key and key not in os.environ: os.environ[key] = value class Config: # Flask 配置 SECRET_KEY = os.environ.get('SECRET_KEY', 'stock-app-secret-key-2026') # 数据库配置 DB_HOST = os.environ.get('DB_HOST', 'localhost') DB_PORT = int(os.environ.get('DB_PORT', 5432)) DB_NAME = os.environ.get('DB_NAME', 'stock_app') DB_USER = os.environ.get('DB_USER', 'postgres') DB_PASSWORD = os.environ.get('DB_PASSWORD', '') # 文件路径 BASE_DIR = os.path.dirname(os.path.abspath(__file__)) STOCK_DATA_CACHE_DIR = os.path.join(BASE_DIR, 'stock_data_cache') STOCK_NAME_CACHE_FILE = os.path.join(BASE_DIR, 'stock_names.json') TRADES_FILE = os.path.join(BASE_DIR, 'trades.json') WATCHLIST_FILE = os.path.join(BASE_DIR, 'watchlist.json') ALERTS_CACHE_FILE = os.path.join(BASE_DIR, 'alerts_cache.json') # 阿里云K线API ALICLOUD_APPCODE = os.environ.get('ALICLOUD_APPCODE', '') ALICLOUD_KLINE_URL = 'https://jmqqgphqcx.market.alicloudapi.com/finance/a-shares-kline' # 豆包AI API DOUBAO_API_KEY = os.environ.get('DOUBAO_API_KEY', '') # 麦蕊API MAIRUI_LICENCE = os.environ.get('MAIRUI_LICENCE', '') # 服务端口 PORT = int(os.environ.get('PORT', 3333)) # 确保缓存目录存在 @classmethod def init_app(cls): if not os.path.exists(cls.STOCK_DATA_CACHE_DIR): os.makedirs(cls.STOCK_DATA_CACHE_DIR)