import { useTranslation } from 'react-i18next'; import { useProactiveSettings } from '@/api/aiProactive'; const categoryKeys = ['mail', 'tasks', 'contacts', 'companies', 'insights']; export function ProactiveAISettings() { const { t } = useTranslation(); const { settings, update } = useProactiveSettings(); if (!settings) { return (
{t('proactiveAI.loading')}
); } const toggleCategory = async (cat: string) => { const current = settings.suggestion_categories || []; const newCats = current.includes(cat) ? current.filter((c: string) => c !== cat) : [...current, cat]; await update({ suggestion_categories: newCats }); }; return (
{/* Enable/Disable */}

{t('proactiveAI.title')}

{t('proactiveAI.toggleDescription')}

{/* Categories */}

{t('proactiveAI.categoriesTitle')}

{t('proactiveAI.categoriesDescription')}

{categoryKeys.map((key) => { const checked = settings.suggestion_categories?.includes(key); return ( ); })}
{/* Confidence Threshold */}

{t('proactiveAI.confidenceThreshold')}

{Math.round((settings.confidence_threshold || 0.5) * 100)}%

{t('proactiveAI.confidenceDescription')}

update({ confidence_threshold: parseFloat(e.target.value) })} className="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer accent-blue-500" />
{t('proactiveAI.all')} {t('proactiveAI.veryConfident')}
{/* Rate Limit */}

{t('proactiveAI.rateLimitTitle')}

{settings.rate_limit_seconds || 10}s

{t('proactiveAI.rateLimitDescription')}

update({ rate_limit_seconds: parseInt(e.target.value) })} className="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer accent-blue-500" />
5s 60s
{/* Model Selection */}

{t('proactiveAI.modelTitle')}

{t('proactiveAI.modelDescription')}

{/* Heartbeat Configuration */}

{t('proactiveAI.heartbeatTitle')}

{t('proactiveAI.heartbeatDescription')}

{settings.heartbeat_enabled && ( <>
{t('proactiveAI.interval')} {settings.heartbeat_interval_seconds || 300}s
update({ heartbeat_interval_seconds: parseInt(e.target.value) })} className="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer accent-blue-500" />
1min 30min
update({ heartbeat_target_room: e.target.value })} className="w-full px-3 py-2 rounded-lg border border-gray-200 bg-white text-sm text-gray-700 focus:ring-2 focus:ring-blue-400 focus:border-blue-400 outline-none" placeholder={t('proactiveAI.defaultRoomName')} />

{t('proactiveAI.targetRoomDescription')}

)}
); }