Files
st/云酒馆开发文档.md
2026-02-10 17:48:27 +08:00

23 KiB
Raw Blame History

云酒馆项目开发文档

项目概述

云酒馆是一个基于 AI 对话的全栈 Web 应用项目,采用前后端分离架构,包含用户前台应用、管理后台和后端服务。

技术栈概览

  • 前端应用 (web-app): Node.js + Express + 原生 JavaScript
  • 管理后台 (web): Vue 3 + Vite + Element Plus + Pinia
  • 后端服务 (server): Go + Gin + Gorm + PostgreSQL/PostgreSQL

一、项目结构

st/
├── web-app/              # 用户前端应用SillyTavern基础
├── web/                  # 管理后台前端
├── server/               # Go后端服务
├── deploy/               # 部署配置
│   ├── docker/          # Docker配置
│   ├── docker-compose/  # Docker Compose配置
│   └── kubernetes/      # K8s配置
└── docs/                # 文档资源

二、Web-App 用户前端应用

2.1 项目信息

  • 名称: SillyTavern (基础版本)
  • 版本: 1.15.0
  • 许可: AGPL-3.0
  • Node要求: >= 18

2.2 技术栈

核心框架

  • Express.js 4.21.0: 后端服务框架
  • Webpack 5.98.0: 前端资源打包

主要功能模块

  • AI对话引擎: 支持多种AI模型OpenAI、Anthropic、Google等
  • 文件处理:
    • 图片处理 (Jimp)
    • PDF阅读 (@mozilla/readability)
    • 文档支持
  • 实时通信: WebSocket (ws)
  • 翻译服务: 支持必应、谷歌翻译
  • 语音处理: TTS/STT支持
  • 向量存储: Vectra (用于上下文记忆)

核心依赖

{
  "express": "^4.21.0",
  "body-parser": "^1.20.2",
  "cors": "^2.8.5",
  "ws": "^8.18.3",
  "helmet": "^8.1.0",
  "compression": "^1.8.1",
  "multer": "^2.0.2",
  "sillytavern-transformers": "2.14.6",
  "vectra": "^0.2.2"
}

2.3 目录结构

web-app/
├── server.js                  # 应用入口
├── package.json              # 依赖配置
├── webpack.config.js         # Webpack配置
├── src/                      # 后端源码
│   ├── server-main.js       # 主服务器文件
│   ├── endpoints/           # API端点
│   │   ├── anthropic.js    # Anthropic AI集成
│   │   ├── openai.js       # OpenAI集成
│   │   ├── google.js       # Google AI集成
│   │   ├── characters.js   # 角色管理
│   │   ├── chats.js        # 对话管理
│   │   ├── images.js       # 图片处理
│   │   ├── vectors.js      # 向量存储
│   │   └── ...
│   ├── middleware/          # 中间件
│   │   ├── basicAuth.js    # 基础认证
│   │   ├── corsProxy.js    # CORS代理
│   │   └── whitelist.js    # 白名单控制
│   ├── tokenizers/         # 分词器模型
│   └── util.js             # 工具函数
├── public/                  # 前端静态资源
│   ├── index.html          # 主页面
│   ├── css/                # 样式文件
│   ├── scripts/            # JavaScript脚本
│   │   ├── extensions/     # 扩展功能
│   │   ├── openai.js       # OpenAI客户端
│   │   └── ...
│   ├── lib/                # 第三方库
│   │   ├── jquery-3.5.1.min.js
│   │   ├── select2.min.js
│   │   └── ...
│   ├── locales/            # 国际化文件
│   └── sounds/             # 音效文件
├── docker/                  # Docker配置
└── tests/                   # 测试文件

2.4 核心功能模块

1. AI 集成模块

  • 路径: src/endpoints/
  • 支持的AI平台:
    • OpenAI (GPT系列)
    • Anthropic (Claude)
    • Google (Gemini)
    • Azure OpenAI
    • NovelAI
    • KoboldAI
    • AI Horde
    • Minimax

2. 角色与对话管理

  • 角色管理 (endpoints/characters.js): CRUD操作
  • 对话管理 (endpoints/chats.js): 对话历史、导入导出
  • 群组管理 (endpoints/groups.js): 多角色对话

