Files
pj0235-eai_agentplatform/docs/02_Architecture/AR04_Deploy_Arch.md
T
eaiadminandClaude Code 0455f064ac feat: 新增语音转文字(ASR)功能
- 后端:新增 /api/audio/transcribe 接口,调用 Ollama whisper 进行语音识别
- 前端:新增 AudioTranscribePage.vue 页面,支持 MP3/WAV/M4A/OGG/FLAC 等格式
- 注册路由、工具卡片、智能助手欢迎语更新

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-14 00:53:36 +08:00

5.0 KiB
Raw Blame History

AR04 — 部署架构设计

版本:V1.1 | 部署模式:纯本地离线 完整部署步骤请见 docs/deploy.md

⚠️ 本文档为 V1.1 设计期历史快照(Docker + FastAPI 拓扑),不再反映当前实现。 当前部署为 Go 单二进制 + MySQL 8.0 + FAISS + systemd + Clonezilla 整盘克隆,无 Docker、无 Python 运行时,以 docs/deploy.md 为准。


1. 部署拓扑

                        ┌──────────────────────┐
                        │    内网员工浏览器     │
                        │   http://train.bosun │
                        └──────────┬───────────┘
                                   │
                             ┌─────▼──────┐
                             │   Nginx    │
                             │ :80 / :443 │
                             │            │
                             │ · 前端静态 │
                             │ · API 反代 │
                             │ · SSE 支持 │
                             └──┬──────┬──┘
                                │      │
                 ┌──────────────┘      └──────────────┐
                 │                                     │
           ┌─────▼──────┐                    ┌────────▼────────┐
           │  FastAPI   │                    │  Vue 静态打包   │
           │  :8000     │                    │  nginx html/    │
           │            │                    └─────────────────┘
           │  · JWT     │
           │  · 业务    │
           └──┬──┬──┬──┘
              │  │  │
  ┌───────────┘  │  └──────────────┐
  │              │                 │
┌──▼─────┐ ┌────▼───────┐ ┌──────▼──────────┐
│ MySQL  │ │ data/media │ │  LibreOffice    │
│ 8.0    │ │ 文件存储   │ │  预览容器       │
│ :3306  │ │            │ │  :8100          │
└────────┘ └────────────┘ └─────────────────┘
                             │
                             │ (文档转换)
                             ▼
                     ┌──────────────┐
                     │  内网 LLM    │
                     │  Ollama/     │
                     │  vLLM/网关   │
                     │  :11434      │
                     └──────────────┘

2. 服务清单

服务 端口 基础镜像/依赖 说明
Nginx 80/443 nginx:alpine HTTP 反代 + 前端静态资源
FastAPI 8000 python:3.10 后端 API(uvicorn 启动)
MySQL 3306 mysql:8.0 数据库
LibreOffice 8100 自定义 Docker 镜像 文档转 PDF 预览
LLM 服务 11434 ollama/vllm 内网 AI 推理

3. Nginx 关键配置

# SPA 路由
location / {
    try_files $uri $uri/ /index.html;
}

# API 反代 + SSE
location /api/ {
    proxy_pass http://127.0.0.1:8000;
    proxy_buffering off;
    proxy_cache off;
    proxy_read_timeout 300s;
}

# 媒体文件预览(仅内部)
location /media/ {
    alias /opt/eai_agentplatform/backend/data/media/;
    internal;
}

client_max_body_size 2048M;

4. docker-compose 服务拓扑

version: '3.8'
services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: eai_agentplatform
      MYSQL_USER: eai_agentplatform
      MYSQL_PASSWORD: ${DB_PASSWORD}
    volumes:
      - mysql_data:/var/lib/mysql

  backend:
    build: ./backend
    environment:
      DATABASE_URL: mysql+pymysql://eai_agentplatform:${DB_PASSWORD}@mysql:3306/eai_agentplatform
      JWT_SECRET: ${JWT_SECRET}
      LLM_BASE_URL: http://llm-server:11434/v1
    volumes:
      - ./data/media:/app/data/media
    depends_on:
      - mysql

  libreoffice:
    image: libreoffice-preview:latest
    volumes:
      - ./data/media:/data/media

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./frontend/dist:/usr/share/nginx/html
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - backend

5. 安全边界

层级 措施
网络 仅监听内网,不暴露公网端口
认证 JWT token 校验 + bcrypt 密码
鉴权 后端 API role 校验(非前端)
文件 白名单扩展名 + UUID 命名 + 只读预览
数据库 独立用户 + 最小权限
LLM 仅内网地址,严禁公网 API