فهرست منبع

更新版本至1.2.0,优化更新通知组件及样式,支持版本更新内容展示和图片预览功能;重构帮助文档结构,添加新功能和性能改进说明。

刘博博 1 ماه پیش
والد
کامیت
7519709fd4

BIN
public/banbenimg/bb1 (1).png


BIN
public/banbenimg/bb1 (2).png


BIN
public/banbenimg/bb1 (3).png


+ 3 - 3
src/help/components/HelpLayout.tsx

@@ -60,10 +60,10 @@ const HelpLayout: React.FC = () => {
   }, [md, location.hash]);
 
   const menuItems = useMemo(() => {
-    const toAntd = (items: HelpMenuItem[]): any[] => items.map((it) => ({
+    const toAntd = (items: HelpMenuItem[], isChild = false): any[] => items.map((it) => ({
       key: it.path, // 使用完整路径作为 key
-      label: it.title,
-      children: it.children ? toAntd(it.children) : undefined,
+      label: <span style={isChild ? { paddingLeft: '16px' } : undefined}>{it.title}</span>,
+      children: it.children ? toAntd(it.children, true) : undefined,
     }));
     return toAntd(helpMenu);
   }, []);

+ 82 - 19
src/help/components/MarkdownViewer.tsx

@@ -261,29 +261,31 @@ const MarkdownViewer: React.FC<MarkdownViewerProps> = ({ content, onToc }) => {
           display:flex;
           align-items:flex-start;
           gap:0;
-          margin:20px 0;
-          padding:20px 24px;
+          padding:0;
           background:transparent;
           border-radius:0;
           border:none;
           transition:all 0.3s ease;
           position:relative;
+          height:120px;
+          overflow:hidden;
         }
-        .help-markdown .update-item:first-of-type{margin-top:16px;}
-        .help-markdown .update-item:last-of-type{margin-bottom:16px;}
+        .help-markdown .update-item:first-of-type{margin-top:0;}
+        .help-markdown .update-item:last-of-type{margin-bottom:0;}
         .help-markdown .update-item-image{
           flex-shrink:0;
-          width:120px;
+          width:210px;
+          min-width:180px;
           height:120px;
           display:flex;
           align-items:center;
           justify-content:center;
           background:transparent;
-          border-radius:4px;
+          border-radius:0;
           overflow:hidden;
-          padding-right:28px;
+          padding:0 0 0 30px;
           position:relative;
-          margin-right:4px;
+          margin-right:0;
         }
         .help-markdown .update-item-image::after{
           content:'';
@@ -292,8 +294,8 @@ const MarkdownViewer: React.FC<MarkdownViewerProps> = ({ content, onToc }) => {
           top:50%;
           transform:translateY(-50%);
           width:1px;
-          height:70px;
-          background:linear-gradient(to bottom, rgba(232,232,232,0) 0%, rgba(232,232,232,0.6) 20%, #d9d9d9 50%, rgba(232,232,232,0.6) 80%, rgba(232,232,232,0) 100%);
+          height:80px;
+          background:linear-gradient(to bottom, rgba(232,232,232,0) 0%, rgba(217,217,217,0.4) 15%, #d9d9d9 50%, rgba(217,217,217,0.4) 85%, rgba(232,232,232,0) 100%);
         }
         .help-markdown .update-item-image img{
           width:100%;
@@ -303,31 +305,92 @@ const MarkdownViewer: React.FC<MarkdownViewerProps> = ({ content, onToc }) => {
           border-radius:0;
           padding:0;
           transition:transform 0.3s ease;
+          cursor:pointer;
         }
         .help-markdown .update-item-image img:hover{
-          transform:scale(1.08);
+          transform:scale(1.02);
         }
         .help-markdown .update-item-content{
           flex:1;
           min-width:0;
-          padding-left:28px;
-          padding-top:2px;
+          height:120px;
+          padding-left:32px;
+          padding-top:0;
+          padding-right:10px;
+          display:flex;
+          flex-direction:column;
+          justify-content:flex-start;
+          overflow-y:auto;
+          overflow-x:hidden;
         }
-        .help-markdown .update-item-content h4{
-          margin-top:0;
-          margin-bottom:10px;
+        .help-markdown .update-item-content::-webkit-scrollbar{
+          width:4px;
+        }
+        .help-markdown .update-item-content::-webkit-scrollbar-track{
+          background:transparent;
+        }
+        .help-markdown .update-item-content::-webkit-scrollbar-thumb{
+          background:#d9d9d9;
+          border-radius:2px;
+          transition:background 0.2s;
+        }
+        .help-markdown .update-item-content::-webkit-scrollbar-thumb:hover{
+          background:#bfbfbf;
+        }
+        .help-markdown .update-item-content h3{
+          margin:0;
+          padding:0;
           font-size:16px;
           font-weight:600;
           color:#262626;
-          line-height:1.5;
-          letter-spacing:0.2px;
+          line-height:1.4;
+          letter-spacing:0;
+        }
+        .help-markdown .update-item-content h3.blue-title{
+          color:#1677ff;
+        }
+        .help-markdown .update-item-content h3 a{
+          color:#1677ff;
+          font-size:16px;
+          font-weight:600;
+          font-style:italic;
+          text-decoration:underline;
+          transition:all 0.2s ease;
+        }
+        .help-markdown .update-item-content h3 a:hover{
+          color:#1890ff;
         }
         .help-markdown .update-item-content p{
-          margin:0;
+          margin:10px 0 0 0;
           font-size:14px;
           line-height:1.8;
           color:#595959;
         }
+        .help-markdown .update-item-content p:first-of-type{
+          margin-top:12px;
+        }
+        .help-markdown .update-item-content p + p{
+          margin-top:8px;
+        }
+        .help-markdown .update-item-content ul{
+          margin:12px 0 0 0;
+          padding-left:0;
+          list-style:none;
+        }
+        .help-markdown .update-item-content ul li{
+          color:rgba(0,0,0,0.65);
+          font-size:14px;
+          line-height:1.5;
+          padding-left:16px;
+          position:relative;
+        }
+        .help-markdown .update-item-content ul li::before{
+          content:'•';
+          position:absolute;
+          left:0;
+          color:rgba(0,0,0,0.65);
+          font-size:14px;
+        }
       `}</style>
       <ReactMarkdown rehypePlugins={[rehypeRaw]} components={components}>
         {content}

+ 30 - 32
src/help/components/UpdateNotification/UpdateNotification.tsx

@@ -1,5 +1,5 @@
 import React, { useEffect, useState } from 'react';
-import { CloseOutlined } from '@ant-design/icons';
+import { CloseOutlined, ExclamationCircleOutlined } from '@ant-design/icons';
 import ReactMarkdown from 'react-markdown';
 import rehypeRaw from 'rehype-raw';
 import { shouldShowUpdate, isUpdateNotificationDisabled, getCurrentVersion, getVersionHistory } from './version';
@@ -29,17 +29,30 @@ const UpdateNotification: React.FC<UpdateNotificationProps> = ({ version }) => {
       // 立即保存版本号,防止退出登录或刷新后重复显示
       localStorage.setItem('lastViewedUpdateVersion', version);
       
-      // 加载更新内容
-      import('./update.md?raw')
+      // 加载更新内容 - 从历史记录中提取最新版本
+      import('../../docs/update-history/index.md?raw')
         .then((module) => {
-          setContent(module.default);
+          const fullContent = module.default;
+          // 提取第一个版本的内容(从第一个 ## 📅 到下一个 --- 之间的内容)
+          const versionRegex = /##\s+📅.*?\n\n([\s\S]*?)(?=\n---)/;
+          const match = fullContent.match(versionRegex);
+          
+          if (match && match[1]) {
+            // 只取内容部分,不包括版本标题
+            setContent(match[1].trim());
+          } else {
+            // 如果匹配失败,显示整个文档
+            console.warn('无法提取最新版本内容,显示完整文档');
+            setContent(fullContent);
+          }
+          
           setTimeout(() => {
             setVisible(true);
             setIsAnimating(true);
           }, 800);
         })
-        .catch(() => {
-          console.error('Failed to load update content');
+        .catch((error) => {
+          console.error('Failed to load update content:', error);
         });
     }
   }, [version]);
@@ -84,32 +97,18 @@ const UpdateNotification: React.FC<UpdateNotificationProps> = ({ version }) => {
           <ReactMarkdown 
             rehypePlugins={[rehypeRaw]}
             components={{
-              h1: (props) => <h2 style={{ fontSize: '16px', marginTop: 0, marginBottom: '16px' }} {...props} />,
-              h2: (props) => <h2 {...props} />,
               h3: (props) => <h3 {...props} />,
-              h4: (props) => <h4 {...props} />,
-              p: (props) => <p style={{ fontSize: '14px', lineHeight: '1.8', margin: '8px 0' }} {...props} />,
-              ul: (props) => <ul {...props} />,
-              li: (props) => <li style={{ fontSize: '14px' }} {...props} />,
-              strong: (props) => <strong {...props} />,
-              code: (props) => (
-                <code style={{ 
-                  background: '#f6f7f9', 
-                  padding: '2px 6px', 
-                  borderRadius: 3,
-                  fontSize: '13px',
-                  color: '#c7254e'
-                }} {...props} />
+              h4: (props: React.HTMLAttributes<HTMLHeadingElement> & { className?: string }) => (
+                <h4 className={props.className} {...props} />
               ),
+              p: (props) => <p {...props} />,
               div: (props: React.HTMLAttributes<HTMLDivElement> & { className?: string }) => {
-                // 支持自定义 class 的 div
                 if (props.className === 'update-item') {
                   return <div className="update-item" {...props} />;
                 }
                 return <div {...props} />;
               },
               img: (props: React.ImgHTMLAttributes<HTMLImageElement> & { src?: string; alt?: string }) => {
-                // 处理图片路径,确保从 public 目录正确加载
                 const src = props.src?.startsWith('/') ? props.src : `/${props.src || ''}`;
                 return (
                   <img 
@@ -127,17 +126,17 @@ const UpdateNotification: React.FC<UpdateNotificationProps> = ({ version }) => {
           </ReactMarkdown>
         </div>
         <div className="update-notification-footer">
-          <button 
-            className="update-notification-button secondary" 
-            onClick={() => {
-              window.open('/help/update-history', '_blank');
-            }}
-          >
-            查看历史更新
-          </button>
           <button className="update-notification-button" onClick={handleClose}>
             关闭
           </button>
+          <div 
+            className="footer-notice" 
+            onClick={() => window.open('/help/update-history', '_blank')}
+            style={{ cursor: 'pointer' }}
+          >
+            <ExclamationCircleOutlined className="info-icon" />
+            <span className="notice-text">版本公告将在帮助文档中</span>
+          </div>
         </div>
       </div>
 
@@ -148,4 +147,3 @@ const UpdateNotification: React.FC<UpdateNotificationProps> = ({ version }) => {
 };
 
 export default UpdateNotification;
-

+ 170 - 131
src/help/components/UpdateNotification/style.less

@@ -23,11 +23,11 @@
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%) scale(0.8);
-  width: 800px;
+  width: 980px;
   max-width: 90vw;
-  max-height: 80vh;
+  max-height: 85vh;
   background: #ffffff;
-  border-radius: 8px;
+  border-radius: 0;
   box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
   z-index: 9999;
   display: flex;
@@ -42,22 +42,21 @@
   }
 
   &-header {
-    padding: 20px 24px;
-    border-bottom: 1px solid #f0f0f0;
+    padding: 20px 32px;
+    border-bottom: none;
     display: flex;
     justify-content: space-between;
     align-items: center;
     position: relative;
-    background: #fff;
+   
   }
 
   &-title {
     display: flex;
     align-items: center;
     gap: 8px;
-    font-size: 18px;
+    font-size: 20px;
     font-weight: 600;
-    color: @text-color;
     flex: 1;
   }
 
@@ -90,12 +89,13 @@
 
   &-content {
     flex: 1;
-    padding: 24px 32px;
+    padding: 24px 40px;
     overflow-y: auto;
     overflow-x: hidden;
     font-size: 14px;
     line-height: 1.8;
     color: @text-color;
+    min-height: 0;
 
     /* 自定义滚动条样式 */
     &::-webkit-scrollbar {
@@ -123,84 +123,57 @@
       margin-top: 0;
     }
 
-    h2 {
-      font-size: 16px;
-      margin-bottom: 16px;
-      border-bottom: 1px solid #f0f0f0;
-      padding-bottom: 8px;
-    }
-
     h3 {
-      font-size: 15px;
-      margin: 16px 0 12px;
-      color: #333;
+      font-size: 16px;
+      margin: 0;
+      padding: 10px 0;
+      color: #262626;
+      font-weight: 600;
     }
 
     h4 {
-      font-size: 14px;
-      margin: 0 0 8px 0;
-      color: #333;
+      font-size: 16px;
+      margin: 0;
+      color: #262626;
       font-weight: 600;
-    }
+      line-height: 1.4;
 
-    ul {
-      list-style-type: disc;
-      padding-left: 24px;
-      margin: 8px 0;
+      &.blue-title {
+        color: #1677ff;
+      }
     }
 
-    li {
-      color: #595959;
-      margin: 6px 0;
+    p {
+      margin: 0 0 8px 0;
+      font-size: 14px;
       line-height: 1.8;
-    }
+      color: #595959;
 
-    a {
-      color: @primary-color;
-      text-decoration: none;
-      
-      &:hover {
-        text-decoration: underline;
+      &:last-child {
+        margin-bottom: 0;
       }
     }
 
-    img {
-      max-width: 100%;
-      border-radius: 4px;
-      margin: 12px 0;
-      display: block;
-    }
-
-    strong {
-      color: @primary-color;
-      font-weight: 600;
-    }
-
-    hr {
-      border: none;
-      border-top: 1px solid #f0f0f0;
-      margin: 16px 0;
-    }
-
     /* 更新项左右布局样式 */
     .update-item {
       display: flex;
       align-items: flex-start;
       gap: 0;
-      margin: 20px 0;
-      padding: 20px 24px;
+      padding: 0;
       background: transparent;
       border-radius: 0;
       border: none;
       transition: all 0.3s ease;
       position: relative;
+      height: 120px;
+      overflow: hidden;
 
       &:first-of-type {
-        margin-top: 16px;
+        margin-top: 0;
       }
 
       &:last-of-type {
-        margin-bottom: 16px;
+        margin-bottom: 0;
       }
 
       &:hover {
@@ -209,17 +182,18 @@
 
       &-image {
         flex-shrink: 0;
-        width: 120px;
+        width: 210px;
+        min-width: 180px;
         height: 120px;
         display: flex;
         align-items: center;
         justify-content: center;
         background: transparent;
-        border-radius: 4px;
+        border-radius: 0;
         overflow: hidden;
-        padding-right: 28px;
+        padding: 0 0 0 30px;
         position: relative;
-        margin-right: 4px;
+        margin-right: 0;
 
         &::after {
           content: '';
@@ -228,12 +202,12 @@
           top: 50%;
           transform: translateY(-50%);
           width: 1px;
-          height: 70px;
+          height: 80px;
           background: linear-gradient(to bottom, 
             rgba(232, 232, 232, 0) 0%, 
-            rgba(232, 232, 232, 0.6) 20%, 
+            rgba(217, 217, 217, 0.4) 15%, 
             #d9d9d9 50%,
-            rgba(232, 232, 232, 0.6) 80%, 
+            rgba(217, 217, 217, 0.4) 85%, 
             rgba(232, 232, 232, 0) 100%);
         }
 
@@ -245,9 +219,10 @@
           border-radius: 0;
           padding: 0;
           transition: transform 0.3s ease;
+          cursor: pointer;
 
           &:hover {
-            transform: scale(1.08);
+            transform: scale(1.02);
           }
         }
       }
@@ -255,42 +230,158 @@
       &-content {
         flex: 1;
         min-width: 0;
-        padding-left: 28px;
-        padding-top: 2px;
+        height: 120px;
+        padding-left: 32px;
+        padding-top: 0;
+        padding-right: 10px;
+        display: flex;
+        flex-direction: column;
+        justify-content: flex-start;
+        overflow-y: auto;
+        overflow-x: hidden;
+
+        /* 自定义滚动条样式 */
+        &::-webkit-scrollbar {
+          width: 4px;
+        }
+
+        &::-webkit-scrollbar-track {
+          background: transparent;
+        }
+
+        &::-webkit-scrollbar-thumb {
+          background: #d9d9d9;
+          border-radius: 2px;
+          transition: background 0.2s;
+
+          &:hover {
+            background: #bfbfbf;
+          }
+        }
+
+        h3 {
+          margin: 0;
+          padding: 0;
+          font-size: 16px;
+          font-weight: 600;
+          color: #262626;
+          line-height: 1.4;
+          letter-spacing: 0;
+
+          a {
+            color: #1677ff;
+            font-size: 16px;
+            font-weight: 600;
+            font-style: italic;
+            text-decoration: underline;
+            transition: all 0.2s ease;
+
+            &:hover {
+              color: #1890ff;
+            }
+          }
+        }
 
         h4 {
           margin-top: 0;
-          margin-bottom: 10px;
+          margin-bottom: 0;
           font-size: 16px;
           font-weight: 600;
           color: #262626;
-          line-height: 1.5;
-          letter-spacing: 0.2px;
+          line-height: 1.4;
+          letter-spacing: 0;
         }
 
         p {
-          margin: 0;
+          margin: 10px 0 0 0;
           font-size: 14px;
           line-height: 1.8;
           color: #595959;
+
+          &:first-of-type {
+            margin-top: 12px;
+          }
+
+          & + p {
+            margin-top: 8px;
+          }
+        }
+
+        ul {
+          margin: 12px 0 0 0;
+          padding-left: 0;
+          list-style: none;
+
+          li {
+            color: rgba(0, 0, 0, 0.65);
+            font-size: 14px;
+            line-height: 1.5;
+            padding-left: 16px;
+            position: relative;
+
+            &::before {
+              content: '•';
+              position: absolute;
+              left: 0;
+              color: rgba(0, 0, 0, 0.65);
+              font-size: 14px;
+            }
+
+          }
         }
       }
     }
   }
 
   &-footer {
-    padding: 16px 24px;
+    padding: 16px 32px;
     border-top: 1px solid #f0f0f0;
     display: flex;
-    justify-content: space-between;
+    flex-direction: row-reverse;
+    justify-content: flex-start;
     align-items: center;
     background: #fff;
-    gap: 12px;
+    gap: 16px;
+
+    .footer-notice {
+      display: flex;
+      align-items: center;
+      gap: 0;
+      transition: all 0.2s ease;
+
+      &:hover {
+        opacity: 0.8;
+        
+        .info-icon {
+          color: #1677ff;
+        }
+        
+        .notice-text {
+          color: #3b3b3b;
+        }
+      }
+
+      .info-icon {
+        font-size: 14px;
+        color: #595959;
+        display: inline-flex;
+        align-items: center;
+        transition: color 0.2s ease;
+        font-weight: 700;
+      }
+
+      .notice-text {
+        font-size: 14px;
+        color: #929292;
+        transition: color 0.2s ease;
+        font-weight: 600;
+      }
+    }
   }
 
   &-button {
-    min-width: 80px;
-    padding: 8px 24px;
+    min-width: 88px;
+    padding: 8px 32px;
     background: @primary-color;
     color: #ffffff;
     border: none;
@@ -298,6 +389,7 @@
     font-size: 14px;
     cursor: pointer;
     transition: all 0.2s ease;
+    font-weight: 400;
 
     &:hover {
       background: #1a42a8;
@@ -306,59 +398,6 @@
     &:active {
       transform: scale(0.98);
     }
-
-    &.secondary {
-      background: #ffffff;
-      color: @primary-color;
-      border: 1px solid @primary-color;
-
-      &:hover {
-        background: #f0f5ff;
-        border-color: #1a42a8;
-        color: #1a42a8;
-      }
-    }
-  }
-}
-
-/* 响应式设计 */
-@media (max-width: 768px) {
-  .update-notification {
-    width: 95vw;
-    max-height: 85vh;
-    
-    &-content {
-      padding: 20px 16px;
-
-      .update-item {
-        flex-direction: column;
-        gap: 0;
-        margin: 16px 0;
-        padding: 16px;
-
-        &-image {
-          width: 100%;
-          height: 200px;
-          padding-right: 0;
-          padding-bottom: 16px;
-          margin-bottom: 16px;
-          border-bottom: 1px solid #e8e8e8;
-
-          &::after {
-            display: none;
-          }
-        }
-
-        &-content {
-          padding-left: 0;
-          padding-top: 0;
-        }
-      }
-    }
-    
-    &-footer {
-      padding: 12px 16px;
-    }
   }
 }
 

+ 0 - 58
src/help/components/UpdateNotification/update.md

@@ -1,58 +0,0 @@
-## 🎉 v1.1.0 更新内容
-
-### ✨ 新增功能
-
-<div class="update-item">
-  <div class="update-item-image">
-    <img src="/ed1.png" alt="应用广场优化" />
-  </div>
-  <div class="update-item-content">
-    <h4>应用广场优化</h4>
-    <p>全新的应用卡片设计,更清晰的信息展示</p>
-  </div>
-</div>
-
-<div class="update-item">
-  <div class="update-item-image">
-    <img src="public\kg2.png" alt="知识库文件上传优化" />
-  </div>
-  <div class="update-item-content">
-    <h4>知识库文件上传优化</h4>
-    <p>收到的文件超时报错优化提示,上传文件过程中提示语优化</p>
-  </div>
-</div>
-
-### 🚀 性能优化
-
-<div class="update-item">
-  <div class="update-item-image">
-    <img src="public\kg4.png" alt="文档上传速度提升" />
-  </div>
-  <div class="update-item-content">
-    <h4>文档上传速度提升</h4>
-    <p>文档上传速度提升 <strong>50%</strong>,错误信息优化<strong>居中显示</strong>,界面渲染优化,操作更流畅</p>
-  </div>
-</div>
-
-### 🐛 问题修复
-
-<div class="update-item">
-  <div class="update-item-image">
-    <img src="/ed2.png" alt="403报错修复" />
-  </div>
-  <div class="update-item-content">
-    <h4>修复403报错拦截及提示</h4>
-    <p>优化了错误处理机制,提供更友好的错误提示</p>
-  </div>
-</div>
-
-### 📝 其他改进
-
-- 优化帮助文档,新增更多使用示例
-- 改进错误提示信息,更易于理解
-- 提升整体UI美观度和一致性
-
----
-
-感谢您的使用!如有问题请联系管理员 💬
-

+ 7 - 4
src/help/components/UpdateNotification/version.ts

@@ -4,16 +4,20 @@
  */
 
 // 当前版本号
-export const CURRENT_VERSION = '1.1.0';
+export const CURRENT_VERSION = '1.2.0';
 
 // 版本历史记录
 export const VERSION_HISTORY = [
   {
-    version: '1.1.0',
+    version: '1.2.0',
     date: '2025-12-05',
     description: '应用广场优化、知识库增强、智能问答改进',
   },
-  
+  {
+    version: '1.1.0',
+    date: '2025-11-04',
+    description: '应用广场优化、知识库增强、智能问答改进',
+  },
 ];
 
 /**
@@ -88,4 +92,3 @@ export const enableUpdateNotification = (): void => {
 export const isUpdateNotificationDisabled = (): boolean => {
   return localStorage.getItem('disableUpdateNotification') === 'true';
 };
-

+ 62 - 16
src/help/docs/update-history/index.md

@@ -2,60 +2,106 @@
 
 这里记录了系统的所有版本更新信息,包括新功能、优化改进和问题修复。
 
-## 📅 2025-12-05 版本公告 (v1.1.0)
+## 📅 2025-12-05 版本公告 (v1.2.0)
 
-### ✨ 新增功能
+### 【界面优化】
+
+<div class="update-item">
+  <div class="update-item-image">
+    <img src="/public/banbenimg/bb1 (2).png" alt="" />
+  </div>
+  <div class="update-item-content">
+    <h3>组件及相关样式</h3>
+    <ul>
+      <li>更新通知组件及相关样式,支持版本更新内容展示和图片预览功能;删除旧的更新内容文档并优化帮助菜单结构。</li>
+      <li>构新手引导逻辑,添加展开/折叠功能并持久化状态到localStorage;在用户重新登录时重置引导状态。 超时回退</li>
+      <li>支持显示来自Pilot 2 App上传的L3点云文件</li>
+    </ul>
+  </div>
+</div>
+
+### 【文件上传】
+
+<div class="update-item">
+  <div class="update-item-image">
+    <img src="/public/banbenimg/bb1 (3).png" alt="" />
+  </div>
+  <div class="update-item-content">
+     <h3><a href="/help/knowledge/intro#上传文档" target="_blank">知识库文件上传优化</a></h3>
+    <ul>
+      <li>加文件上传功能,创建专用的axios实例以处理上传请求</li>
+      <li>优化上传过程中的错误提示和进度反馈</li>
+      <li>添加上传过程中的加载提示并优化其样式</li>
+    </ul>
+  </div>
+</div>
+
+### 【网络处理】
+
+<div class="update-item">
+  <div class="update-item-image">
+    <img src="/public/banbenimg/bb1 (1).png" alt="" />
+  </div>
+  <div class="update-item-content">
+      <h3>网络处理及错误提示</h3>
+    <ul>
+      <li>增强403和504错误处理逻辑</li>
+      <li>隐藏上传列表以避免显示HTML错误信息的tooltip</li>
+    </ul>
+  </div>
+</div>
+
+
+---
+
+## 📅 2025-11-04 版本公告 (v1.1.0)
+
+### 【新增功能】
 
 <div class="update-item">
   <div class="update-item-image">
     <img src="/ed1.png" alt="应用广场优化" />
   </div>
   <div class="update-item-content">
-    <h4>应用广场优化</h4>
+    <h3>应用广场优化</h3>
     <p>全新的应用卡片设计,更清晰的信息展示</p>
   </div>
 </div>
 
 <div class="update-item">
   <div class="update-item-image">
-    <img src="public\kg2.png" alt="知识库文件上传优化" />
+    <img src="/kg2.png" alt="知识库文件上传优化" />
   </div>
   <div class="update-item-content">
-    <h4>知识库文件上传优化</h4>
+    <h3>知识库文件上传优化</h3>
     <p>收到的文件超时报错优化提示,上传文件过程中提示语优化</p>
   </div>
 </div>
 
-### 🚀 性能优化
+### 【性能优化】
 
 <div class="update-item">
   <div class="update-item-image">
-    <img src="public\kg4.png" alt="文档上传速度提升" />
+    <img src="/kg4.png" alt="文档上传速度提升" />
   </div>
   <div class="update-item-content">
-    <h4>文档上传速度提升</h4>
+    <h3>文档上传速度提升</h3>
     <p>文档上传速度提升 <strong>50%</strong>,错误信息优化<strong>居中显示</strong>,界面渲染优化,操作更流畅</p>
   </div>
 </div>
 
-### 🐛 问题修复
+### 【问题修复】
 
 <div class="update-item">
   <div class="update-item-image">
     <img src="/ed2.png" alt="403报错修复" />
   </div>
   <div class="update-item-content">
-    <h4>修复403报错拦截及提示</h4>
+    <h3>修复403报错拦截及提示</h3>
     <p>优化了错误处理机制,提供更友好的错误提示</p>
   </div>
 </div>
 
-### 📝 其他改进
-
-- 优化帮助文档,新增更多使用示例
-- 改进错误提示信息,更易于理解
-- 提升整体UI美观度和一致性
-
 ---
 
 感谢您的使用!如有问题请联系管理员 💬