3. 文件处理

  • 图片处理 (endpoints/images.js): 上传、压缩、格式转换
  • 文件上传 (endpoints/files.js): 通用文件上传
  • 头像管理 (endpoints/avatars.js): 用户头像
  • 背景管理 (endpoints/backgrounds.js): 聊天背景

4. 扩展功能

  • 向量数据库 (endpoints/vectors.js): 长期记忆
  • 翻译服务 (endpoints/translate.js): 多语言翻译
  • 语音功能 (endpoints/speech.js): TTS/STT
  • 图片生成 (endpoints/stable-diffusion.js): AI绘图

5. 系统功能

  • 用户系统: 公开/私有用户管理
  • 主题管理: 自定义UI主题
  • 备份恢复: 数据备份与恢复
  • 扩展插件: 插件系统

2.5 启动脚本

{
  "start": "node server.js",
  "debug": "node --inspect server.js",
  "start:global": "node server.js --global",
  "start:no-csrf": "node server.js --disableCsrf"
}

2.6 关键特性

  1. 多AI模型支持: 统一接口适配多个AI服务提供商
  2. 向量记忆: 使用向量数据库实现长期记忆功能
  3. 插件系统: 可扩展的插件架构
  4. 多用户支持: 支持多用户隔离
  5. 实时通信: WebSocket支持实时消息推送
  6. 安全特性: CSRF保护、CORS配置、内容安全策略
  7. 国际化: 支持多语言界面

三、Web 管理后台前端

3.1 项目信息

  • 名称: gin-vue-admin
  • 版本: 2.8.9
  • 框架: Vue 3

3.2 技术栈

核心框架

  • Vue 3.5.7: 渐进式JavaScript框架
  • Vite 6.2.3: 下一代前端构建工具
  • Element Plus 2.10.2: UI组件库
  • Pinia 2.2.2: 状态管理
  • Vue Router 4.4.3: 路由管理

功能库

  • Axios 1.8.2: HTTP客户端
  • ECharts 5.5.1: 数据可视化
  • @wangeditor/editor: 富文本编辑器
  • @form-create/element-ui: 表单生成器
  • highlight.js: 代码高亮
  • marked: Markdown解析

3.3 目录结构

web/
├── public/                    # 静态资源
│   ├── favicon.ico
│   └── index.html
├── src/                       # 源代码
│   ├── main.js               # 入口文件
│   ├── App.vue               # 根组件
│   ├── permission.js         # 路由守卫
│   ├── api/                  # API接口
│   │   ├── api.js           # API管理
│   │   ├── user.js          # 用户管理
│   │   ├── authority.js     # 权限管理
│   │   ├── menu.js          # 菜单管理
│   │   ├── autoCode.js      # 代码生成
│   │   └── ...
│   ├── assets/               # 资源文件
│   │   ├── icons/           # 图标
│   │   └── ...
│   ├── components/           # 全局组件
│   │   ├── charts/          # 图表组件
│   │   ├── upload/          # 上传组件
│   │   ├── richtext/        # 富文本编辑器
│   │   ├── office/          # Office预览
│   │   └── ...
│   ├── core/                 # 核心配置
│   │   ├── config.js        # 配置文件
│   │   └── global.js        # 全局注册
│   ├── directive/            # 自定义指令
│   │   ├── auth.js          # 权限指令
│   │   └── clickOutSide.js
│   ├── pinia/                # 状态管理
│   │   ├── index.js
│   │   └── modules/
│   │       ├── user.js      # 用户状态
│   │       ├── router.js    # 路由状态
│   │       ├── dictionary.js # 字典状态
│   │       └── ...
│   ├── router/               # 路由配置
│   │   └── index.js
│   ├── style/                # 全局样式
│   │   ├── main.scss
│   │   └── element_visiable.scss
│   ├── utils/                # 工具函数
│   │   ├── request.js       # 请求封装
│   │   ├── asyncRouter.js   # 动态路由
│   │   ├── dictionary.js    # 字典工具
│   │   └── ...
│   └── view/                 # 页面视图
│       ├── login/           # 登录
│       ├── dashboard/       # 仪表盘
│       ├── superAdmin/      # 超级管理员
│       │   ├── user/       # 用户管理
│       │   ├── authority/  # 角色管理
│       │   ├── menu/       # 菜单管理
│       │   ├── api/        # API管理
│       │   └── dictionary/ # 字典管理
│       ├── systemTools/     # 系统工具
│       │   ├── autoCode/   # 代码生成
│       │   ├── system/     # 系统配置
│       │   └── ...
│       ├── person/          # 个人中心
│       └── layout/          # 布局组件
├── vite.config.js            # Vite配置
└── package.json              # 依赖配置

