From 05e55761058e2089e81fb93dd4000dc3f42f40b3 Mon Sep 17 00:00:00 2001
From: hongjli <3117313295@qq.com>
Date: 星期四, 05 六月 2025 16:17:12 +0800
Subject: [PATCH] 页面调整优化

---
 src/app/ai-scene/chat/page.tsx |  168 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 136 insertions(+), 32 deletions(-)

diff --git a/src/app/ai-scene/chat/page.tsx b/src/app/ai-scene/chat/page.tsx
index 0c02755..4d40b9a 100644
--- a/src/app/ai-scene/chat/page.tsx
+++ b/src/app/ai-scene/chat/page.tsx
@@ -1,9 +1,10 @@
 "use client";
 
-import { useState, useEffect } from 'react';
+import { useState, useEffect, Suspense } from 'react';
 import { motion, AnimatePresence } from 'framer-motion';
 import { useSearchParams } from 'next/navigation';
 import { useRouter } from 'next/navigation';
+import Image from 'next/image';
 import DataPreviewDialog from '@/components/DataPreviewDialog';
 
 // 瀵煎叆鍦烘櫙鏁版嵁
@@ -80,13 +81,13 @@
     title: '鎻掑崟1.0',
     description: '鏅鸿兘璇勪及闇�姹傛彃鍗曞浜ц兘锛屽師鏉愭枡鍜屼氦浠樻湇鍔$殑褰卞搷锛屾彁鍗囧鎴锋弧鎰忓害',
     imageUrl: '/images/xuqiu.jpg',
-    chatbotId: 'DfH4cIzujVGvn5iR',
+    chatbotId: 'RhMYLHI1SZNiX4kl',
     background: '鍦ㄧ敓浜ц鍒掓墽琛岃繃绋嬩腑锛屽父甯镐細閬囧埌绱ф�ヨ鍗曢渶瑕佹彃鍗曠殑鎯呭喌銆侫I绯荤粺鍙互蹇�熻瘎浼版彃鍗曞鐜版湁鐢熶骇璁″垝鐨勫奖鍝嶏紝骞舵彁渚涙渶浼樼殑鎻掑崟鏂规銆�',
     instructions: '璇锋彁渚涢渶瑕佹彃鍗曠殑璁㈠崟淇℃伅锛屽寘鎷骇鍝佺被鍨嬨�佹暟閲忓拰鏈熸湜浜や粯鏃堕棿锛孉I鍔╂墜灏嗕负鎮ㄥ垎鏋愬彲琛屾�у苟缁欏嚭鍏蜂綋鐨勬彃鍗曞缓璁��',
     dataDescription: '鏈満鏅�氳繃鏁村悎ERP銆丮ES绛夌郴缁熺殑瀹炴椂鏁版嵁锛岀粨鍚圓I绠楁硶杩涜鏅鸿兘鍒嗘瀽鍜岄璀︺�備互涓嬩负婕旂ず鏁版嵁锛屽疄闄呬娇鐢ㄦ椂灏嗚嚜鍔ㄥ鎺ョ浉鍏充笟鍔$郴缁熴��',
     exampleData: `
-### 鍩虹鏁版嵁鏄繖鏍风殑锛氫骇鍝侊細A锛孊锛孋
-### A, B, C鐨凚OM鏄繖鏍风殑
+### 鍩虹鏁版嵁锛氫骇鍝侊細A锛孊锛孋
+### A, B, C鐨凚OM
 
 | 浜у搧 | 鐗╂枡 | 鐗╂枡鍗曚綅鐢ㄩ噺 |
 | :--: | :--: | :--: |
@@ -100,7 +101,7 @@
 | C | 1002 | 3 |
 | C | 1003 | 2 |
 
-### 闇�姹傛暟鎹槸杩欐牱鐨�
+### 闇�姹傛暟鎹�
 
 | 浜у搧 | 闇�姹傛暟閲� | 闇�姹傛棩鏈� | 闇�姹傚崟鍙� | 瀹㈡埛 | 鍗曚环 |
 | :--: | :--: | :--: | :--: | :--: | :--: |
@@ -150,8 +151,8 @@
     instructions: '璇锋彁渚涢渶瑕佹彃鍗曠殑璁㈠崟淇℃伅锛屽寘鎷骇鍝佺被鍨嬨�佹暟閲忓拰鏈熸湜浜や粯鏃堕棿锛孉I鍔╂墜灏嗕负鎮ㄥ垎鏋愬彲琛屾�у苟缁欏嚭鍏蜂綋鐨勬彃鍗曞缓璁��',
     dataDescription: '鏈満鏅�氳繃鏁村悎ERP銆丮ES绛夌郴缁熺殑瀹炴椂鏁版嵁锛岀粨鍚圓I绠楁硶杩涜鏅鸿兘鍒嗘瀽鍜岄璀︺�備互涓嬩负婕旂ず鏁版嵁锛屽疄闄呬娇鐢ㄦ椂灏嗚嚜鍔ㄥ鎺ョ浉鍏充笟鍔$郴缁熴��',
     exampleData: `
