diff --git a/app/ClientLayout.tsx b/app/ClientLayout.tsx index 254cabb..c4011a8 100644 --- a/app/ClientLayout.tsx +++ b/app/ClientLayout.tsx @@ -5,10 +5,9 @@ import "./globals.css" import { Inter } from "next/font/google" import { useState, useEffect } from "react" import Sidebar from "./components/Sidebar" +import MobileHeader from "./components/MobileHeader" import MobileSidebar from "./components/MobileSidebar" -import BottomTabs from "@/components/nav/bottom-tabs" -import { usePathname } from "next/navigation" -import { Toaster } from "@/components/ui/toaster" +import BottomNav from "./components/BottomNav" const inter = Inter({ subsets: ["latin"] }) @@ -19,7 +18,6 @@ export default function ClientLayout({ }) { const [isMobile, setIsMobile] = useState(false) const [sidebarOpen, setSidebarOpen] = useState(false) - const pathname = usePathname() useEffect(() => { const checkMobile = () => { @@ -35,7 +33,7 @@ export default function ClientLayout({ return ( - 卡若数据资产中台 + 用户数据资产中台 @@ -49,7 +47,7 @@ export default function ClientLayout({
- {/* 桌面端侧边栏 - PC端不显示底部导航 */} + {/* 桌面端侧边栏 */} {!isMobile && } {/* 移动端侧边栏 */} @@ -57,21 +55,16 @@ export default function ClientLayout({ {/* 主内容区域 */}
- {/* 移动端头部 - 添加卡若数据资产中台标题 */} - {isMobile && ( -
-

卡若数据资产中台

-
- )} + {/* 移动端头部 */} + {isMobile && setSidebarOpen(true)} />} {/* 内容区域 */}
{children}
- {/* 移动端底部导航 - 使用新的BottomTabs组件 */} - {isMobile && } - + {/* 移动端底部导航 */} + {isMobile && } ) diff --git a/app/ai-assistant/page.tsx b/app/ai-assistant/page.tsx index d8031b3..335985b 100644 --- a/app/ai-assistant/page.tsx +++ b/app/ai-assistant/page.tsx @@ -1,105 +1,71 @@ "use client" import { useCallback, useMemo, useState } from "react" -import { TrendingUp, FileText, Sparkles } from "lucide-react" +import { BarChart3, Database, FileText } from 'lucide-react' import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card" import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs" import { Button } from "@/components/ui/button" -import { Textarea } from "@/components/ui/textarea" import TaskList from "@/components/ai-assistant/task-list" import CreateTaskDialog from "@/components/ai-assistant/create-task-dialog" import ReportCards from "@/components/ai-assistant/report-cards" import { sanitizeText } from "@/lib/text-sanitize" -import type { AnalysisTask, ReportItem, ReportTemplate } from "@/types/ai-assistant" +import type { AnalysisTask, DatabaseInfo, ReportItem, ReportTemplate } from "@/types/ai-assistant" const initialTasks: AnalysisTask[] = [ { id: "task_001", - name: "用户资产价值评估报告", - database: "用户池数据", + name: "用户行为分析报告", + database: "微信用户数据库", status: "completed", progress: 100, createdAt: "2025-01-15T09:00:00Z", completedAt: "2025-01-15T09:30:00Z", - reportUrl: "/reports/user-asset-evaluation.pdf", - description: "基于RFM模型和行为数据的用户资产价值评估", + reportUrl: "/reports/user-behavior-analysis.pdf", + description: "基于近30天行为的聚合与序列分析", }, { id: "task_002", - name: "高价值用户画像分析", - database: "用户池数据", + name: "流量关键词趋势分析", + database: "流量关键词库", status: "running", progress: 65, createdAt: "2025-01-15T10:00:00Z", - description: "识别高价值用户特征和行为模式", + description: "关注核心流量词与曝光、点击、转化等指标", }, { id: "task_003", - name: "用户生命周期价值预测", - database: "用户池数据", + name: "用户价值分层报告", + database: "微信用户数据库", status: "pending", progress: 0, createdAt: "2025-01-15T10:30:00Z", - description: "预测用户未来价值和流失风险", + description: "RFM 分层、价值区间分布与运营建议", }, ] +const databases: DatabaseInfo[] = [ + { id: "db_001", name: "微信用户数据库", type: "MySQL", tables: 25, records: 4000000000, lastUpdated: "2025-01-15T11:00:00Z" }, + { id: "db_002", name: "流量关键词库", type: "PostgreSQL", tables: 8, records: 150000, lastUpdated: "2025-01-15T10:45:00Z" }, + { id: "db_003", name: "用户行为日志", type: "MongoDB", tables: 12, records: 1500000000, lastUpdated: "2025-01-15T11:15:00Z" }, +] + const templates: ReportTemplate[] = [ - { - id: "template_001", - name: "用户资产评估报告", - description: "全面评估用户资产价值和投资回报", - category: "资产评估", - fields: ["资产总值", "RFM分析", "价值分层", "投资回报", "增值建议"], - isEditable: true, - }, - { - id: "template_002", - name: "用户价值分析报告", - description: "深度分析用户价值构成和增长潜力", - category: "价值分析", - fields: ["价值构成", "增长趋势", "潜力评估", "风险分析", "优化策略"], - isEditable: true, - }, - { - id: "template_003", - name: "用户生命周期报告", - description: "分析用户生命周期各阶段的价值贡献", - category: "生命周期", - fields: ["阶段划分", "价值贡献", "转化率", "留存分析", "提升方案"], - isEditable: true, - }, + { id: "template_001", name: "用户画像分析报告", description: "深度分析用户特征、行为模式和价值分层", category: "用户分析", fields: ["用户基本信息", "RFM分析", "行为轨迹", "价值评估", "推荐策略"] }, + { id: "template_002", name: "流量趋势分析报告", description: "分析关键词搜索趋势和流量变化", category: "流量分析", fields: ["关键词热度", "搜索趋势", "竞争分析", "机会识别", "优化建议"] }, + { id: "template_003", name: "业务运营报告", description: "综合业务数据分析和运营建议", category: "运营分析", fields: ["核心指标", "增长分析", "用户留存", "转化漏斗", "运营建议"] }, + { id: "template_004", name: "数据质量报告", description: "评估数据完整性、准确性和一致性", category: "数据质量", fields: ["数据完整性", "准确性检查", "一致性验证", "异常检测", "改进建议"] }, ] const reportItems: ReportItem[] = [ - { - id: "rpt-1", - title: "用户资产评估报告", - source: "数据源:用户池", - description: "基于用户行为和交易数据,评估用户资产价值和投资回报率。", - updatedAt: new Date().toISOString(), - }, - { - id: "rpt-2", - title: "高价值用户分析", - source: "数据源:用户池", - description: "识别和分析高价值用户的特征、行为模式和价值贡献。", - updatedAt: new Date().toISOString(), - }, - { - id: "rpt-3", - title: "用户价值预测模型", - source: "数据源:用户池", - description: "基于机器学习预测用户未来价值和生命周期价值。", - updatedAt: new Date().toISOString(), - }, + { id: "rpt-1", title: "用户行为分析报告", source: "数据源:微信用户数据库", description: '本报告基于近30天互动行为,输出用户行为模式与高频路径。\\n"]]}', updatedAt: new Date().toISOString() }, + { id: "rpt-2", title: "流量关键词趋势分析", source: "数据源:流量关键词库", description: '追踪 000000 类流量词及其曝光、点击、转化趋势,适配日/周/月视角。\\n" ]]}', updatedAt: new Date().toISOString() }, + { id: "rpt-3", title: "用户价值分层报告", source: "数据源:微信用户数据库", description: '结合 RFM 得分与标签,给出 S/A/B/C/D 分层与经营建议。\\n" ]] }', updatedAt: new Date().toISOString() }, ] export default function AIAssistantPage() { const [tasks, setTasks] = useState(initialTasks) - const [editingTemplate, setEditingTemplate] = useState(null) - const [templateContent, setTemplateContent] = useState("") + // 进度推进(仅演示用) const tick = useCallback(() => { setTasks((prev) => prev.map((t) => { @@ -129,36 +95,28 @@ export default function AIAssistantPage() { }, 800) } - const handleEditTemplate = (templateId: string) => { - setEditingTemplate(templateId) - const template = templates.find((t) => t.id === templateId) - setTemplateContent(template?.fields.join("\n") || "") - } - - const handleSaveTemplate = () => { - // 保存模板逻辑 - setEditingTemplate(null) - setTemplateContent("") - } - - const sanitizedItems = useMemo(() => reportItems.map((i) => ({ ...i, description: sanitizeText(i.description) })), []) + const sanitizedItems = useMemo( + () => reportItems.map((i) => ({ ...i, description: sanitizeText(i.description) })), + [], + ) return (
-

- - AI智能助手 -

-

专注用户资产评估与价值分析

+

AI智能助手

+

数据库分析与智能报告生成

- + - - 用户资产评估 + + 数据分析 + + + + 数据库 @@ -168,8 +126,8 @@ export default function AIAssistantPage() {
-

用户资产分析任务

- +

数据分析任务

+
@@ -177,12 +135,38 @@ export default function AIAssistantPage() {
+ + + + + + 数据库 + + + + {databases.map((db) => ( + + +
{db.name}
+
+ {db.type} · {db.tables} 表 +
+
+ 最近更新 {new Date(db.lastUpdated).toLocaleString("zh-CN")} +
+
+
+ ))} +
+
+
+ - 可编辑报告模板 + 报告模板 @@ -191,29 +175,7 @@ export default function AIAssistantPage() {
{t.name}
{t.category}
-
{t.description}
- {editingTemplate === t.id ? ( -
-