3.4 核心功能模块

1. 系统管理

  • 用户管理: 用户CRUD、角色分配
  • 角色管理: 角色权限配置
  • 菜单管理: 动态菜单配置
  • API管理: API权限控制
  • 字典管理: 系统字典维护

2. 开发工具

  • 代码生成器: 根据数据库表自动生成CRUD代码
  • 表单构建器: 可视化表单设计
  • 系统配置: 系统参数配置
  • 操作日志: 用户操作记录
  • 登录日志: 登录历史追踪

3. 插件系统

  • 插件管理: 插件安装、卸载
  • 公告系统: 系统公告发布
  • 邮件系统: 邮件发送功能

4. 数据展示

  • 仪表盘: 数据概览、图表展示
  • 文件管理: 文件上传下载
  • 断点续传: 大文件上传

3.5 启动脚本

{
  "dev": "vite --host --mode development",
  "build": "vite build --mode production",
  "preview": "vite preview"
}

四、Server Go后端服务

4.1 项目信息

  • 框架: Gin-Vue-Admin v2.8.9
  • Go版本: 1.24.0+
  • 模块路径: git.echol.cn/loser/st/server

4.2 技术栈

核心框架

  • Gin 1.10.0: Web框架
  • Gorm 1.25.12: ORM框架
  • Viper 1.19.0: 配置管理
  • Zap 1.27.0: 日志库
  • Casbin 2.103.0: 权限控制

数据库支持

  • PostgreSQL (driver/PostgreSQL)
  • PostgreSQL (driver/postgres)
  • SQLite (glebarez/sqlite)
  • SQL Server (driver/sqlserver)
  • Oracle (gorm-oracle)
  • MongoDB (mongo-driver)

功能组件

  • JWT: golang-jwt/jwt (认证)
  • Redis: go-redis/v9 (缓存)
  • Swagger: swaggo/gin-swagger (API文档)
  • 对象存储:
    • 阿里云OSS
    • 腾讯云COS
    • 华为云OBS
    • 七牛云
    • MinIO
    • AWS S3
  • 定时任务: robfig/cron
  • Excel: xuri/excelize

4.3 目录结构

