import { useEffect, useState } from 'react'; import type { RecommendationConfig } from '../../lib/types'; import { useRecommendationSettings, useUpdateRecommendationSettings } from '../../hooks/useAdmin'; import { SkeletonTable } from '../ui/Skeleton'; const DEFAULTS: RecommendationConfig = { high_confidence_threshold: 70, moderate_confidence_threshold: 50, confidence_diff_threshold: 20, signal_alignment_weight: 0.15, sr_strength_weight: 0.2, momentum_technical_divergence_threshold: 30, fundamental_technical_divergence_threshold: 40, }; function NumberInput({ label, value, min, max, step, onChange, }: { label: string; value: number; min: number; max: number; step?: number; onChange: (v: number) => void; }) { return ( ); } export function RecommendationSettings() { const { data, isLoading, isError, error } = useRecommendationSettings(); const update = useUpdateRecommendationSettings(); const [form, setForm] = useState(DEFAULTS); useEffect(() => { if (data) setForm(data); }, [data]); const setField = (field: keyof RecommendationConfig, value: number) => { setForm((prev) => ({ ...prev, [field]: value })); }; const onSave = () => { update.mutate(form as unknown as Record); }; const onReset = () => { setForm(DEFAULTS); update.mutate(DEFAULTS as unknown as Record); }; if (isLoading) return ; if (isError) return

{(error as Error)?.message || 'Failed to load recommendation settings'}

; return (

Recommendation Configuration

setField('high_confidence_threshold', v)} /> setField('moderate_confidence_threshold', v)} /> setField('confidence_diff_threshold', v)} /> setField('signal_alignment_weight', v)} /> setField('sr_strength_weight', v)} /> setField('momentum_technical_divergence_threshold', v)} /> setField('fundamental_technical_divergence_threshold', v)} />
); }