from pydantic_settings import BaseSettings

class Settings(BaseSettings):
    PROJECT_NAME: str = "Syllabuild Admin API"
    API_V1_STR: str = "/api"
    SECRET_KEY: str
    ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 7  # 1 week
    ALGORITHM: str = "HS256"
    SQLALCHEMY_DATABASE_URI: str
    DB_USER: str
    DB_PASSWORD: str
    DB_NAME: str
    SQLALCHEMY_TRACK_MODIFICATIONS: bool = False
    OPENAI_API_KEY: str
    SERPER_API_KEY: str
    APP_URL: str = "http://localhost:8000"
    FRONT_APP_URL: str = "http://localhost:3000"
    JWT_EXPIRATION_TIME: int = 3600  # 1 hour
    JWT_REFRESH_EXPIRATION_TIME: int = 604800  # 7 days
    JWT_AUDIENCE: str = "syllabuild_admin"
    JWT_ISSUER: str = "syllabuild_admin"
    JWT_TOKEN_TYPE: str = "Bearer"
    JWT_REFRESH_TOKEN_TYPE: str = "Refresh"
    JWT_TOKEN_PREFIX: str = "Bearer"
    JWT_REFRESH_TOKEN_PREFIX: str = "Refresh"
    AWS_REGION: str = "ap-southeast-1"
    SES_AWS_REGION: str = "us-east-1"
    SES_AWS_HOST: str = "email-smtp.us-east-1.amazonaws.com"
    SES_ACCESS_KEY_ID: str
    SES_SECRET_ACCESS_KEY: str
    SES_SENDER_EMAIL: str = "support@contactous.com"
    COURSE_PREFIX: str = "syllabuild"
    DEEPSEEK_API_KEY: str
    DEEPSEEK_API_URL: str = "https://api.deepseek.com/v1"
    DEEPSEEK_MODEL: str = "deepseek-reasoner"
    LLM_ENGINE: str = "openai"
    TOP_P: float = 0.9
    MAX_TOKENS: int = 2000
    TEMPRETURE: float = 1.0
    OUTPUT_FOLDER: str = "./result"
    WORKING_DIR: str = "imscc_temp"
    CONTENT_DIR: str = "wiki_content"
    OPENAI_MODEL: str = "gpt-4o-mini"
    OPENAI_MINI_MODEL: str = "gpt-4o-mini"
    PROMPTS_DIR: str = "prompts"
    CELERY_BROKER_URL: str = "redis://localhost:6379/0"
    CELERY_BACKEND: str = "redis://localhost:6379/0"
    CELERY_ENABLED: bool = True

    class Config:
        env_file = ".env"

settings = Settings()