server/
├── main.go                    # 程序入口
├── go.mod                     # Go模块依赖
├── api/                       # API层
│   └── v1/                   # v1版本接口
│       ├── system/           # 系统模块
│       │   ├── sys_user.go  # 用户接口
│       │   ├── sys_authority.go # 角色接口
│       │   ├── sys_menu.go  # 菜单接口
│       │   ├── sys_api.go   # API接口
│       │   └── ...
│       └── example/          # 示例模块
├── config/                    # 配置包
│   ├── config.go            # 配置结构体
│   ├── system.go            # 系统配置
│   ├── jwt.go               # JWT配置
│   ├── zap.go               # 日志配置
│   ├── redis.go             # Redis配置
│   ├── database.go          # 数据库配置
│   └── ...
├── core/                      # 核心组件
│   ├── server.go            # 服务器初始化
│   ├── viper.go             # Viper初始化
│   └── zap.go               # Zap初始化
├── docs/                      # Swagger文档
│   ├── docs.go
│   ├── swagger.json
│   └── swagger.yaml
├── global/                    # 全局对象
│   ├── global.go            # 全局变量
│   └── model.go             # 基础模型
├── initialize/                # 初始化
│   ├── router.go            # 路由初始化
│   ├── gorm.go              # 数据库初始化
│   ├── redis.go             # Redis初始化
│   ├── timer.go             # 定时器初始化
│   └── internal/            # 内部函数
├── middleware/                # 中间件
│   ├── jwt.go               # JWT中间件
│   ├── casbin.go            # 权限中间件
│   ├── cors.go              # CORS中间件
│   ├── operation.go         # 操作日志中间件
│   └── ...
├── model/                     # 模型层
│   ├── system/              # 系统模型
│   │   ├── sys_user.go     # 用户模型
│   │   ├── sys_authority.go # 角色模型
│   │   ├── sys_menu.go     # 菜单模型
│   │   └── ...
│   ├── request/             # 请求结构体
│   │   └── ...
│   └── response/            # 响应结构体
│       └── ...
├── router/                    # 路由层
│   ├── enter.go
│   ├── system/              # 系统路由
│   │   ├── sys_user.go
│   │   ├── sys_authority.go
│   │   └── ...
│   └── example/             # 示例路由
├── service/                   # 服务层
│   ├── system/              # 系统服务
│   │   ├── sys_user.go
│   │   ├── sys_authority.go
│   │   ├── sys_menu.go
│   │   └── ...
│   └── example/             # 示例服务
├── source/                    # 初始数据
│   ├── system/
│   │   ├── user.go         # 初始用户
│   │   ├── authority.go    # 初始角色
│   │   └── ...
│   └── ...
├── utils/                     # 工具包
│   ├── timer/               # 定时器
│   ├── upload/              # 文件上传
│   │   ├── aliyun_oss.go  # 阿里云OSS
│   │   ├── tencent_cos.go # 腾讯云COS
│   │   ├── qiniu.go       # 七牛云
│   │   └── local.go       # 本地存储
│   ├── jwt.go               # JWT工具
│   ├── directory.go         # 目录工具
│   └── ...
└── resource/                  # 静态资源
    ├── template/            # 代码模板
    └── ...

4.4 核心功能模块

1. 用户与权限系统

  • 用户管理 (sys_user.go)

    • 用户注册、登录、登出
    • 用户信息CRUD
    • 密码修改、重置
    • 用户角色分配
  • 角色管理 (sys_authority.go)

    • 角色CRUD
    • 角色权限配置
    • 角色继承
  • 菜单管理 (sys_menu.go)

    • 动态菜单
    • 菜单权限绑定
    • 菜单树结构
  • API管理 (sys_api.go)

    • API注册
    • API分组
    • API权限控制
  • Casbin权限 (sys_casbin.go)

    • 基于RBAC的权限控制
    • 动态权限策略

2. 系统工具

  • 代码生成器 (sys_auto_code.go)

    • 根据数据库表生成代码
    • 支持自定义模板
    • 生成Vue+Go完整CRUD
  • 字典管理 (sys_dictionary.go)

    • 系统字典维护
    • 字典详情管理
  • 操作日志 (sys_operation_record.go)

    • 记录用户操作
    • 日志查询和导出
  • 登录日志 (sys_login_log.go)

    • 登录历史
    • 登录失败记录

3. 文件上传

  • 支持多种对象存储:
    • 本地存储
    • 阿里云OSS
    • 腾讯云COS
    • 七牛云
    • MinIO
    • 华为云OBS
    • AWS S3

4. 定时任务

  • 基于 cron 表达式
  • 任务管理界面
  • 任务执行日志

5. 系统配置

  • 系统参数 (sys_params.go)

    • 系统配置项
    • 配置动态更新
  • 数据库初始化 (sys_initdb.go)

    • 自动初始化数据库
    • 初始数据导入

4.5 数据库设计

核心表结构

-- 用户表
sys_users
  - id: 主键
  - uuid: UUID
  - username: 用户名
  - password: 密码(加密)
  - nick_name: 昵称
  - authority_id: 角色ID
  - phone: 手机号
  - email: 邮箱
  - enable: 启用状态
  
-- 角色表
sys_authorities
  - authority_id: 角色ID(主键)
  - authority_name: 角色名
  - parent_id: 父角色ID
  - default_router: 默认路由
  
