Files
offerpai_python_ai/app/config/settings.py
T
2026-04-14 18:37:47 +08:00

82 lines
2.2 KiB
Python

from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
# 环境
env: str = "dev"
# 项目基础信息
project_name: str = "FastAPI App"
version: str = "0.1.0"
server_port: int = 8000
# CORS
cors_origins: list[str] = ["*"]
cors_allow_methods: list[str] = ["*"]
cors_allow_headers: list[str] = ["*"]
# 数据库 (MySQL)
db_host: str = "192.168.31.105"
db_port: int = 3306
db_user: str = "root"
db_password: str = "123456"
db_name: str = "offerpie"
db_pool_size: int = 10
db_max_overflow: int = 20
db_pool_recycle: int = 3600
# Redis
redis_host: str = "192.168.31.105"
redis_port: int = 6379
redis_password: str = "123456"
redis_db: int = 0
redis_pool_size: int = 10
# LLM 供应商连接配置
# 火山引擎
volcengine_api_key: str = "fd065993-bee2-4f31-8bf2-56d5d3012c02"
volcengine_base_url: str = "https://ark.cn-beijing.volces.com/api/v3"
# 心缘
cardiacBrder_api_key: str = "sk-8NxoLe7ZTJveGSmtPENBm4NwN9ai4YLGw8y6fqueZrPTo4Uu"
cardiacBrder_base_url: str = "https://api-i.xykjy.com/v1"
# jiekou
jiekou_api_key: str = "sk_4BXi4_yvwx-NW4_zuVt2LufrrlGyhs2q9qMN5Vq_j7Q"
jiekou_base_url: str = "https://api.jiekou.ai/openai"
# JWT
jwt_secret: str = "Aa123123"
token_expire_seconds: int = 5184000
# 鉴权白名单路径
auth_whitelist: list[str] = ["/health/**", "/docs/**", "/redoc/**", "/openapi.json"]
# 日志
logging_level: str = "DEBUG"
log_file_name: str = "app.log"
@property
def database_url(self) -> str:
return (
f"mysql+asyncmy://{self.db_user}:{self.db_password}"
f"@{self.db_host}:{self.db_port}/{self.db_name}"
)
@property
def redis_url(self) -> str:
if self.redis_password:
return (
f"redis://:{self.redis_password}"
f"@{self.redis_host}:{self.redis_port}/{self.redis_db}"
)
return f"redis://{self.redis_host}:{self.redis_port}/{self.redis_db}"
model_config = SettingsConfigDict(
env_file=".env",
env_file_encoding="utf-8",
case_sensitive=False,
extra="ignore",
)