| """全局配置模块,支持从环境变量和.env文件读取配置""" |
|
|
| from pathlib import Path |
| from typing import Optional |
|
|
| from dotenv import load_dotenv |
| from pydantic_settings import BaseSettings, SettingsConfigDict |
|
|
| |
| |
| env_path = Path(__file__).parent.parent.parent / ".env" |
| load_dotenv(dotenv_path=env_path) |
|
|
|
|
| class Settings(BaseSettings): |
| """应用配置类""" |
|
|
| |
| DB_DIR: Optional[str] = None |
| DB_NAME: str = "annotations.db" |
|
|
| |
| HOST: str = "0.0.0.0" |
| PORT: int = 8000 |
| RELOAD: bool = False |
|
|
| |
| ENVIRONMENT: str = "development" |
| PRODUCTION: bool = ( |
| False |
| ) |
|
|
| |
| TOKEN_EXPIRE_DAYS: int = 7 |
| SECRET_KEY: str = "qaloop-demo-jwt-secret-key-32bytes" |
| ALGORITHM: str = "HS256" |
|
|
| |
| SQLALCHEMY_ECHO: bool = False |
|
|
| |
| LLM_API_KEY: Optional[str] = None |
| LLM_BASE_URL: str = "http://43.159.131.233:3001/v1" |
| LLM_MODEL_NAME: str = "gpt-5.1" |
|
|
| model_config = SettingsConfigDict( |
| env_file=".env", |
| env_file_encoding="utf-8", |
| case_sensitive=True, |
| extra="ignore", |
| ) |
|
|
| @property |
| def db_path(self) -> Path: |
| """获取数据库文件路径""" |
| |
| if self.DB_DIR: |
| db_dir = Path(self.DB_DIR) |
| else: |
| |
| db_dir = Path(__file__).parent.parent.parent / "data" |
|
|
| db_dir.mkdir(parents=True, exist_ok=True) |
| return db_dir / self.DB_NAME |
|
|
| @property |
| def database_url(self) -> str: |
| """获取数据库URL(SQLite)""" |
| return f"sqlite:///{self.db_path}" |
|
|
| @property |
| def is_production(self) -> bool: |
| """判断是否为生产环境""" |
| return self.ENVIRONMENT == "production" or self.PRODUCTION is True |
|
|
|
|
| |
| settings = Settings() |
|
|