-- 菜单表
sys_base_menus
  - id: 主键
  - parent_id: 父菜单ID
  - path: 路由路径
  - name: 路由名称
  - component: 组件路径
  - sort: 排序
  - meta: 元信息(JSON)
  
-- API表
sys_apis
  - id: 主键
  - path: API路径
  - description: 描述
  - api_group: API分组
  - method: 请求方法
  
-- Casbin规则表
casbin_rule
  - ptype: 策略类型
  - v0: 角色
  - v1: 路径
  - v2: 方法
  
-- 操作日志表
sys_operation_records
  - id: 主键
  - ip: IP地址
  - method: 请求方法
  - path: 请求路径
  - status: 响应状态
  - user_id: 用户ID
  - body: 请求体
  - resp: 响应体

4.6 API 接口规范

统一响应格式

type Response struct {
    Code int         `json:"code"`    // 状态码
    Data interface{} `json:"data"`    // 数据
    Msg  string      `json:"msg"`     // 消息
}

统一分页格式

type PageInfo struct {
    Page     int `json:"page"`     // 页码
    PageSize int `json:"pageSize"` // 每页大小
}

type PageResult struct {
    List     interface{} `json:"list"`     // 数据列表
    Total    int64       `json:"total"`    // 总数
    Page     int         `json:"page"`     // 当前页
    PageSize int         `json:"pageSize"` // 每页大小
}

4.7 配置文件 (config.yaml)

# 系统配置
system:
  env: 'public'  # 环境: develop/test/public
  addr: 8888     # 端口
  db-type: 'PostgreSQL'  # 数据库类型
  oss-type: 'local' # 对象存储类型
  use-multipoint: false  # 多点登录
  use-redis: false       # 使用Redis

# JWT配置
jwt:
  signing-key: 'your-signing-key'
  expires-time: 7d
  buffer-time: 1d
  issuer: 'gva'

# 数据库配置
PostgreSQL:
  path: '127.0.0.1'
  port: '3306'
  config: 'charset=utf8mb4&parseTime=True&loc=Local'
  db-name: 'gva'
  username: 'root'
  password: 'root'
  max-idle-conns: 10
  max-open-conns: 100
  log-mode: 'info'
  log-zap: false

# Redis配置
redis:
  addr: '127.0.0.1:6379'
  password: ''
  db: 0

# Zap日志配置
zap:
  level: 'info'
  prefix: '[GVA]'
  format: 'console'
  director: 'log'
  encode-level: 'LowercaseColorLevelEncoder'
  stacktrace-key: 'stacktrace'

五、项目重构方案

本项目计划进行架构重构,将 web-app 从 Node.js 后端+前端一体化架构重构为 Go 后端 + 纯前端架构。

5.1 重构目标

  • 后端统一: 使用 Go + PostgreSQL 提供所有后端服务
  • 前端分离: web-app 改造为纯前端应用,仅包含页面和前端逻辑
  • 数据迁移: 将文件系统存储迁移到 PostgreSQL + 对象存储
  • 性能提升: 利用 Go 的高并发能力和 PostgreSQL 的向量扩展pgvector

5.2 技术架构

重构后架构
├── web-app/                    # 用户前端(纯前端)
│   ├── 静态 HTML/CSS/JS
│   ├── 调用 Go 后端 API
│   └── Nginx 静态服务器部署
│
├── web/                        # 管理后台前端
│   ├── Vue 3 + Vite
│   └── Element Plus UI
│
└── server/                     # Go 统一后端
    ├── Gin Web 框架
    ├── PostgreSQL + pgvector
    ├── AI 服务集成
    ├── WebSocket 实时通信
    └── 对象存储服务

5.3 详细重构方案

完整的重构实施方案请查看: docs/重构实施方案.md

该文档包含:

  • 详细的数据库设计PostgreSQL 表结构)
  • Go 后端 API 开发指南
  • 前端改造步骤web-app 去 Node.js 化)
  • 数据迁移脚本与策略
  • 测试方案与性能优化
  • Docker 部署配置
  • 时间规划与风险评估

六、开发环境搭建

