Просмотр исходного кода

feat: 更新前端到v0.2.2 - 修改解析服务IP、移除GPU限制、添加超时处理

何文松 1 день назад
Родитель
Сommit
e19bbcbd46

+ 1 - 1
frontend/vue-demo/package.json

@@ -1,6 +1,6 @@
 {
   "name": "lingyue-zhibao-demo",
-  "version": "0.1.0",
+  "version": "0.2.2",
   "private": true,
   "type": "module",
   "scripts": {

+ 8 - 3
frontend/vue-demo/src/api/index.js

@@ -328,7 +328,7 @@ export const aiApi = {
 // ==================== PDF 解析 API (外部服务) ====================
 
 const parseService = axios.create({
-  baseURL: 'http://47.108.80.98:4214',
+  baseURL: 'http://8.145.53.154:4214',
   timeout: 120000
 })
 
@@ -343,7 +343,12 @@ export const parseApi = {
     if (options.return_images) formData.append('return_images', 'true')
     return parseService.post('/pdf_to_markdown', formData, {
       headers: { 'Content-Type': 'multipart/form-data' }
-    }).then(r => r.data)
+    }).then(r => r.data).catch(error => {
+      if (error.code === 'ECONNABORTED' || error.message.includes('timeout')) {
+        throw new Error('解析服务请求超时,请检查网络连接或稍后重试')
+      }
+      throw error
+    })
   },
 
   // 查询任务状态
@@ -368,7 +373,7 @@ export const parseApi = {
 
   // 获取解析任务的图片 URL 基础路径
   getImageBaseUrl(taskId) {
-    return `http://47.108.80.98:4214/download/${taskId}/images`
+    return `http://8.145.53.154:4214/download/${taskId}/images`
   }
 }
 

+ 1 - 13
frontend/vue-demo/src/views/Editor.vue

@@ -154,7 +154,7 @@
             <div class="welcome">
               <h1>{{ greetingText }},{{ userName }}!<span>智能报告,洞察未来。</span></h1>
               <p>今天是个创作的好日子,开始您的智能报告之旅吧</p>
-              <p class="welcome-version">v0.2.1</p>
+              <p class="welcome-version">v0.2.2</p>
             </div>
           </div>
         </div>
@@ -3301,8 +3301,6 @@ async function parseZipEntry(zf) {
       zf.parseResult = result.html || ''
       zf.isHtml = true
     } else if (ext === 'pdf' || ['png', 'jpg', 'jpeg'].includes(ext)) {
-      // PDF/图片: GPU 解析服务当前不可用
-      throw new Error('PDF/图片解析需要 GPU 服务,暂不可用')
       const blob = await zipEntry.async('blob')
       const mimeMap = { pdf: 'application/pdf', png: 'image/png', jpg: 'image/jpeg', jpeg: 'image/jpeg' }
       const file = new File([blob], zf.name.split('/').pop(), { type: mimeMap[ext] || 'application/octet-stream' })
@@ -3563,16 +3561,6 @@ async function handleParseAttachment(att) {
     return
   }
 
-  // PDF/图片:GPU 解析服务当前不可用,提前拦截
-  const gpuExts = ['pdf', 'png', 'jpg', 'jpeg', 'gif', 'bmp']
-  if (gpuExts.includes(ext)) {
-    const label = ext === 'pdf' ? 'PDF' : '图片'
-    state.status = 'idle'
-    state.progress = ''
-    ElMessage.warning(`${label}文件解析需要 GPU 服务,暂不可用`)
-    return
-  }
-
   try {
     // 1. 获取后端持久化的原始文件
     state.status = 'uploading'

+ 160 - 0
publish/deploy-frontend-ayt.sh

@@ -0,0 +1,160 @@
+#!/bin/bash
+
+# ============================================
+# 灵越智报 - 前端部署到 ayt 服务器 (139.196.72.192)
+# 本地构建 → 上传 dist → 配置 Nginx
+# ============================================
+
+# 颜色定义
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+BLUE='\033[0;34m'
+NC='\033[0m'
+
+# ========== 配置区域 ==========
+SERVER_USER="root"
+SERVER_HOST="139.196.72.192"
+SERVER_PORT="28529"
+
+# 路径配置
+LOCAL_PROJECT_DIR="/home/hws/workspace/GitLab/ay/lingyue-zhibao"
+LOCAL_FRONTEND_DIR="${LOCAL_PROJECT_DIR}/frontend/vue-demo"
+LOCAL_DIST_DIR="${LOCAL_FRONTEND_DIR}/dist"
+
+REMOTE_FRONTEND_DIR="/data/web/lingyuezhibao"
+REMOTE_NGINX_CONF="/etc/nginx/conf.d/lingyue-frontend-ayt.conf"
+
+# 后端 API 地址(前端请求代理目标)
+BACKEND_API="http://127.0.0.1:8001"  # ayt 服务后端通常在 8080 (gateway)
+# 前端监听端口
+FRONTEND_PORT=28082
+# ==============================
+
+log_info()  { echo -e "${GREEN}[INFO]${NC} $1"; }
+log_warn()  { echo -e "${YELLOW}[WARN]${NC} $1"; }
+log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
+log_title() { echo -e "\n${BLUE}========== $1 ==========${NC}\n"; }
+
+ssh_cmd() {
+    ssh -p ${SERVER_PORT} ${SERVER_USER}@${SERVER_HOST} "$@"
+}
+
+# 检查服务器连接
+check_connection() {
+    log_title "检查服务器连接"
+
+    if ssh_cmd "echo 'OK'" > /dev/null 2>&1; then
+        log_info "服务器连接成功: ${SERVER_USER}@${SERVER_HOST}"
+    else
+        log_error "无法连接服务器: ${SERVER_USER}@${SERVER_HOST}"
+        exit 1
+    fi
+}
+
+# 安装依赖
+install_deps() {
+    log_title "安装前端依赖"
+    cd ${LOCAL_FRONTEND_DIR}
+    if [ ! -d "node_modules" ]; then
+        log_info "安装 npm 依赖..."
+        yarn install || npm install
+    else
+        log_info "依赖已存在,跳过安装"
+    fi
+}
+
+# 本地构建
+build_local() {
+    log_title "本地构建前端"
+    cd ${LOCAL_FRONTEND_DIR}
+    rm -rf dist
+    log_info "执行 yarn build..."
+    yarn build || npm run build
+    if [ ! -d "${LOCAL_DIST_DIR}" ]; then
+        log_error "构建失败: dist 目录不存在"
+        exit 1
+    fi
+}
+
+# 上传 dist
+upload_dist() {
+    log_title "上传前端文件到服务器"
+    ssh_cmd "mkdir -p ${REMOTE_FRONTEND_DIR}"
+    
+    # 备份旧版本
+    log_info "备份旧版本..."
+    ssh_cmd "cd ${REMOTE_FRONTEND_DIR} && [ -d assets ] && tar -czf ../lingyuezhibao_bak_\$(date +%Y%m%d%H%M%S).tar.gz . || true"
+
+    log_info "正在上传 dist 目录..."
+    scp -P ${SERVER_PORT} -r "${LOCAL_DIST_DIR}/"* "${SERVER_USER}@${SERVER_HOST}:${REMOTE_FRONTEND_DIR}/"
+
+    log_info "上传完成"
+}
+
+# 配置 Nginx
+setup_nginx() {
+    log_title "配置 Nginx"
+    
+    local nginx_conf="server {
+    listen ${FRONTEND_PORT};
+    server_name _;
+
+    root ${REMOTE_FRONTEND_DIR};
+    index index.html;
+
+    # Gzip 压缩
+    gzip on;
+    gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
+
+    # API 代理到后端
+    location /api {
+        proxy_pass ${BACKEND_API};
+        proxy_set_header Host \$host;
+        proxy_set_header X-Real-IP \$remote_addr;
+        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto \$scheme;
+
+        # WebSocket 支持
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade \$http_upgrade;
+        proxy_set_header Connection \"upgrade\";
+
+        # 超时设置
+        proxy_connect_timeout 60s;
+        proxy_send_timeout 60s;
+        proxy_read_timeout 60s;
+    }
+
+    # SPA 路由支持
+    location / {
+        try_files \$uri \$uri/ /index.html;
+    }
+
+    # 文件上传大小限制
+    client_max_body_size 100M;
+}"
+
+    echo "${nginx_conf}" | ssh_cmd "cat > ${REMOTE_NGINX_CONF}"
+    
+    if ssh_cmd "nginx -t" 2>&1 | grep -q "successful"; then
+        log_info "Nginx 配置测试通过"
+        ssh_cmd "systemctl reload nginx"
+        log_info "Nginx 已重载"
+    else
+        log_error "Nginx 配置有误"
+        ssh_cmd "nginx -t"
+    fi
+}
+
+# 完整部署
+full_deploy() {
+    check_connection
+    # install_deps # 假设已经安装
+    build_local
+    upload_dist
+    setup_nginx
+    log_title "前端部署完成 🎉"
+}
+
+full_deploy