53 lines
No EOL
1.6 KiB
Python
53 lines
No EOL
1.6 KiB
Python
from pydantic_settings import BaseSettings
|
|
from typing import List, Optional
|
|
import os
|
|
|
|
class Settings(BaseSettings):
|
|
# Database
|
|
mongodb_url: str = "mongodb://localhost:27017"
|
|
database_name: str = "contract_analysis"
|
|
|
|
# Redis
|
|
redis_url: str = "redis://localhost:6379"
|
|
|
|
# Authentication
|
|
jwt_secret_key: str = "your-super-secret-jwt-key-change-this-in-production"
|
|
jwt_algorithm: str = "HS256"
|
|
jwt_expire_minutes: int = 180
|
|
|
|
# Azure AD / SSO Configuration
|
|
azure_client_id: Optional[str] = None
|
|
azure_tenant_id: Optional[str] = None
|
|
azure_redirect_uri: Optional[str] = None
|
|
azure_authority: Optional[str] = None
|
|
sso_enabled: bool = False
|
|
allow_local_admin: bool = True
|
|
|
|
# OpenAI
|
|
openai_api_key: str
|
|
llamaparse_api_key: str # Required for document processing
|
|
|
|
# Application
|
|
debug: bool = True
|
|
cors_origins: List[str] = ["http://localhost:3000", "http://localhost:3002", "https://ai-sandbox.oliver.solutions", "*"]
|
|
upload_dir: str = "./uploads"
|
|
indices_dir: str = "./indices"
|
|
|
|
# Document processing limits
|
|
max_document_chars: int = 1000000 # 1 million characters for contract summaries
|
|
max_summary_chars: int = 100000 # 100k characters for simple summaries
|
|
|
|
# Cache - DISABLED for data freshness and debugging
|
|
cache_enabled: bool = False
|
|
cache_ttl: int = 3600
|
|
|
|
class Config:
|
|
env_file = ".env"
|
|
case_sensitive = False
|
|
|
|
# Create settings instance
|
|
settings = Settings()
|
|
|
|
# Ensure directories exist
|
|
os.makedirs(settings.upload_dir, exist_ok=True)
|
|
os.makedirs(settings.indices_dir, exist_ok=True) |