-### 鍩虹鏁版嵁鏄繖鏍风殑锛氫骇鍝侊細A锛孊锛孋
-### A, B, C鐨凚OM鏄繖鏍风殑
+### 鍩虹鏁版嵁锛氫骇鍝侊細A锛孊锛孋
+### A, B, C鐨凚OM
 
 | 浜у搧 | 鐗╂枡 | 鐗╂枡鍗曚綅鐢ㄩ噺 |
 | :--: | :--: | :--: |
@@ -165,7 +166,7 @@
 | C | 1002 | 3 |
 | C | 1003 | 2 |
 
-### 闇�姹傛暟鎹槸杩欐牱鐨�
+### 闇�姹傛暟鎹�
 
 | 浜у搧 | 闇�姹傛暟閲� | 闇�姹傛棩鏈� | 闇�姹傚崟鍙� | 瀹㈡埛 | 鍗曚环 |
 | :--: | :--: | :--: | :--: | :--: | :--: |
@@ -206,20 +207,129 @@
 | S5 | 1005 | 16673976114@163.com |
 `
   },
+  {
+    title: '渚涘簲閾惧叏鏅礊瀵�',
+    description: '閫氳繃AI Agent涓嶢PS鐨勬繁搴﹀崗鍚岋紝灏嗘彃鍗曞搷搴斾粠"琚姩鏁戠伀"鍗囩骇涓�"棰勬祴-鍐崇瓥-鎵ц"涓変綅涓�浣撶殑鏅鸿兘杩愯惀妯″紡锛屽姪鍔涙柊鑳芥簮涓氬姟澧為暱銆�',
+    imageUrl: '/images/333.png',
+    chatbotId: 'SCPanoramaInsight',
+    background: `渚涘簲閾惧叏鏅礊瀵熺郴缁熸槸鏂颁竴浠f櫤鑳戒緵搴旈摼绠$悊骞冲彴鐨勬牳蹇冨紩鎿庛�傝AI绯荤粺鑳藉瑙e喅浼犵粺渚涘簲閾剧鐞嗕腑鐨勫洓澶у叧閿棶棰橈細
+
+**鐢熶骇璁″垝涓庝骇鑳藉奖鍝嶈瘎浼帮細**
+- 瀹炴椂鐩戞帶鐢熶骇绾跨姸鎬侊紝鍔ㄦ�佽瘎浼颁骇鑳藉埄鐢ㄧ巼
+- 鍩轰簬鍘嗗彶鏁版嵁鍜屽疄鏃惰鍗曪紝鏅鸿兘棰勬祴鐢熶骇鐡堕
+- 鑷姩璋冩暣鐢熶骇璁″垝锛屾渶澶у寲浜ц兘鍒╃敤鏁堢巼
+- 鎻愪緵澶氬満鏅敓浜ц鍒掑姣斿垎鏋愶紝杈呭姪鍐崇瓥鍒跺畾
+
+**渚涘簲鍗忓悓鑳藉姏璇勪及锛�**
+- 瀹炴椂杩借釜渚涘簲鍟嗕氦浠樼姸鎬侊紝璇勪及渚涘簲椋庨櫓
+- 鏅鸿兘鍒嗘瀽渚涘簲鍟嗙哗鏁堬紝鎻愪緵渚涘簲鍟嗕紭鍖栧缓璁�
+- 棰勬祴鍘熸潗鏂欓渶姹傦紝鎻愬墠鍚姩閲囪喘娴佺▼
+- 鏋勫缓渚涘簲閾剧綉缁滈煣鎬фā鍨嬶紝鎻愬崌鎶楅闄╄兘鍔�
+
+**浜や粯灞ョ害椋庨櫓璇勪及锛�**
+- 鍩轰簬璁㈠崟銆佸簱瀛樸�佺敓浜ц繘搴﹁繘琛岀患鍚堥闄╄瘎浼�
+- 鎻愬墠璇嗗埆娼滃湪寤舵湡椋庨櫓锛屽埗瀹氬簲瀵归妗�
+- 瀹炴椂璺熻釜浜や粯杩涘害锛岀‘淇濆鎴锋弧鎰忓害
+- 寤虹珛瀹㈡埛棰勬湡绠$悊鏈哄埗锛屾彁鍗囨湇鍔′綋楠�
+
+**鎴愭湰涓庤储鍔″奖鍝嶈瘎浼帮細**
+- 鍏ㄩ摼璺垚鏈拷韪紝绮剧‘璁$畻鍚勭幆鑺傛垚鏈瀯鎴�
+- 鍔ㄦ�佹垚鏈紭鍖栧缓璁紝闄嶄綆鏁翠綋杩愯惀鎴愭湰
+- 璐㈠姟褰卞搷棰勬祴鍒嗘瀽锛屾敮鎸佸晢涓氬喅绛�
+- ROI璇勪及妯″瀷锛岄噺鍖栨敼杩涙帾鏂界殑璐㈠姟鏁堢泭`,
+    instructions: `鎮ㄥ彲浠ラ�氳繃浠ヤ笅鏂瑰紡涓庝緵搴旈摼鍏ㄦ櫙娲炲療绯荤粺浜掑姩锛�
+
+**鍦烘櫙涓�锛氭彃鍗曞奖鍝嶅垎鏋�**
+鎻愪緵鏂拌鍗曚俊鎭紝绯荤粺灏嗕粠鍥涗釜缁村害璇勪及鎻掑崟鍙鎬у拰褰卞搷銆�
+
+**鍦烘櫙浜岋細鐢熶骇璁″垝浼樺寲**
+鎻忚堪褰撳墠鐢熶骇鐘跺喌锛岃幏鍙栨櫤鑳戒紭鍖栧缓璁拰椋庨櫓棰勮銆�
+
+**鍦烘櫙涓夛細渚涘簲閾鹃闄╄瘎浼�**
+杈撳叆渚涘簲鍟嗘垨鍘熸潗鏂欎俊鎭紝鑾峰彇渚涘簲椋庨櫓鍒嗘瀽鍜屽簲瀵圭瓥鐣ャ��
+
+**鍦烘櫙鍥涳細鎴愭湰浼樺寲鍒嗘瀽**
+鎻愪緵鎴愭湰鐩稿叧鏁版嵁锛岃幏鍙栨垚鏈紭鍖栧缓璁拰璐㈠姟褰卞搷璇勪及銆�
+
+绯荤粺灏嗗熀浜庡疄鏃舵暟鎹拰AI绠楁硶锛屼负鎮ㄦ彁渚涗笓涓氱殑鍒嗘瀽鎶ュ憡鍜屽喅绛栧缓璁�俙,
+    dataDescription: '鏈満鏅暣鍚堜簡OMS銆丒RP銆乄MS绛夊涓郴缁熺殑瀹炴椂鏁版嵁锛岄�氳繃AI绠楁硶杩涜娣卞害鍒嗘瀽銆備互涓嬩负鏂拌兘婧愯涓氱殑妯℃嫙鏁版嵁锛屽疄闄呭簲鐢ㄤ腑灏嗚嚜鍔ㄥ鎺ヤ紒涓氱幇鏈夌郴缁熴��',
+    exampleData: `
+### 璁㈠崟闇�姹傛暟鎹� (OMS绯荤粺)
+
+| 璁㈠崟鍙� | 浜у搧鍨嬪彿 | 鏁伴噺 | 瀹㈡埛鍚嶇О | 棰勬湡浜や粯鏃ユ湡 | 浼樺厛绾� | 璁㈠崟閲戦 |
+| :--: | :--: | :--: | :--: | :--: | :--: | :--: |
+| SO20250201001 | NEV-Battery-A | 500 | 姣斾簹杩� | 2025-02-15 | 楂� | 2,500,000 |
+| SO20250201002 | NEV-Motor-B | 200 | 钄氭潵姹借溅 | 2025-02-20 | 涓� | 1,800,000 |
+| SO20250201003 | NEV-Controller-C | 300 | 鐞嗘兂姹借溅 | 2025-02-25 | 楂� | 3,200,000 |
+| SO20250201004 | NEV-Charger-D | 150 | 灏忛箯姹借溅 | 2025-03-01 | 涓� | 1,200,000 |
+
+### 鐢熶骇宸ュ崟鏁版嵁 (ERP绯荤粺)
+
+| 宸ュ崟鍙� | 浜у搧鍨嬪彿 | 璁″垝鏁伴噺 | 宸插畬鎴愭暟閲� | 鐢熶骇鐘舵�� | 棰勮瀹屾垚鏃堕棿 | 鐢熶骇绾� |
+| :--: | :--: | :--: | :--: | :--: | :--: | :--: |
+| WO20250201001 | NEV-Battery-A | 600 | 350 | 杩涜涓� | 2025-02-12 | 浜х嚎1 |
+| WO20250201002 | NEV-Motor-B | 250 | 180 | 杩涜涓� | 2025-02-18 | 浜х嚎2 |
+| WO20250201003 | NEV-Controller-C | 200 | 50 | 璁″垝涓� | 2025-02-22 | 浜х嚎3 |
+| WO20250201004 | NEV-Charger-D | 100 | 0 | 寰呮帓浜� | 2025-02-28 | 浜х嚎4 |
+
+### 搴撳瓨鏁版嵁 (WMS绯荤粺)
+
+| 鐗╂枡缂栫爜 | 鐗╂枡鍚嶇О | 褰撳墠搴撳瓨 | 瀹夊叏搴撳瓨 | 鍦ㄩ�旀暟閲� | 棰勮鍒拌揣鏃堕棿 | 搴撲綅 |
+| :--: | :--: | :--: | :--: | :--: | :--: | :--: |
+| MAT001 | 閿傜數姹犺姱 | 1,200 | 500 | 800 | 2025-02-10 | A鍖�-01 |
+| MAT002 | 鐢垫満瀹氬瓙 | 350 | 200 | 150 | 2025-02-12 | B鍖�-02 |
+| MAT003 | 鎺у埗鑺墖 | 180 | 100 | 200 | 2025-02-15 | C鍖�-03 |
+| MAT004 | 鍏呯數妯″潡 | 95 | 50 | 100 | 2025-02-18 | D鍖�-04 |
+
+### 渚涘簲鍟嗙哗鏁堟暟鎹�
+
+| 渚涘簲鍟嗗悕绉� | 渚涘簲鐗╂枡 | 鎸夋椂浜や粯鐜� | 璐ㄩ噺鍚堟牸鐜� | 浠锋牸绔炰簤鍔� | 椋庨櫓绛夌骇 |
+| :--: | :--: | :--: | :--: | :--: | :--: |
+| 瀹佸痉鏃朵唬 | 閿傜數姹犺姱 | 95% | 99.5% | 楂� | 浣� |
+| 姹囧窛鎶�鏈� | 鐢垫満瀹氬瓙 | 88% | 98.2% | 涓� | 涓� |
+| 鍦板钩绾� | 鎺у埗鑺墖 | 92% | 99.8% | 涓� | 浣� |
+| 鐗规潵鐢� | 鍏呯數妯″潡 | 85% | 97.5% | 楂� | 涓� |
+
+### 浜ц兘鏁版嵁
+
+| 鐢熶骇绾� | 鏃ヤ骇鑳� | 褰撳墠鍒╃敤鐜� | 鐡堕宸ュ簭 | 鍙皟閰嶄骇鑳� | 缁存姢璁″垝 |
+| :--: | :--: | :--: | :--: | :--: | :--: |
+| 浜х嚎1 | 50鍙� | 85% | 缁勮 | 10鍙� | 2025-02-20 |
+| 浜х嚎2 | 30鍙� | 75% | 娴嬭瘯 | 8鍙� | 2025-02-25 |
+| 浜х嚎3 | 40鍙� | 60% | 鐒婃帴 | 15鍙� | 2025-03-01 |
+| 浜х嚎4 | 25鍙� | 45% | 鍖呰 | 12鍙� | 2025-03-05 |
+`
+  },
 ];
 
 export default function AISceneChatPage() {
+  return (
+    <Suspense fallback={<div>Loading...</div>}>
+      <AISceneChatContent />
+    </Suspense>
+  );
+}
+
+function AISceneChatContent() {
   const searchParams = useSearchParams();
-  const sceneId = searchParams.get('scene');
+  const sceneId = searchParams.get('scene') || searchParams.get('chatbotId');
   const router = useRouter();
   const [showDataPreview, setShowDataPreview] = useState(false);
   
   // 鏍规嵁URL鍙傛暟鎵惧埌瀵瑰簲鐨勫満鏅�
   const initialScene = defaultServices.find(s => s.chatbotId === sceneId) || defaultServices[0];
+  
   // 淇敼涓轰娇鐢ㄥ畬鏁寸殑鍦烘櫙鏁版嵁
-  const [services] = useState([defaultServices.find(s => s.chatbotId === sceneId) || defaultServices[0]]);
+  const [services] = useState([initialScene]);
   const [selectedScene, setSelectedScene] = useState(initialScene);
   const [iframeKey, setIframeKey] = useState(0);
+  const [token, setToken] = useState<string | null>(null);
+
+  useEffect(() => {
+    // Get token from localStorage
+    const storedToken = localStorage.getItem('token');
+    setToken(storedToken);
+  }, []);
 
   // 鍒囨崲鍦烘櫙鏃堕噸鏂板姞杞絠frame
   const handleSceneChange = (scene: typeof services[0]) => {
@@ -308,9 +418,11 @@
                   )}
                   <div className="flex items-center relative z-10">
                     <div className="w-8 h-8 rounded-lg overflow-hidden mr-3 relative flex-shrink-0">
