/** * AI Marker Settings Modal * Модальное окно настроек для AI маркеров */ import { useEffect, useState } from "react" import { Button } from "@/components/ui/button" import { Label } from "@/components/ui/label" import { Slider } from "@/components/ui/slider" import { Switch } from "@/components/ui/switch" import { useModal } from "@/features/modals/services" import { type AIMarkerConfig } from "../../services/ai-marker-service" export function AIMarkerSettingsModal() { const { modalData, closeModal } = useModal() const initialConfig = modalData?.config as AIMarkerConfig | undefined const onSave = modalData?.onSave as ((config: AIMarkerConfig) => void) | undefined const [markerConfig, setMarkerConfig] = useState({ createSceneMarkers: true, createKeyMomentMarkers: true, createQualityMarkers: false, createEmotionalMarkers: true, minConfidence: 0.7, minSceneDuration: 2, minQualityScore: 80, groupNearbyMarkers: true, groupingThreshold: 2, }) // Инициализация значений при открытии модального окна useEffect(() => { if (initialConfig) { setMarkerConfig(initialConfig) } }, [initialConfig]) const updateConfig = (key: keyof AIMarkerConfig, value: any) => { setMarkerConfig((prev) => ({ ...prev, [key]: value })) } const handleSave = () => { onSave?.(markerConfig) closeModal() } return (
{/* Типы маркеров */}

Типы маркеров

updateConfig("createSceneMarkers", checked)} />
updateConfig("createKeyMomentMarkers", checked)} />
updateConfig("createQualityMarkers", checked)} />
updateConfig("createEmotionalMarkers", checked)} />
{/* Параметры фильтрации */}

Параметры фильтрации

{Math.round(markerConfig.minConfidence * 100)}%
updateConfig("minConfidence", value)} />
{markerConfig.minSceneDuration}с
updateConfig("minSceneDuration", value)} />
{markerConfig.createQualityMarkers && (
{markerConfig.minQualityScore}%
updateConfig("minQualityScore", value)} />
)}
{/* Группировка */}

Группировка маркеров

updateConfig("groupNearbyMarkers", checked)} />
{markerConfig.groupNearbyMarkers && (
{markerConfig.groupingThreshold}с
updateConfig("groupingThreshold", value)} />
)}
) }