"""中台配置。优先读环境变量,便于以后切换部署环境。 可在 backend/.env 写入密钥(大模型 key、邮箱、推送 token),无需改代码。 """ import os try: from dotenv import load_dotenv load_dotenv(os.path.join(os.path.dirname(os.path.abspath(__file__)), ".env")) except Exception: pass PG_USER = os.getenv("PG_USER", "postgres") PG_PASSWORD = os.getenv("PG_PASSWORD", "13142324") PG_HOST = os.getenv("PG_HOST", "localhost") PG_PORT = os.getenv("PG_PORT", "5432") PG_DB = os.getenv("PG_DB", "stock_cs") DB_URL = f"postgresql+psycopg2://{PG_USER}:{PG_PASSWORD}@{PG_HOST}:{PG_PORT}/{PG_DB}" DB_URL_DEFAULT = f"postgresql+psycopg2://{PG_USER}:{PG_PASSWORD}@{PG_HOST}:{PG_PORT}/postgres" # 默认入库股票池(沪深龙头 + 自选)。可在「数据中台」页或环境变量扩展。 DEFAULT_UNIVERSE = [ "600519", "300750", "002594", "688981", "300059", "601012", "600036", "601318", "000858", "002415", "600276", "002230", "601899", "600030", "000333", "002475", "300760", "601166", "688111", "600887", ] # 收盘后定时任务时间(24h制,本地时区) INGEST_HOUR = int(os.getenv("INGEST_HOUR", "15")) INGEST_MINUTE = int(os.getenv("INGEST_MINUTE", "35")) # ---- 大模型(OpenAI 兼容,DeepSeek/通义/Kimi 等均可)---- # 配置环境变量 LLM_API_KEY 后即启用真实大模型,否则走内置规则点评。 LLM_API_KEY = os.getenv("LLM_API_KEY", "") LLM_BASE_URL = os.getenv("LLM_BASE_URL", "https://api.deepseek.com/v1") LLM_MODEL = os.getenv("LLM_MODEL", "deepseek-chat") LLM_TIMEOUT = int(os.getenv("LLM_TIMEOUT", "40")) # ---- 推送通知 ---- # 邮件(SMTP) SMTP_HOST = os.getenv("SMTP_HOST", "") SMTP_PORT = int(os.getenv("SMTP_PORT", "465")) SMTP_USER = os.getenv("SMTP_USER", "") SMTP_PASSWORD = os.getenv("SMTP_PASSWORD", "") # 邮箱授权码 SMTP_TO = os.getenv("SMTP_TO", "") # 收件人,多个用逗号 # Server酱 Turbo(微信推送,最简单) SERVERCHAN_KEY = os.getenv("SERVERCHAN_KEY", "") # 企业微信群机器人 webhook WECOM_WEBHOOK = os.getenv("WECOM_WEBHOOK", "") # PushPlus(微信推送) PUSHPLUS_TOKEN = os.getenv("PUSHPLUS_TOKEN", "") # ---- Redis 缓存 ---- REDIS_HOST = os.getenv("REDIS_HOST", "localhost") REDIS_PORT = int(os.getenv("REDIS_PORT", "6379")) REDIS_DB = int(os.getenv("REDIS_DB", "0")) REDIS_PASSWORD = os.getenv("REDIS_PASSWORD", "") # ---- 鉴权配置 ---- SECRET_KEY = os.getenv("SECRET_KEY", "your-secret-key-change-in-production") ALGORITHM = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES = int(os.getenv("ACCESS_TOKEN_EXPIRE_MINUTES", "10080")) # 7天 # API Key 模式(可选,用于外部调用) API_KEYS = os.getenv("API_KEYS", "").split(",") if os.getenv("API_KEYS") else [] # 默认管理员账号(首次启动时创建) DEFAULT_ADMIN_USERNAME = os.getenv("DEFAULT_ADMIN_USERNAME", "admin") DEFAULT_ADMIN_PASSWORD = os.getenv("DEFAULT_ADMIN_PASSWORD", "admin123")