🎨 重构用户端前端为vue开发,完善基础类和角色相关接口

This commit is contained in:
2026-02-10 21:55:45 +08:00
parent db934ebed7
commit 56e821b222
92 changed files with 18377 additions and 21 deletions

213
server/model/app/README.md Normal file
View File

@@ -0,0 +1,213 @@
# App 前台应用数据模型
## 📋 模型列表
本目录包含所有前台用户应用相关的数据模型,与管理后台的 `system` 模块完全独立。
### 1. 用户相关模型
| 文件 | 模型 | 表名 | 说明 |
|------|------|------|------|
| `app_user.go` | `AppUser` | `app_users` | 前台用户表 |
| `app_user_session.go` | `AppUserSession` | `app_user_sessions` | 用户会话表 |
### 2. AI 角色相关模型
| 文件 | 模型 | 表名 | 说明 |
|------|------|------|------|
| `ai_character.go` | `AICharacter` | `ai_characters` | AI 角色表 |
| `ai_character.go` | `AppUserFavoriteCharacter` | `app_user_favorite_characters` | 用户收藏角色表 |
### 3. 对话相关模型
| 文件 | 模型 | 表名 | 说明 |
|------|------|------|------|
| `ai_chat.go` | `AIChat` | `ai_chats` | 对话表 |
| `ai_chat.go` | `AIChatMember` | `ai_chat_members` | 群聊成员表 |
| `ai_message.go` | `AIMessage` | `ai_messages` | 消息表 |
| `ai_message.go` | `AIMessageSwipe` | `ai_message_swipes` | 消息变体表 |
### 4. 向量记忆模型
| 文件 | 模型 | 表名 | 说明 |
|------|------|------|------|
| `ai_memory.go` | `AIMemoryVector` | `ai_memory_vectors` | 向量记忆表(使用 pgvector |
### 5. AI 服务配置模型
| 文件 | 模型 | 表名 | 说明 |
|------|------|------|------|
| `ai_provider.go` | `AIProvider` | `ai_providers` | AI 提供商配置表 |
| `ai_provider.go` | `AIModel` | `ai_models` | AI 模型配置表 |
### 6. 文件管理模型
| 文件 | 模型 | 表名 | 说明 |
|------|------|------|------|
| `ai_file.go` | `AIFile` | `ai_files` | 文件表 |
### 7. 其他模型
| 文件 | 模型 | 表名 | 说明 |
|------|------|------|------|
| `ai_preset.go` | `AIPreset` | `ai_presets` | 对话预设表 |
| `ai_world_info.go` | `AIWorldInfo` | `ai_world_info` | 世界书表 |
| `ai_usage_stat.go` | `AIUsageStat` | `ai_usage_stats` | 使用统计表 |
## 🔧 使用说明
### 1. 数据库自动迁移
所有模型已在 `initialize/gorm.go` 中注册,启动服务时会自动创建表:
```go
// 在 RegisterTables() 函数中已注册
app.AppUser{},
app.AppUserSession{},
app.AICharacter{},
app.AppUserFavoriteCharacter{},
app.AIChat{},
app.AIChatMember{},
app.AIMessage{},
app.AIMessageSwipe{},
app.AIMemoryVector{},
app.AIProvider{},
app.AIModel{},
app.AIFile{},
app.AIPreset{},
app.AIWorldInfo{},
app.AIUsageStat{},
```
### 2. PostgreSQL 向量扩展
向量记忆功能依赖 `pgvector` 扩展,已在 `initialize/gorm_pgsql_extension.go` 中自动安装:
```sql
CREATE EXTENSION IF NOT EXISTS vector;
CREATE INDEX idx_memory_vectors_embedding ON ai_memory_vectors
USING hnsw (embedding vector_cosine_ops);
```
### 3. 外键关系
模型之间的关系已通过 GORM 标签定义:
- `AppUser``AppUserSession`(一对多)
- `AppUser``AICharacter`(一对多,创建者)
- `AppUser``AIChat`(一对多)
- `AppUser``AppUserFavoriteCharacter`(多对多,通过中间表)
- `AICharacter``AppUserFavoriteCharacter`(多对多,通过中间表)
- `AICharacter``AIChat`(一对多)
- `AIChat``AIMessage`(一对多)
- `AIChat``AIChatMember`(多对多,通过中间表)
- `AICharacter``AIChatMember`(多对多,通过中间表)
- `AIMessage``AIMessageSwipe`(一对多)
- `AIProvider``AIModel`(一对多)
### 4. JSONB 字段
以下字段使用 PostgreSQL 的 JSONB 类型:
- `AppUser.AISettings` - AI 相关配置
- `AppUser.Preferences` - 用户偏好设置
- `AICharacter.CardData` - 角色卡片数据
- `AICharacter.Tags` - 角色标签
- `AICharacter.ExampleMessages` - 消息示例
- `AIChat.Settings` - 对话设置
- `AIMessage.GenerationParams` - AI 生成参数
- `AIMessage.Metadata` - 消息元数据
- `AIMemoryVector.Metadata` - 记忆元数据
- `AIProvider.APIConfig` - API 配置
- `AIModel.Config` - 模型配置
- `AIFile.RelatedTo` - 文件关联对象
- `AIFile.Metadata` - 文件元数据
- `AIPreset.Config` - 预设配置
- `AIWorldInfo.TriggerConfig` - 触发条件配置
### 5. 向量字段
`AIMemoryVector.Embedding` 使用 `pgvector.Vector` 类型,维度为 1536OpenAI text-embedding-ada-002
## ⚠️ 注意事项
1. **不要修改 system 包**:所有管理后台相关的模型在 `model/system/` 包中,**不要修改**
2. **表名前缀**
- 前台用户相关:`app_*`
- AI 功能相关:`ai_*`
- 系统管理相关:`sys_*`(不修改)
3. **UUID 生成**`AppUser.UUID` 使用数据库自动生成PostgreSQL 的 `gen_random_uuid()`
4. **软删除**:所有模型继承 `global.GVA_MODEL`,自动支持软删除
5. **时间字段**`CreatedAt``UpdatedAt``DeletedAt` 由 GORM 自动管理
## 📊 ER 图关系
```
AppUser (前台用户)
├── AppUserSession (会话)
├── AICharacter (创建的角色)
├── AIChat (对话)
├── AppUserFavoriteCharacter (收藏的角色)
├── AIMemoryVector (记忆)
├── AIProvider (AI 提供商配置)
├── AIFile (文件)
├── AIPreset (预设)
├── AIWorldInfo (世界书)
└── AIUsageStat (使用统计)
AICharacter (AI 角色)
├── AIChat (对话)
├── AIChatMember (群聊成员)
├── AppUserFavoriteCharacter (被收藏)
└── AIMemoryVector (记忆)
AIChat (对话)
├── AIMessage (消息)
├── AIChatMember (群聊成员)
└── AIMemoryVector (记忆)
AIMessage (消息)
└── AIMessageSwipe (消息变体)
AIProvider (AI 提供商)
└── AIModel (AI 模型)
```
## 🚀 快速开始
1. 确保 PostgreSQL 已安装 pgvector 扩展
2. 配置 `config.yaml` 中的数据库连接
3. 启动服务AutoMigrate 会自动创建所有表
4. 检查日志确认表创建成功
```bash
# 启动服务
go run main.go
# 查看日志
# [GVA] pgvector extension is ready
# [GVA] vector indexes created successfully
# [GVA] register table success
```
## 📝 开发建议
1. 查询时使用预加载避免 N+1 问题:
```go
db.Preload("User").Preload("Character").Find(&chats)
```
2. 向量搜索示例:
```go
db.Order("embedding <=> ?", queryVector).Limit(10).Find(&memories)
```
3. JSONB 查询示例:
```go
db.Where("ai_settings->>'model' = ?", "gpt-4").Find(&users)
```
---
**创建日期**: 2026-02-10
**维护者**: 开发团队