-                      <img 
+                      <Image 
                         src={scene.imageUrl} 
                         alt={scene.title}
+                        width={32}
+                        height={32}
                         className="w-full h-full object-cover transform transition-transform duration-700 group-hover:scale-110"
                       />
                       <div className="absolute inset-0 bg-gradient-to-br from-black/20 to-transparent"></div>
@@ -375,8 +487,9 @@
 
             {/* 鏁版嵁璇存槑 - 鍙湪琛ユ枡鍜屾彃鍗曞満鏅樉绀� */}
             {(selectedScene.chatbotId === 'JELkWpPLHQfRNhEH' || 
-              selectedScene.chatbotId === 'DfH4cIzujVGvn5iR' || 
-              selectedScene.chatbotId === 'zO9YQDEHdIApG9zC') && (
+              selectedScene.chatbotId === 'RhMYLHI1SZNiX4kl' ||
+              selectedScene.chatbotId === 'zO9YQDEHdIApG9zC' ||
+              selectedScene.chatbotId === 'SCPanoramaInsight') && (
               <>
                 <div className="bg-gray-50 rounded-lg p-4 border border-gray-100 hover:border-gray-200 transition-colors duration-300 shadow-sm">
                   <div className="flex items-center justify-between mb-2">
@@ -405,7 +518,8 @@
                   isOpen={showDataPreview}
                   onClose={() => setShowDataPreview(false)}
                   markdownContent={selectedScene.exampleData || ''}
-                  sceneType={selectedScene.chatbotId === 'JELkWpPLHQfRNhEH' ? 'buliao' : 'chadan'}
+                  sceneType={selectedScene.chatbotId === 'JELkWpPLHQfRNhEH' ? 'buliao' : 
+                           selectedScene.chatbotId === 'SCPanoramaInsight' ? 'panorama' : 'chadan'}
                 />
               </>
             )}
