"use client" import type React from "react" import { useState } from "react" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Checkbox } from "@/components/ui/checkbox" import { Card } from "@/components/ui/card" import { BarChart3, Users, Activity, Brain, Search } from "lucide-react" interface BasicSettingsProps { formData: { taskName: string analysisTypes: string[] } updateFormData: ( data: Partial<{ taskName: string analysisTypes: string[] }>, ) => void onNext: () => void } interface AnalysisType { id: string name: string description: string icon: React.ReactNode } export function BasicSettings({ formData, updateFormData, onNext }: BasicSettingsProps) { const [errors, setErrors] = useState<{ taskName?: string; analysisTypes?: string }>({}) const analysisTypes: AnalysisType[] = [ { id: "comprehensive", name: "综合分析", description: "全面分析用户画像、行为习惯和互动模式", icon: , }, { id: "friend-info", name: "好友信息分析", description: "分析好友基本信息、地域分布和标签特征", icon: , }, { id: "user-behavior", name: "用户行为分析", description: "分析用户互动频率、活跃时间和内容偏好", icon: , }, { id: "content-preference", name: "内容偏好分析", description: "分析用户对不同类型内容的反应和互动情况", icon: , }, { id: "keyword-analysis", name: "关键词分析", description: "分析用户聊天和互动中的高频关键词和话题", icon: , }, ] const handleAnalysisTypeChange = (typeId: string, checked: boolean) => { if (checked) { updateFormData({ analysisTypes: [...formData.analysisTypes, typeId], }) } else { updateFormData({ analysisTypes: formData.analysisTypes.filter((id) => id !== typeId), }) } } const validateForm = () => { const newErrors: { taskName?: string; analysisTypes?: string } = {} if (!formData.taskName.trim()) { newErrors.taskName = "请输入任务名称" } if (formData.analysisTypes.length === 0) { newErrors.analysisTypes = "请至少选择一种分析类型" } setErrors(newErrors) return Object.keys(newErrors).length === 0 } const handleNext = () => { if (validateForm()) { onNext() } } return (

创建分析计划

设置分析任务名称并选择需要的分析类型

updateFormData({ taskName: e.target.value })} className="mt-1" /> {errors.taskName &&

{errors.taskName}

}
{errors.analysisTypes &&

{errors.analysisTypes}

}
{analysisTypes.map((type) => (
handleAnalysisTypeChange(type.id, checked as boolean)} className="mt-1" />

{type.description}

))}
) }