"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}
))}
)
}