@@ -423,24 +537,14 @@
         </div>
 
         {/* 鑱婂ぉ绐楀彛 */}
-        <div className="flex-1 relative [&::-webkit-scrollbar]:w-1 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:bg-[#E5E6EB] [&::-webkit-scrollbar-thumb]:rounded-full hover:[&::-webkit-scrollbar-thumb]:bg-[#C9CDD4]">
-          <AnimatePresence mode="wait">
-            <motion.div
-              key={iframeKey}
-              className="absolute inset-0"
-              initial={{ opacity: 0, scale: 0.98 }}
-              animate={{ opacity: 1, scale: 1 }}
-              exit={{ opacity: 0, scale: 1.02 }}
-              transition={{ duration: 0.3 }}
-            >
-              <iframe
-                src={`http://121.43.139.99/chatbot/${selectedScene.chatbotId}`}
-                className="w-full h-full"
-                style={{ border: 'none' }}
-                allow="microphone"
-              />
-            </motion.div>
-          </AnimatePresence>
+        <div className="flex-1 relative">
+          <iframe
+            key={iframeKey}
+            className="w-full h-full rounded-lg"
+            src={`http://121.43.139.99:7000/chatbot/${selectedScene.chatbotId}${token ? `?token=${token}` : ''}`}
+            frameBorder="0"
+            allow="microphone"
+          ></iframe>
         </div>
       </div>
     </div>

--
Gitblit v1.9.3