"use client" import { useState } from "react" import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Switch } from "@/components/ui/switch" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Badge } from "@/components/ui/badge" import { Separator } from "@/components/ui/separator" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { Plus, Trash2, Clock, RefreshCw, Database, Server, FileText, Settings, HelpCircle } from "lucide-react" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" interface CollectionTask { id: string name: string source: string type: string schedule: string lastRun: string | null nextRun: string | null status: "active" | "paused" | "error" | "completed" recordsCollected: number } export function DataCollectionSettings() { const [activeTab, setActiveTab] = useState("tasks") const [isAddingTask, setIsAddingTask] = useState(false) const [selectedTaskId, setSelectedTaskId] = useState(null) // 模拟数据采集任务 const [collectionTasks, setCollectionTasks] = useState([ { id: "1", name: "用户基本信息采集", source: "CRM系统", type: "数据库", schedule: "每日 00:00", lastRun: "2023-07-20 00:00", nextRun: "2023-07-21 00:00", status: "active", recordsCollected: 125678, }, { id: "2", name: "用户行为数据采集", source: "行为分析平台", type: "API", schedule: "每小时", lastRun: "2023-07-20 15:00", nextRun: "2023-07-20 16:00", status: "active", recordsCollected: 458921, }, { id: "3", name: "社交媒体数据采集", source: "MCP SERVER", type: "AI工具", schedule: "每日 02:00", lastRun: "2023-07-20 02:00", nextRun: "2023-07-21 02:00", status: "active", recordsCollected: 87452, }, { id: "4", name: "历史交易数据导入", source: "交易系统", type: "文件", schedule: "手动", lastRun: "2023-07-15 10:30", nextRun: null, status: "completed", recordsCollected: 254789, }, { id: "5", name: "设备信息采集", source: "设备管理系统", type: "API", schedule: "每日 03:00", lastRun: "2023-07-20 03:00", nextRun: "2023-07-21 03:00", status: "error", recordsCollected: 12547, }, ]) // 模拟数据源 const dataSources = [ { id: "crm", name: "CRM系统", type: "数据库" }, { id: "behavior", name: "行为分析平台", type: "API" }, { id: "mcp", name: "MCP SERVER", type: "AI工具" }, { id: "transaction", name: "交易系统", type: "文件" }, { id: "device", name: "设备管理系统", type: "API" }, { id: "social", name: "社交媒体平台", type: "API" }, { id: "ecommerce", name: "电商平台", type: "API" }, ] // 模拟采集类型 const collectionTypes = [ { id: "full", name: "全量采集", description: "采集所有数据" }, { id: "incremental", name: "增量采集", description: "仅采集新增或变更的数据" }, { id: "scheduled", name: "定时采集", description: "按照设定的时间计划采集数据" }, { id: "event", name: "事件触发采集", description: "在特定事件发生时采集数据" }, { id: "manual", name: "手动采集", description: "手动触发数据采集" }, ] const getStatusBadge = (status: CollectionTask["status"]) => { switch (status) { case "active": return 运行中 case "paused": return 已暂停 case "error": return 错误 case "completed": return 已完成 } } const getSourceIcon = (type: string) => { switch (type) { case "数据库": return case "API": return case "文件": return case "AI工具": return default: return } } const addTask = (task: Omit) => { const newTask: CollectionTask = { id: `task-${Date.now()}`, ...task, lastRun: null, recordsCollected: 0, } setCollectionTasks([...collectionTasks, newTask]) setIsAddingTask(false) } const deleteTask = (id: string) => { setCollectionTasks(collectionTasks.filter((task) => task.id !== id)) } const toggleTaskStatus = (id: string) => { setCollectionTasks( collectionTasks.map((task) => { if (task.id === id) { return { ...task, status: task.status === "active" ? "paused" : "active", } } return task }), ) } const selectedTask = selectedTaskId ? collectionTasks.find((task) => task.id === selectedTaskId) : null return (
数据采集设置 配置和管理数据采集任务 采集任务 数据源 采集设置
共 {collectionTasks.length} 个任务

数据采集任务用于从各个数据源采集数据,并将其整合到用户数据资产中台。 您可以设置采集频率、采集方式和数据处理规则。

任务名称 数据源 采集频率 上次运行 下次运行 状态 已采集记录 操作 {collectionTasks.map((task) => ( {task.name}
{getSourceIcon(task.type)} {task.source}
{task.schedule} {task.lastRun || "从未运行"} {task.nextRun || "无计划"} {getStatusBadge(task.status)} {task.recordsCollected.toLocaleString()}
))}

可用数据源

{dataSources.map((source) => (
{getSourceIcon(source.type)}

{source.name}

{source.type}

))}
MCP SERVER 配置 配置MCP SERVER AI工具的采集参数

启用后,系统将自动使用AI处理采集的数据,提取关键信息并生成标签

全局采集设置

关闭后,所有数据采集任务将暂停执行

设置同时执行的数据采集任务数量,数值越大系统负载越高

启用后,系统将自动检测并去除重复数据

启用后,系统将验证采集数据的完整性和有效性

启用后,系统将在采集任务完成或出错时发送通知

{/* 添加采集任务对话框 */} 添加数据采集任务 配置新的数据采集任务
{/* 任务详情对话框 */} !open && setSelectedTaskId(null)}> 任务详情 查看和编辑采集任务详情 {selectedTask && (

{selectedTask.name}

{selectedTask.source}

{selectedTask.schedule}

{getStatusBadge(selectedTask.status)}

{selectedTask.lastRun || "从未运行"}

{selectedTask.nextRun || "无计划"}

{selectedTask.recordsCollected.toLocaleString()}

字段名 数据类型 是否采集 用户ID 字符串 手机号 字符串 身份证号 字符串 设备IMEI 字符串 注册时间 日期时间
)}
) }