906 lines
23 KiB
Markdown
906 lines
23 KiB
Markdown
# 云酒馆项目开发文档
|
||
|
||
## 项目概述
|
||
|
||
云酒馆是一个基于 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 (用于上下文记忆)
|
||
|
||
#### 核心依赖
|
||
|
||
```json
|
||
{
|
||
"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 启动脚本
|
||
|
||
```json
|
||
{
|
||
"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 启动脚本
|
||
|
||
```json
|
||
{
|
||
"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 数据库设计
|
||
|
||
#### 核心表结构
|
||
|
||
```sql
|
||
-- 用户表
|
||
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 接口规范
|
||
|
||
#### 统一响应格式
|
||
|
||
```go
|
||
type Response struct {
|
||
Code int `json:"code"` // 状态码
|
||
Data interface{} `json:"data"` // 数据
|
||
Msg string `json:"msg"` // 消息
|
||
}
|
||
```
|
||
|
||
#### 统一分页格式
|
||
|
||
```go
|
||
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)
|
||
|
||
```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`](./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. 启动后端服务
|
||
|
||
```bash
|
||
cd server
|
||
go mod tidy
|
||
go run main.go
|
||
```
|
||
|
||
#### 2. 启动管理后台
|
||
|
||
```bash
|
||
cd web
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
#### 3. 启动用户前端
|
||
|
||
```bash
|
||
cd web-app
|
||
npm install
|
||
npm start
|
||
```
|
||
|
||
### 6.3 开发工具推荐
|
||
|
||
- **IDE**: GoLand / VSCode
|
||
- **API测试**: Postman / Apifox
|
||
- **数据库工具**: Navicat / DBeaver
|
||
- **版本控制**: Git
|
||
|
||
---
|
||
|
||
## 七、部署架构
|
||
|
||
### 7.1 Docker部署
|
||
|
||
```yaml
|
||
# 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
|
||
**维护者**: 开发团队
|