import os from dataclasses import dataclass, field from dotenv import load_dotenv from typing import List from config.env_constant import EnvFilepath load_dotenv(EnvFilepath.ENVPATH) @dataclass class EnvPostgresConstants: CONSTRING: str = os.environ.get("ss__postgresql__url") @dataclass(frozen=True) class SecurityConstants: BCRYPT_MAX_BYTES: int = 72 JWT_SECRET_KEY: str = os.environ.get("ss__jwt__secret_key") JWT_ALGORITHM: str = os.environ.get("ss__jwt__algorithm") JWT_EXPIRE_MINUTES: int = int(os.environ.get("ss__jwt__access_token_expire_minutes", 60)) @dataclass(frozen=True) class AzureBlobConstants: BLOB_PREFIX: str = "dev" # DOCS: change accordingly ENDPOINT: str = os.environ.get("azureai__container__endpoint") CONTAINER_NAME: str = os.environ.get("azureai__container__name") SAS_KEY: str = os.environ.get("azureai__search__sas") BLOB_SAS_KEY: str = os.environ.get("azureai__blob__sas") CONTAINER_KEY: str = os.environ.get("azureai__container__key") MAX_FILE_SIZE_MB: int = int(os.getenv("azureai__max_file_size_mb", "5")) CHUNK_SIZE: int = 4 * 1024 * 1024 ACCOUNT_NAME: str = os.environ.get("azureai__container__account__name") @dataclass(frozen=True) class LangfuseConstants: SECRET_KEY: str = os.environ.get("ss__langfuse__secret_key") PUBLIC_KEY: str = os.environ.get("ss__langfuse__public_key") HOST: str = os.environ.get("langfuse__host") @dataclass class ProfileFieldTypes: NUMERIC: List[str] = field(default_factory=lambda: ["gpa_edu_1", "gpa_edu_2", "gpa_edu_3", "yoe"]) TEXT: List[str] = field(default_factory=lambda: ["univ_edu_1", "major_edu_1", "univ_edu_2", "major_edu_2", "univ_edu_3", "major_edu_3", "domicile", "hardskills", "softskills", "certifications", "business_domain"]) ProfileFieldTypes = ProfileFieldTypes()