import os
from dotenv import load_dotenv

basedir = os.path.abspath(os.path.dirname(__file__))
load_dotenv()

class Config:
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'your-secret-key'
    
    # SQLite settings - stores in a local file
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
        'sqlite:///' + os.path.join(basedir, 'app.db')
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    
    # Mail settings
    MAIL_SERVER = os.environ.get('MAIL_SERVER', 'smtp.gmail.com')
    MAIL_PORT = int(os.environ.get('MAIL_PORT', 587))
    MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS', True)
    MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
    MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
    MAIL_DEFAULT_SENDER = os.environ.get('MAIL_DEFAULT_SENDER')
    
    # Admin emails for notifications
    ADMIN_EMAILS = os.environ.get('ADMIN_EMAILS', '').split(',')
    
    # API Keys
    MISTRAL_API_KEY = os.environ.get('MISTRAL_API_KEY')
    OPENAI_API_KEY = os.environ.get('OPENAI_API_KEY')  # For Whisper transcription (optional but recommended)
    
    # AI Configuration
    USE_AI_TRANSCRIPTION = True  # Enable AI-based audio transcription and assessment
    
    # Audio Quality Settings (Enhanced for better evaluation accuracy)
    MIN_AUDIO_SIZE = 10000  # Minimum audio file size in bytes (10KB)
    MIN_AUDIO_DURATION = 1.0  # Minimum audio duration in seconds
    MAX_AUDIO_DURATION = 120.0  # Maximum audio duration in seconds (2 minutes)
    TRANSCRIPTION_CONFIDENCE_THRESHOLD = 0.70  # Minimum confidence for transcription (increased from 0.50)
    AUDIO_PREPROCESSING_ENABLED = True  # Enable audio enhancement (normalization, silence removal, compression)
    
    # FFmpeg — platform-aware paths
    _base = os.path.dirname(os.path.abspath(__file__))
    _is_win = os.name == 'nt'
    FFMPEG_PATH = os.environ.get('FFMPEG_PATH') or os.path.join(_base, 'ffmpeg', 'ffmpeg.exe' if _is_win else 'ffmpeg')
    FFPROBE_PATH = os.environ.get('FFPROBE_PATH') or os.path.join(_base, 'ffmpeg', 'ffprobe.exe' if _is_win else 'ffprobe')
    
    # wkhtmltopdf path - used for PDF generation
    WKHTMLTOPDF_PATH = os.environ.get('WKHTMLTOPDF_PATH', None)
