filter_var(env('assistant_service.DAILY_CONTACT_ENABLED', false), FILTER_VALIDATE_BOOLEAN), 'daily_contact_actor_id' => max(0, (int) env('assistant_service.DAILY_CONTACT_ACTOR_ID', 0)), 'daily_contact_interval_seconds' => max(5, min(3600, (int) env('assistant_service.DAILY_CONTACT_INTERVAL_SECONDS', 60))), 'daily_contact_batch_size' => max(1, min(1000, (int) env('assistant_service.DAILY_CONTACT_BATCH_SIZE', 500))), // 行为预警独立于 AI 和今日联系。关闭时只停止扫描,已有预警仍可复核。 'alert_enabled' => filter_var(env('assistant_service.ALERT_ENABLED', false), FILTER_VALIDATE_BOOLEAN), 'alert_interval_seconds' => max(5, min(3600, (int) env('assistant_service.ALERT_INTERVAL_SECONDS', 60))), 'alert_batch_size' => max(1, min(500, (int) env('assistant_service.ALERT_BATCH_SIZE', 200))), // 企微客服归档(im.zhenyangtang.cn)。只拉员工发出且已绑定患者的文字。 'wecom_archive_sqlite' => (string) env('assistant_service.WECOM_ARCHIVE_SQLITE', ''), 'wecom_archive_base_url' => rtrim((string) env('assistant_service.WECOM_ARCHIVE_BASE_URL', ''), '/'), 'wecom_archive_token' => (string) env('assistant_service.WECOM_ARCHIVE_TOKEN', ''), 'wecom_wording_enabled' => filter_var(env('assistant_service.WECOM_WORDING_ENABLED', false), FILTER_VALIDATE_BOOLEAN), 'wecom_wording_interval_seconds' => max(60, min(86400, (int) env('assistant_service.WECOM_WORDING_INTERVAL_SECONDS', 600))), 'wecom_wording_batch_size' => max(1, min(20, (int) env('assistant_service.WECOM_WORDING_BATCH_SIZE', 6))), // 仅显式绑定的现存主管可调度;默认关闭,不自动挑选管理员账号。 'auto_enabled' => filter_var(env('assistant_service.AUTO_ENABLED', false), FILTER_VALIDATE_BOOLEAN), 'auto_actor_id' => max(0, (int) env('assistant_service.AUTO_ACTOR_ID', 0)), 'auto_interval_seconds' => max(5, min(3600, (int) env('assistant_service.AUTO_INTERVAL_SECONDS', 60))), 'auto_quiet_seconds' => max(0, min(86400, (int) env('assistant_service.AUTO_QUIET_SECONDS', 300))), 'auto_batch_size' => max(1, min(10, (int) env('assistant_service.AUTO_BATCH_SIZE', 10))), 'enabled' => filter_var(env('assistant_service.ENABLED', false), FILTER_VALIDATE_BOOLEAN), 'profile' => (string) env('assistant_service.PROFILE', 'qwen'), 'timeout' => max(10, min(240, (int) env('assistant_service.TIMEOUT', 120))), // 大于模型请求预算;过期任务进入待核对,不自动重复调用上游。 'lease_seconds' => max(300, (int) env('assistant_service.LEASE_SECONDS', 300)), 'max_source_rows' => max(1, min(1000, (int) env('assistant_service.MAX_SOURCE_ROWS', 200))), 'max_source_chars' => max(1000, min(100000, (int) env('assistant_service.MAX_SOURCE_CHARS', 30000))), 'max_manual_chars' => 10000, 'max_question_chars' => 1000, 'max_knowledge_rows' => max(1, min(100, (int) env('assistant_service.MAX_KNOWLEDGE_ROWS', 40))), 'daily_job_limit' => max(1, min(1000, (int) env('assistant_service.DAILY_JOB_LIMIT', 100))), ];