page.tsx 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482
  1. "use client";
  2. import { useEffect, useState } from "react";
  3. import { Button } from "@/components/ui/button";
  4. import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
  5. import { Badge } from "@/components/ui/badge";
  6. import {
  7. MessageSquare,
  8. Bot,
  9. Users,
  10. Zap,
  11. Shield,
  12. BarChart3,
  13. CheckCircle2,
  14. ArrowRight,
  15. Star,
  16. HelpCircle,
  17. LayoutDashboard,
  18. FileText,
  19. Globe
  20. } from "lucide-react";
  21. import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
  22. import Link from "next/link";
  23. import { ScreenshotDisplay } from "@/components/ScreenshotDisplay";
  24. import { ChatWidget } from "@/components/visitor/ChatWidget";
  25. import { FloatingButton } from "@/components/visitor/FloatingButton";
  26. import { Header } from "@/components/layout/Header";
  27. import { Footer } from "@/components/layout/Footer";
  28. /**
  29. * AI-CS 智能客服系统 - 产品官网首页
  30. *
  31. * 包含:
  32. * - Hero 区域(主标题、副标题、CTA按钮)
  33. * - 核心功能介绍
  34. * - 产品特性
  35. * - 案例研究/客户评价
  36. * - 底部 CTA
  37. */
  38. export default function HomePage() {
  39. const [visitorId, setVisitorId] = useState<number | null>(null);
  40. const [isChatOpen, setIsChatOpen] = useState(false);
  41. // 初始化访客 ID(使用 localStorage 保持连续性)
  42. useEffect(() => {
  43. let stored = window.localStorage.getItem("visitor_id");
  44. if (!stored) {
  45. stored = `${Date.now()}${Math.floor(Math.random() * 100000)}`;
  46. window.localStorage.setItem("visitor_id", stored);
  47. }
  48. const parsed = Number.parseInt(stored, 10);
  49. setVisitorId(Number.isNaN(parsed) ? null : parsed);
  50. }, []);
  51. const handleToggleChat = () => {
  52. setIsChatOpen((prev) => !prev);
  53. };
  54. const handleOpenChat = () => {
  55. // 如果访客ID还没初始化,等待一下
  56. if (visitorId === null) {
  57. // 等待访客ID初始化后再打开
  58. setTimeout(() => {
  59. setIsChatOpen(true);
  60. }, 500);
  61. } else {
  62. // 直接打开聊天窗口
  63. setIsChatOpen(true);
  64. }
  65. };
  66. return (
  67. <div className="min-h-screen bg-gradient-to-b from-background to-muted/20">
  68. {/* 顶部导航栏 */}
  69. <Header />
  70. {/* Hero 区域 */}
  71. <section className="container mx-auto px-4 py-20 md:py-32">
  72. <div className="max-w-4xl mx-auto text-center">
  73. <Badge className="mb-4" variant="secondary">
  74. AI 驱动的智能客服解决方案
  75. </Badge>
  76. <h1 className="text-4xl md:text-6xl font-bold mb-6 bg-gradient-to-r from-primary to-primary/60 bg-clip-text text-transparent">
  77. AI-CS 智能客服系统
  78. </h1>
  79. <p className="text-xl md:text-2xl text-muted-foreground mb-8 max-w-2xl mx-auto">
  80. 融合 AI 技术与人工客服,为企业提供高效、智能的客户服务解决方案
  81. </p>
  82. <div className="flex flex-col sm:flex-row gap-4 justify-center">
  83. <Button size="lg" className="text-lg px-8" onClick={handleOpenChat}>
  84. 立即体验
  85. <ArrowRight className="ml-2 w-5 h-5" />
  86. </Button>
  87. <Button asChild size="lg" variant="outline" className="text-lg px-8">
  88. <Link href="/agent/login">
  89. 客服登录
  90. </Link>
  91. </Button>
  92. </div>
  93. </div>
  94. </section>
  95. {/* 核心功能 */}
  96. <section id="features" className="container mx-auto px-4 py-16 md:py-24">
  97. <div className="text-center mb-12">
  98. <h2 className="text-3xl md:text-4xl font-bold mb-4">核心功能</h2>
  99. <p className="text-muted-foreground text-lg max-w-2xl mx-auto">
  100. 强大的功能组合,满足企业客户服务的各种需求
  101. </p>
  102. </div>
  103. <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 max-w-6xl mx-auto">
  104. <Card className="border-2 hover:border-primary/50 transition-colors">
  105. <CardHeader>
  106. <div className="w-12 h-12 rounded-lg bg-primary/10 flex items-center justify-center mb-4">
  107. <Bot className="w-6 h-6 text-primary" />
  108. </div>
  109. <CardTitle>AI 智能客服</CardTitle>
  110. <CardDescription>
  111. 支持多种 AI 模型,7x24 小时自动回复客户咨询
  112. </CardDescription>
  113. </CardHeader>
  114. <CardContent>
  115. <ul className="space-y-2 text-sm text-muted-foreground">
  116. <li className="flex items-center gap-2">
  117. <CheckCircle2 className="w-4 h-4 text-primary" />
  118. 多厂商 AI 模型支持
  119. </li>
  120. <li className="flex items-center gap-2">
  121. <CheckCircle2 className="w-4 h-4 text-primary" />
  122. 智能对话理解
  123. </li>
  124. <li className="flex items-center gap-2">
  125. <CheckCircle2 className="w-4 h-4 text-primary" />
  126. 自动上下文记忆
  127. </li>
  128. </ul>
  129. </CardContent>
  130. </Card>
  131. <Card className="border-2 hover:border-primary/50 transition-colors">
  132. <CardHeader>
  133. <div className="w-12 h-12 rounded-lg bg-primary/10 flex items-center justify-center mb-4">
  134. <Users className="w-6 h-6 text-primary" />
  135. </div>
  136. <CardTitle>人工客服协作</CardTitle>
  137. <CardDescription>
  138. 无缝切换 AI 与人工模式,提供最佳服务体验
  139. </CardDescription>
  140. </CardHeader>
  141. <CardContent>
  142. <ul className="space-y-2 text-sm text-muted-foreground">
  143. <li className="flex items-center gap-2">
  144. <CheckCircle2 className="w-4 h-4 text-primary" />
  145. 实时消息同步
  146. </li>
  147. <li className="flex items-center gap-2">
  148. <CheckCircle2 className="w-4 h-4 text-primary" />
  149. 在线状态显示
  150. </li>
  151. <li className="flex items-center gap-2">
  152. <CheckCircle2 className="w-4 h-4 text-primary" />
  153. 多客服协作支持
  154. </li>
  155. </ul>
  156. </CardContent>
  157. </Card>
  158. <Card className="border-2 hover:border-primary/50 transition-colors">
  159. <CardHeader>
  160. <div className="w-12 h-12 rounded-lg bg-primary/10 flex items-center justify-center mb-4">
  161. <MessageSquare className="w-6 h-6 text-primary" />
  162. </div>
  163. <CardTitle>实时通信</CardTitle>
  164. <CardDescription>
  165. WebSocket 实时消息推送,确保消息即时到达
  166. </CardDescription>
  167. </CardHeader>
  168. <CardContent>
  169. <ul className="space-y-2 text-sm text-muted-foreground">
  170. <li className="flex items-center gap-2">
  171. <CheckCircle2 className="w-4 h-4 text-primary" />
  172. 双向实时通信
  173. </li>
  174. <li className="flex items-center gap-2">
  175. <CheckCircle2 className="w-4 h-4 text-primary" />
  176. 消息已读状态
  177. </li>
  178. <li className="flex items-center gap-2">
  179. <CheckCircle2 className="w-4 h-4 text-primary" />
  180. 文件/图片传输
  181. </li>
  182. </ul>
  183. </CardContent>
  184. </Card>
  185. <Card className="border-2 hover:border-primary/50 transition-colors">
  186. <CardHeader>
  187. <div className="w-12 h-12 rounded-lg bg-primary/10 flex items-center justify-center mb-4">
  188. <Zap className="w-6 h-6 text-primary" />
  189. </div>
  190. <CardTitle>快速响应</CardTitle>
  191. <CardDescription>
  192. 优化的系统架构,确保低延迟、高并发
  193. </CardDescription>
  194. </CardHeader>
  195. <CardContent>
  196. <ul className="space-y-2 text-sm text-muted-foreground">
  197. <li className="flex items-center gap-2">
  198. <CheckCircle2 className="w-4 h-4 text-primary" />
  199. 毫秒级响应
  200. </li>
  201. <li className="flex items-center gap-2">
  202. <CheckCircle2 className="w-4 h-4 text-primary" />
  203. 高并发支持
  204. </li>
  205. <li className="flex items-center gap-2">
  206. <CheckCircle2 className="w-4 h-4 text-primary" />
  207. 自动重连机制
  208. </li>
  209. </ul>
  210. </CardContent>
  211. </Card>
  212. <Card className="border-2 hover:border-primary/50 transition-colors">
  213. <CardHeader>
  214. <div className="w-12 h-12 rounded-lg bg-primary/10 flex items-center justify-center mb-4">
  215. <Shield className="w-6 h-6 text-primary" />
  216. </div>
  217. <CardTitle>安全可靠</CardTitle>
  218. <CardDescription>
  219. 企业级安全保障,数据加密存储
  220. </CardDescription>
  221. </CardHeader>
  222. <CardContent>
  223. <ul className="space-y-2 text-sm text-muted-foreground">
  224. <li className="flex items-center gap-2">
  225. <CheckCircle2 className="w-4 h-4 text-primary" />
  226. API 密钥加密
  227. </li>
  228. <li className="flex items-center gap-2">
  229. <CheckCircle2 className="w-4 h-4 text-primary" />
  230. 权限管理
  231. </li>
  232. <li className="flex items-center gap-2">
  233. <CheckCircle2 className="w-4 h-4 text-primary" />
  234. 数据备份
  235. </li>
  236. </ul>
  237. </CardContent>
  238. </Card>
  239. <Card className="border-2 hover:border-primary/50 transition-colors">
  240. <CardHeader>
  241. <div className="w-12 h-12 rounded-lg bg-primary/10 flex items-center justify-center mb-4">
  242. <BarChart3 className="w-6 h-6 text-primary" />
  243. </div>
  244. <CardTitle>数据统计</CardTitle>
  245. <CardDescription>
  246. 全面的数据分析和报表功能
  247. </CardDescription>
  248. </CardHeader>
  249. <CardContent>
  250. <ul className="space-y-2 text-sm text-muted-foreground">
  251. <li className="flex items-center gap-2">
  252. <CheckCircle2 className="w-4 h-4 text-primary" />
  253. 会话统计
  254. </li>
  255. <li className="flex items-center gap-2">
  256. <CheckCircle2 className="w-4 h-4 text-primary" />
  257. 客服工作量
  258. </li>
  259. <li className="flex items-center gap-2">
  260. <CheckCircle2 className="w-4 h-4 text-primary" />
  261. 响应时间分析
  262. </li>
  263. </ul>
  264. </CardContent>
  265. </Card>
  266. </div>
  267. </section>
  268. {/* 界面展示 */}
  269. <section id="screenshots" className="container mx-auto px-4 py-16 md:py-24">
  270. <div className="text-center mb-12">
  271. <h2 className="text-3xl md:text-4xl font-bold mb-4">界面展示</h2>
  272. <p className="text-muted-foreground text-lg">
  273. 直观易用的界面设计,提升工作效率
  274. </p>
  275. </div>
  276. <div className="max-w-6xl mx-auto">
  277. <Tabs defaultValue="dashboard" className="w-full">
  278. <TabsList className="grid w-full grid-cols-3 md:grid-cols-5 mb-8">
  279. <TabsTrigger value="dashboard">工作台</TabsTrigger>
  280. <TabsTrigger value="visitor">访客端</TabsTrigger>
  281. <TabsTrigger value="ai-config">AI配置</TabsTrigger>
  282. <TabsTrigger value="users">用户管理</TabsTrigger>
  283. <TabsTrigger value="faq">FAQ管理</TabsTrigger>
  284. </TabsList>
  285. <TabsContent value="dashboard" className="mt-0">
  286. <div className="border rounded-lg overflow-hidden">
  287. <ScreenshotDisplay
  288. imageName="dashboard.png"
  289. placeholderIcon={LayoutDashboard}
  290. placeholderText="工作台界面"
  291. alt="AI-CS 工作台界面"
  292. />
  293. </div>
  294. </TabsContent>
  295. <TabsContent value="visitor" className="mt-0">
  296. <div className="border rounded-lg overflow-hidden">
  297. <ScreenshotDisplay
  298. imageName="visitor.png"
  299. placeholderIcon={Globe}
  300. placeholderText="访客端界面"
  301. alt="AI-CS 访客端界面"
  302. />
  303. </div>
  304. </TabsContent>
  305. <TabsContent value="ai-config" className="mt-0">
  306. <div className="border rounded-lg overflow-hidden">
  307. <ScreenshotDisplay
  308. imageName="ai-config.png"
  309. placeholderIcon={Bot}
  310. placeholderText="AI配置界面"
  311. alt="AI-CS AI配置界面"
  312. />
  313. </div>
  314. </TabsContent>
  315. <TabsContent value="users" className="mt-0">
  316. <div className="border rounded-lg overflow-hidden">
  317. <ScreenshotDisplay
  318. imageName="users.png"
  319. placeholderIcon={Users}
  320. placeholderText="用户管理界面"
  321. alt="AI-CS 用户管理界面"
  322. />
  323. </div>
  324. </TabsContent>
  325. <TabsContent value="faq" className="mt-0">
  326. <div className="border rounded-lg overflow-hidden">
  327. <ScreenshotDisplay
  328. imageName="faq.png"
  329. placeholderIcon={FileText}
  330. placeholderText="FAQ管理界面"
  331. alt="AI-CS FAQ管理界面"
  332. />
  333. </div>
  334. </TabsContent>
  335. </Tabs>
  336. </div>
  337. </section>
  338. {/* 常见问题 */}
  339. <section id="faq" className="container mx-auto px-4 py-16 md:py-24 bg-muted/30 rounded-3xl my-16">
  340. <div className="max-w-4xl mx-auto">
  341. <div className="text-center mb-12">
  342. <h2 className="text-3xl md:text-4xl font-bold mb-4">常见问题</h2>
  343. <p className="text-muted-foreground text-lg">
  344. 快速了解 AI-CS 智能客服系统
  345. </p>
  346. </div>
  347. <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
  348. <Card className="cursor-pointer hover:border-primary/50 transition-colors">
  349. <CardContent className="p-6">
  350. <div className="flex items-start gap-4">
  351. <div className="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0">
  352. <HelpCircle className="w-5 h-5 text-primary" />
  353. </div>
  354. <div className="flex-1">
  355. <h3 className="font-semibold text-lg mb-2">AI-CS 支持哪些 AI 模型?</h3>
  356. <p className="text-muted-foreground text-sm">
  357. AI-CS 支持多种 AI 大模型,包括 OpenAI、DeepSeek、百智云等主流平台,支持自定义 API 配置。
  358. </p>
  359. </div>
  360. </div>
  361. </CardContent>
  362. </Card>
  363. <Card className="cursor-pointer hover:border-primary/50 transition-colors">
  364. <CardContent className="p-6">
  365. <div className="flex items-start gap-4">
  366. <div className="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0">
  367. <HelpCircle className="w-5 h-5 text-primary" />
  368. </div>
  369. <div className="flex-1">
  370. <h3 className="font-semibold text-lg mb-2">如何实现 AI 和人工客服的切换?</h3>
  371. <p className="text-muted-foreground text-sm">
  372. 访客可以在聊天界面一键切换 AI 客服和人工客服模式,系统会自动处理会话转移。
  373. </p>
  374. </div>
  375. </div>
  376. </CardContent>
  377. </Card>
  378. <Card className="cursor-pointer hover:border-primary/50 transition-colors">
  379. <CardContent className="p-6">
  380. <div className="flex items-start gap-4">
  381. <div className="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0">
  382. <HelpCircle className="w-5 h-5 text-primary" />
  383. </div>
  384. <div className="flex-1">
  385. <h3 className="font-semibold text-lg mb-2">系统支持文件上传吗?</h3>
  386. <p className="text-muted-foreground text-sm">
  387. 支持,访客和客服都可以上传图片和文件,支持图片预览和文件下载功能。
  388. </p>
  389. </div>
  390. </div>
  391. </CardContent>
  392. </Card>
  393. <Card className="cursor-pointer hover:border-primary/50 transition-colors">
  394. <CardContent className="p-6">
  395. <div className="flex items-start gap-4">
  396. <div className="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0">
  397. <HelpCircle className="w-5 h-5 text-primary" />
  398. </div>
  399. <div className="flex-1">
  400. <h3 className="font-semibold text-lg mb-2">如何集成到现有网站?</h3>
  401. <p className="text-muted-foreground text-sm">
  402. 提供网页挂件(Widget)功能,只需在网站中嵌入一段代码即可,支持自定义样式和位置。
  403. </p>
  404. </div>
  405. </div>
  406. </CardContent>
  407. </Card>
  408. <Card className="cursor-pointer hover:border-primary/50 transition-colors">
  409. <CardContent className="p-6">
  410. <div className="flex items-start gap-4">
  411. <div className="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0">
  412. <HelpCircle className="w-5 h-5 text-primary" />
  413. </div>
  414. <div className="flex-1">
  415. <h3 className="font-semibold text-lg mb-2">系统支持多客服协作吗?</h3>
  416. <p className="text-muted-foreground text-sm">
  417. 支持,多个客服可以同时在线,系统支持会话分配、转接和协作功能。
  418. </p>
  419. </div>
  420. </div>
  421. </CardContent>
  422. </Card>
  423. <Card className="cursor-pointer hover:border-primary/50 transition-colors">
  424. <CardContent className="p-6">
  425. <div className="flex items-start gap-4">
  426. <div className="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0">
  427. <HelpCircle className="w-5 h-5 text-primary" />
  428. </div>
  429. <div className="flex-1">
  430. <h3 className="font-semibold text-lg mb-2">数据安全如何保障?</h3>
  431. <p className="text-muted-foreground text-sm">
  432. 系统采用 API 密钥加密存储,支持权限管理,所有数据都经过安全加密处理。
  433. </p>
  434. </div>
  435. </div>
  436. </CardContent>
  437. </Card>
  438. </div>
  439. </div>
  440. </section>
  441. {/* 页脚 */}
  442. <Footer />
  443. {/* 客服插件 */}
  444. {visitorId !== null && (
  445. <>
  446. {/* 浮动按钮 */}
  447. <FloatingButton onClick={handleToggleChat} isOpen={isChatOpen} />
  448. {/* 聊天小窗 */}
  449. {isChatOpen && (
  450. <ChatWidget
  451. visitorId={visitorId}
  452. isOpen={isChatOpen}
  453. onToggle={handleToggleChat}
  454. />
  455. )}
  456. </>
  457. )}
  458. </div>
  459. );
  460. }