from pydantic_settings import BaseSettings
from typing import List


class Settings(BaseSettings):
    PROJECT_NAME: str = "DataPointer"
    VERSION: str = "0.1.0"
    DESCRIPTION: str = "财产保险行业数据分级分类管理平台"

    DATABASE_URL: str = "postgresql+psycopg2://pdg:pdg_secret_2024@localhost:5432/prop_data_guard"
    REDIS_URL: str = "redis://localhost:6379/0"

    # Database password encryption key (Fernet-compatible base64, 32 bytes)
    # If empty, will be derived from SECRET_KEY for backward compatibility.
    # STRONGLY recommended to set this explicitly in production.
    DB_ENCRYPTION_KEY: str = ""

    SECRET_KEY: str = "prop-data-guard-super-secret-key-change-in-production"
    ALGORITHM: str = "HS256"
    ACCESS_TOKEN_EXPIRE_MINUTES: int = 30
    REFRESH_TOKEN_EXPIRE_DAYS: int = 7

    MINIO_ENDPOINT: str = "localhost:9000"
    MINIO_ACCESS_KEY: str = "pdgminio"
    MINIO_SECRET_KEY: str = "pdgminio_secret_2024"
    MINIO_SECURE: bool = False
    MINIO_BUCKET_NAME: str = "pdg-files"

    CORS_ORIGINS: List[str] = ["http://localhost:5173", "http://127.0.0.1:5173"]

    FIRST_SUPERUSER_USERNAME: str = "admin"
    FIRST_SUPERUSER_PASSWORD: str = "Zhidi@n2023"
    FIRST_SUPERUSER_EMAIL: str = "admin@datapo.com"

    class Config:
        env_file = ".env"
        case_sensitive = True


settings = Settings()
