from pydantic_settings import BaseSettings, SettingsConfigDict


class Settings(BaseSettings):
    model_config = SettingsConfigDict(env_file=".env", env_prefix="FLYWAY_", extra="ignore")

    # 连接串只来自环境变量或 .env（见 .env.example），不内置默认值
    database_url: str
    test_database_url: str = ""
    legacy_database_url: str = ""
    cookie_secure: bool = True
    session_hours: int = 48
    api_docs: bool = False
    backup_dir: str = ""
    # 生产：前端构建目录（app/frontend/dist），设置后由后端同源提供页面；开发时用 Vite 代理，留空
    frontend_dist: str = ""
    # 旧服务器时区（与迁移 --server-tz 相同，试演推断为 UTC）。包裹导入表格里不带时区的日期、待处理包裹导出的日期
    # 都按它解释，与旧系统 ToUniversalTime() / ToLocalTime() 的行为一致
    legacy_server_tz: str = "UTC"
    # 文档 10.8 默认配置
    load_out_transport_company: str = "Flyway"
    load_out_vehicle_registration: str = "DPB105"
    packing_from_location: str = "Flyway"
    packing_from_rmp: str = "S2142"
    # 盘点邮件（文档 7.3，旧 Web.config SystemEmail / SMTP）；口令只从环境变量读取
    smtp_host: str = ""
    smtp_port: int = 587
    smtp_user: str = ""
    smtp_password: str = ""
    smtp_starttls: bool = True
    system_email: str = ""
    system_email_sender: str = "Flyway"


settings = Settings()
