"use client" import { useState } from "react" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { Input } from "@/components/ui/input" import { MessageSquare, ArrowLeft, Sparkles, Code, Copy, Play, Clock, CheckCircle2, Table } from "lucide-react" import Link from "next/link" const exampleQueries = [ "查询最近7天新增的高价值用户", "统计各项目的用户流失率", "找出消费金额前100的用户", "分析用户活跃时段分布", ] const queryHistory = [ { id: 1, query: "查询最近30天流失风险大于80的用户数量", sql: "SELECT COUNT(*) FROM users WHERE churn_risk > 80 AND last_active >= DATE_SUB(NOW(), INTERVAL 30 DAY)", result: "共 2,340 位用户", time: "10分钟前", }, { id: 2, query: "统计各省份的用户分布", sql: "SELECT province, COUNT(*) as count FROM users GROUP BY province ORDER BY count DESC", result: "返回 31 条记录", time: "1小时前", }, { id: 3, query: "找出RFM评分S级的用户", sql: "SELECT * FROM users WHERE rfm_level = 'S' ORDER BY total_value DESC LIMIT 100", result: "返回 100 条记录", time: "2小时前", }, ] export default function NLQPage() { const [query, setQuery] = useState("") const [isProcessing, setIsProcessing] = useState(false) const [result, setResult] = useState<{ sql: string data: { columns: string[]; rows: string[][] } summary: string } | null>(null) const handleSubmit = () => { if (!query.trim()) return setIsProcessing(true) // 模拟AI处理 setTimeout(() => { setResult({ sql: `SELECT user_id, name, phone, rfm_score, total_value FROM users WHERE rfm_level = 'S' AND last_active >= DATE_SUB(NOW(), INTERVAL 7 DAY) ORDER BY total_value DESC LIMIT 10`, data: { columns: ["用户ID", "姓名", "手机号", "RFM评分", "总价值"], rows: [ ["U001", "张伟", "138****8888", "95", "¥125,800"], ["U002", "李娜", "139****6666", "92", "¥98,500"], ["U003", "王芳", "137****5555", "90", "¥87,200"], ["U004", "刘洋", "136****4444", "88", "¥76,800"], ["U005", "陈静", "135****3333", "86", "¥65,400"], ], }, summary: "找到 5 位符合条件的S级高价值用户,总价值 ¥453,700", }) setIsProcessing(false) }, 1500) } return (
用自然语言描述需求,AI自动生成SQL并执行
生成的SQL
{result.sql}
| {col} | ))}
|---|
| {cell} | ))}
{item.query}
{item.sql}
{item.time}