6.1 环境要求

  • Node.js: >= 18.0.0
  • Go: >= 1.24.0
  • PostgreSQL: >= 12
  • Redis: >= 6.0 (可选)

6.2 快速启动

1. 启动后端服务

cd server
go mod tidy
go run main.go

2. 启动管理后台

cd web
npm install
npm run dev

3. 启动用户前端

cd web-app
npm install
npm start

6.3 开发工具推荐

  • IDE: GoLand / VSCode
  • API测试: Postman / Apifox
  • 数据库工具: Navicat / DBeaver
  • 版本控制: Git

七、部署架构

7.1 Docker部署

# docker-compose.yml
version: '3.8'
services:
  PostgreSQL:
    image: PostgreSQL:8.0
    environment:
      PostgreSQL_ROOT_PASSWORD: root
      PostgreSQL_DATABASE: gva
    ports:
      - "3306:3306"
  
  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
  
  server:
    build: ./server
    ports:
      - "8888:8888"
    depends_on:
      - PostgreSQL
      - redis
  
  web:
    build: ./web
    ports:
      - "80:80"
  
  web-app:
    build: ./web-app
    ports:
      - "8000:8000"

7.2 Kubernetes部署

参考 deploy/kubernetes/ 目录下的配置文件。


八、API文档

8.1 Swagger文档

后端启动后访问: http://localhost:8888/swagger/index.html

8.2 主要接口列表

用户认证

  • POST /base/login - 用户登录
  • POST /base/register - 用户注册
  • POST /user/changePassword - 修改密码

角色管理 (管理后台)

  • GET /authority/getAuthorityList - 获取角色列表
  • POST /authority/createAuthority - 创建角色
  • PUT /authority/updateAuthority - 更新角色
  • DELETE /authority/deleteAuthority - 删除角色

AI对话 (待实现)

  • POST /chat/create - 创建对话
  • GET /chat/list - 获取对话列表
  • POST /chat/send - 发送消息
  • GET /chat/history/:id - 获取对话历史

九、开发规范

9.1 代码规范

Go代码规范

  • 遵循 Go 官方代码风格
  • 使用 gofmt 格式化代码
  • 使用 golangci-lint 进行静态检查

Vue代码规范

  • 遵循 Vue 3 风格指南
  • 使用 ESLint 进行代码检查
  • 组件命名使用 PascalCase

9.2 Git提交规范

feat: 新功能
fix: 修复bug
docs: 文档更新
style: 代码格式调整
refactor: 重构
test: 测试相关
chore: 构建/工具相关

9.3 分支管理

  • main: 主分支,生产环境
  • develop: 开发分支
  • feature/*: 功能分支
  • hotfix/*: 紧急修复分支

十、常见问题 (FAQ)

Q1: 如何切换数据库类型?

修改 server/config.yaml 中的 system.db-type,支持 PostgreSQL、sqlite、sqlserver。

Q2: 如何配置对象存储?

修改 server/config.yaml 中的 system.oss-type,支持 local、aliyun、tencent、qiniu、minio等。

Q3: 前端如何配置后端地址?

  • web: 修改 web/.env.development 中的 VITE_BASE_API
  • web-app: 修改相应的API配置文件

十一、联系方式

  • 项目仓库: git.echol.cn/loser/st
  • 技术栈: Go + Gin + Vue 3 + Node.js
  • 框架: Gin-Vue-Admin + SillyTavern

附录

A. 依赖版本清单

Web-App

  • Node.js: >= 18
  • Express: 4.21.0
  • Webpack: 5.98.0

Web

  • Vue: 3.5.7
  • Vite: 6.2.3
  • Element Plus: 2.10.2

Server

  • Go: 1.24.0
  • Gin: 1.10.0
  • Gorm: 1.25.12

B. 性能指标

  • 并发用户数: 1000+
  • 响应时间: < 200ms
  • 数据库连接池: 100

C. 安全措施

  • JWT Token认证
  • CORS跨域控制
  • CSRF防护
  • SQL注入防护
  • XSS防护
  • 密码加密存储
  • API限流

文档版本: v1.0.0
最后更新: 2026-02-10
维护者: 开发团队