|
|
""" |
|
|
Development environment configuration for BackgroundFX Pro. |
|
|
|
|
|
Optimized for local development with debugging and hot-reload enabled. |
|
|
""" |
|
|
|
|
|
from dataclasses import dataclass, field |
|
|
from pathlib import Path |
|
|
from typing import List |
|
|
|
|
|
from ..settings import Settings |
|
|
|
|
|
|
|
|
@dataclass |
|
|
class DevelopmentSettings(Settings): |
|
|
""" |
|
|
Development-specific configuration with relaxed security and debug features. |
|
|
""" |
|
|
|
|
|
|
|
|
environment: str = "development" |
|
|
debug: bool = True |
|
|
|
|
|
|
|
|
host: str = "127.0.0.1" |
|
|
port: int = 8000 |
|
|
workers: int = 1 |
|
|
reload: bool = True |
|
|
|
|
|
|
|
|
secret_key: str = "dev-secret-key-not-for-production" |
|
|
cors_origins: List[str] = field(default_factory=lambda: ["*"]) |
|
|
|
|
|
|
|
|
api_docs_enabled: bool = True |
|
|
|
|
|
|
|
|
database_url: str = "postgresql://postgres:postgres@localhost:5432/backgroundfx_dev" |
|
|
database_echo: bool = True |
|
|
database_pool_size: int = 5 |
|
|
database_max_overflow: int = 10 |
|
|
|
|
|
|
|
|
mongodb_url: str = "mongodb://localhost:27017/backgroundfx_dev" |
|
|
|
|
|
|
|
|
redis_url: str = "redis://localhost:6379/0" |
|
|
redis_max_connections: int = 10 |
|
|
|
|
|
|
|
|
storage_backend: str = "local" |
|
|
local_storage_path: Path = field(default_factory=lambda: Path("./storage/dev")) |
|
|
|
|
|
|
|
|
max_image_size: int = 20 * 1024 * 1024 |
|
|
max_video_size: int = 100 * 1024 * 1024 |
|
|
max_batch_size: int = 10 |
|
|
processing_timeout: int = 120 |
|
|
enable_gpu: bool = False |
|
|
gpu_memory_fraction: float = 0.5 |
|
|
|
|
|
|
|
|
models_dir: Path = field(default_factory=lambda: Path("./models")) |
|
|
model_cache_dir: Path = field(default_factory=lambda: Path("./cache/models")) |
|
|
|
|
|
|
|
|
celery_broker_url: str = "redis://localhost:6379/1" |
|
|
celery_result_backend: str = "redis://localhost:6379/2" |
|
|
celery_worker_concurrency: int = 2 |
|
|
celery_task_time_limit: int = 300 |
|
|
|
|
|
|
|
|
jwt_secret_key: str = "dev-jwt-secret-key" |
|
|
jwt_expiration_delta: int = 86400 |
|
|
|
|
|
|
|
|
rate_limit_enabled: bool = False |
|
|
rate_limit_requests: int = 10000 |
|
|
rate_limit_window: int = 60 |
|
|
|
|
|
|
|
|
sentry_dsn: str = "" |
|
|
prometheus_enabled: bool = False |
|
|
|
|
|
|
|
|
log_level: str = "DEBUG" |
|
|
log_file: str = "./logs/dev.log" |
|
|
|
|
|
|
|
|
cache_ttl: int = 60 |
|
|
cache_max_entries: int = 100 |
|
|
|
|
|
|
|
|
cdn_enabled: bool = False |
|
|
cdn_base_url: str = "http://localhost:8000/static" |
|
|
|
|
|
|
|
|
smtp_host: str = "localhost" |
|
|
smtp_port: int = 1025 |
|
|
smtp_use_tls: bool = False |
|
|
email_from: str = "dev@localhost" |
|
|
|
|
|
|
|
|
webhook_timeout: int = 10 |
|
|
webhook_max_retries: int = 1 |
|
|
webhook_retry_delay: int = 1 |
|
|
|
|
|
|
|
|
enable_video_processing: bool = True |
|
|
enable_batch_processing: bool = True |
|
|
enable_ai_backgrounds: bool = True |
|
|
enable_webhooks: bool = True |
|
|
|
|
|
|
|
|
auto_create_test_data: bool = True |
|
|
mock_external_services: bool = True |
|
|
enable_profiling: bool = True |
|
|
enable_debug_toolbar: bool = True |
|
|
|
|
|
def __post_init__(self): |
|
|
"""Additional development-specific initialization.""" |
|
|
super().__post_init__() |
|
|
|
|
|
|
|
|
for dir_path in [ |
|
|
self.local_storage_path, |
|
|
self.models_dir, |
|
|
self.model_cache_dir, |
|
|
self.log_dir, |
|
|
self.temp_dir |
|
|
]: |
|
|
dir_path.mkdir(parents=True, exist_ok=True) |
|
|
|
|
|
|
|
|
test_data_dir = Path("./test_data") |
|
|
test_data_dir.mkdir(exist_ok=True) |