5, 'window_seconds' => 60], ['max' => 20, 'window_seconds' => 3600], ]); define('RATE_LIMIT_AUTH_REGISTER', [ ['max' => 3, 'window_seconds' => 600], ]); define('RATE_LIMIT_AI', [ ['max' => 10, 'window_seconds' => 60], ['max' => 100, 'window_seconds' => 3600], ]); // ═══════════════════════════════════════════════════════════════════════════ // AI (ANTHROPIC) // ═══════════════════════════════════════════════════════════════════════════ define('ANTHROPIC_API_KEY', Env::get('ANTHROPIC_API_KEY', '')); define('ANTHROPIC_MODEL', Env::get('ANTHROPIC_MODEL', 'claude-sonnet-4-5-20250929')); define('ANTHROPIC_MAX_TOKENS', Env::int('ANTHROPIC_MAX_TOKENS', 4096)); // ═══════════════════════════════════════════════════════════════════════════ // FEEDBACK & SEGNALAZIONI // ═══════════════════════════════════════════════════════════════════════════ define('FEEDBACK_RESOLVE_PASSWORD', Env::get('FEEDBACK_RESOLVE_PASSWORD', '')); define('FEEDBACK_WORKER_LOG', Env::get('FEEDBACK_WORKER_LOG', '/var/log/nis2/feedback-worker.log')); // ═══════════════════════════════════════════════════════════════════════════ // TIMEZONE // ═══════════════════════════════════════════════════════════════════════════ date_default_timezone_set('Europe/Rome');