Files
ai-kefu-admin/app/engine/config.py
T
浅念 32b582aac8 feat: 服务层配置接线——email/push/rate_limit/AI凭据/行为开关/映射表/种子键
Task 9: 服务层对全局 settings 的业务引用清零,每个 DEFAULT_CONFIG 组
都有真实消费方。resolve_*_settings(email/push/ai)以空槽回退 env
(平台默认层);contact 行为开关/种子白名单/国名扩表/限流上限经
manager 的 runtime.config 接线。收口: lead_push session_factory 必填、
config.py 死代码清理、PromptProvider frozen、no_contact 视图直取、
AIService wall 参数定型 CompiledWall。403 测试全绿(389+14)。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-12 21:37:48 +08:00

54 lines
1.8 KiB
Python

"""进程级环境配置(.env)——Phase 1 的"平台默认"层。
Task 9 后业务参数(邮件/推送/AI 凭据)优先读租户 config(engine 服务的
resolve_*_settings 空槽回退到这里);本文件只剩部署级开关与平台默认密钥。
Task 9 死代码清理: DATABASE_URL/ensure_dirs/DATA_DIR 已无消费方(每租户
独立 SQLite 由 registry.make_tenant_engine 构造)——删除;ADMIN_PASSWORD
保留(Phase 2 超管初始密码引导用)。
"""
from pathlib import Path
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
APP_HOST: str = "0.0.0.0"
APP_PORT: int = 8000
APP_DEBUG: bool = False
AI_PROVIDER: str = "glm"
ZHIPU_API_KEY: str = ""
# 留空=用 SDK 默认地址(标准套餐 https://open.bigmodel.cn/api/paas/v4)
# coding 套餐填 https://open.bigmodel.cn/api/coding/paas/v4
ZHIPU_BASE_URL: str = ""
AI_MODEL: str = "glm-4-flash"
SMTP_HOST: str = ""
SMTP_PORT: int = 465
SMTP_USER: str = ""
SMTP_PASS: str = ""
NOTIFY_EMAIL: str = ""
# 询盘推送 UniService(docs/superpowers/specs/2026-09-28-lead-push-to-uniservice-design.md)
PUSH_ENABLED: bool = False
PUSH_API_URL: str = "https://uniservice.server.hnxinyouhe.com/open/v1/inquiry/push"
PUSH_API_KEY: str = ""
PUSH_EXTERNAL_KEY_PREFIX: str = "ai-kefu-jc"
PUSH_TIMEOUT_SECONDS: float = 10.0
PUSH_MAX_ATTEMPTS: int = 3
PUSH_RETRY_BACKOFF_BASE: float = 1.0 # 尝试间隔 1s/2s(3 次尝试、2 次间隔)
ADMIN_PASSWORD: str = "admin123"
model_config = {
"env_file": ".env",
"env_file_encoding": "utf-8",
}
# app/engine/config.py 比 jc 的 app/config.py 深一层,多退一级才到项目根
BASE_DIR = Path(__file__).resolve().parent.parent.parent
STATIC_DIR = BASE_DIR / "static"
settings = Settings()