Files
st-react/docs/development-progress.md
2026-02-28 15:11:12 +08:00

731 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 云酒馆项目开发进度
> 最后更新2026-02-27
## 项目概述
云酒馆是一个现代化的 AI 角色对话平台,采用前后端分离架构,完全兼容 SillyTavern V2/V3 格式。
- **前端**React 18 + TypeScript + Tailwind CSS + Vite
- **后端**Go 1.24 + Gin + PostgreSQL + GORM
- **设计风格**Glassmorphism + 深色主题 (OLED 优化)
---
## 开发进度总览
| 模块 | 状态 | 完成度 | 负责人 | 备注 |
|------|------|--------|--------|------|
| 用户系统 | ✅ 已完成 | 100% | - | 注册、登录、资料管理 |
| 角色卡管理 | ✅ 已完成 | 100% | - | 完全兼容 ST V2前后端已打通 |
| 预设管理 | ✅ 已完成 | 100% | - | 前后端已打通,支持导入导出 |
| 对话系统 | ✅ 已完成 | 95% | - | 预设切换、消息重新生成已完成 |
| AI 集成 | 🚧 进行中 | 80% | - | AI 配置管理、API 调用已完成 |
| 世界书系统 | 📋 待开发 | 0% | - | 规划中 |
| 正则脚本 | 📋 待开发 | 0% | - | 规划中 |
**图例**
- ✅ 已完成
- 🚧 进行中
- 📋 待开发
- ⏸️ 暂停
- ❌ 已取消
---
## 一、用户系统 ✅
### 1.1 后端 API已完成 - 2024-02-26
**数据模型**
-`AppUser` - 用户模型
-`AppUserSession` - 会话模型
**API 端点**
-`POST /app/auth/register` - 用户注册
-`POST /app/auth/login` - 用户登录
-`POST /app/auth/refresh` - 刷新Token
-`POST /app/auth/logout` - 用户登出
-`GET /app/auth/userinfo` - 获取用户信息
-`PUT /app/user/profile` - 更新用户资料
-`POST /app/user/change-password` - 修改密码
**核心功能**
- ✅ JWT 认证7天有效期
- ✅ bcrypt 密码加密
- ✅ 会话管理IP、设备信息
- ✅ 用户状态检查
- ✅ 最后登录记录
**文件清单**
```
server/
├── api/v1/app/auth.go # API 控制器
├── model/app/
│ ├── app_user.go # 用户模型
│ ├── app_user_session.go # 会话模型
│ ├── request/auth.go # 请求结构
│ └── response/auth.go # 响应结构
├── service/app/auth.go # 业务逻辑
├── router/app/auth.go # 路由配置
├── middleware/app_jwt.go # JWT 中间件
└── utils/app_jwt.go # JWT 工具
```
### 1.2 前端页面(已完成 - 2024-02-26
**页面清单**
-`/login` - 登录页
-`/register` - 注册页
-`/forgot-password` - 忘记密码
-`/profile` - 用户中心
**功能特性**
- ✅ 表单验证
- ✅ 密码可见性切换
- ✅ 第三方登录入口GitHub/Google
- ✅ 用户统计数据展示
- ✅ 账号设置、隐私设置、通知设置
**文件清单**
```
web-app/src/pages/
├── LoginPage.tsx
├── RegisterPage.tsx
├── ForgotPasswordPage.tsx
└── ProfilePage.tsx
```
### 1.3 前后端对接(已完成 - 2024-02-26
**API 服务层**
-`web-app/src/api/client.ts` - Axios 客户端配置
-`web-app/src/api/auth.ts` - 用户认证 API 封装
**核心功能**
- ✅ Token 自动注入请求头
- ✅ Token 过期自动刷新
- ✅ 统一错误处理
- ✅ 登录状态持久化localStorage
- ✅ 登录后跳转用户中心
- ✅ 未登录自动跳转登录页
- ✅ 用户信息实时加载
- ✅ 登出功能
**环境配置**
-`.env.development` - 开发环境配置http://localhost:8888
-`.env.production` - 生产环境配置
**依赖安装**
- ✅ axios - HTTP 客户端
---
## 二、角色卡管理 ✅
### 2.1 后端 API已完成 - 2024-02-26
**数据模型**
-`AICharacter` - 角色卡模型(完全兼容 SillyTavern V2 格式)
- ✅ 使用 JSONB 存储复杂数据tags, alternateGreetings, characterBook, extensions
- ✅ 支持公开/私有角色卡
- ✅ 统计信息(使用次数、收藏次数)
**API 端点**
-`POST /app/character` - 创建角色卡
-`GET /app/character` - 获取角色卡列表(分页、搜索、标签筛选)
-`GET /app/character/:id` - 获取角色卡详情
-`PUT /app/character/:id` - 更新角色卡
-`DELETE /app/character/:id` - 删除角色卡
-`POST /app/character/upload` - 上传角色卡文件PNG/JSON
-`GET /app/character/:id/export` - 导出角色卡为 JSON
**核心功能**
- ✅ 完全兼容 SillyTavern V2 格式
- ✅ PNG 元数据提取(使用 `utils/character_card.go`
- ✅ JSON 格式导入导出
- ✅ 角色卡搜索和标签筛选
- ✅ 用户权限控制(只能编辑自己的角色卡)
- ✅ 支持 Base64 编码的 PNG tEXt chunk
**文件清单**
```
server/
├── api/v1/app/character.go # API 控制器
├── model/app/ai_character.go # 角色卡模型
├── model/app/request/character.go # 请求结构
├── model/app/response/character.go # 响应结构
├── service/app/character.go # 业务逻辑
├── router/app/character.go # 路由配置
└── utils/character_card.go # SillyTavern V2 格式工具
```
### 2.2 前端页面(已完成 - 2024-02-26
**页面**
-`/characters` - 角色卡管理页
**功能特性**
- ✅ 上传 PNG 角色卡(后端自动解析)
- ✅ 上传 JSON 角色卡
- ✅ 角色卡编辑(名称、描述、性格、场景、系统提示词等)
- ✅ 角色卡导出为 JSON
- ✅ 角色卡删除
- ✅ 搜索功能
- ✅ 分页加载
**文件清单**
```
web-app/src/
├── api/character.ts # 角色卡 API 封装
└── pages/CharacterManagePage.tsx # 角色卡管理页面
```
### 2.3 前后端对接(已完成 - 2024-02-26
**API 服务层**
-`web-app/src/api/character.ts` - 角色卡 API 封装
**核心功能**
- ✅ 角色卡列表加载(分页、搜索)
- ✅ 文件上传PNG/JSON
- ✅ 角色卡编辑和保存
- ✅ 角色卡删除
- ✅ 角色卡导出
- ✅ 错误处理和用户提示
- ✅ 登录状态检查
---
## 三、预设管理 ✅
### 3.1 后端 API已完成 - 2026-02-27
**数据模型**
-`AIPreset` - 预设模型(完全兼容 SillyTavern 格式)
- ✅ 支持所有采样参数temperature/topP/topK/frequencyPenalty/presencePenalty/maxTokens/repetitionPenalty/minP/topA
- ✅ 支持系统提示词和停止序列
- ✅ 使用 JSONB 存储扩展字段extensions
- ✅ 支持公开/私有预设和默认预设
**API 端点**
-`POST /app/preset` - 创建预设
-`GET /app/preset` - 获取预设列表(分页、搜索、公开筛选)
-`GET /app/preset/:id` - 获取预设详情
-`PUT /app/preset/:id` - 更新预设
-`DELETE /app/preset/:id` - 删除预设
-`POST /app/preset/:id/default` - 设置默认预设
-`POST /app/preset/import` - 导入预设JSON 文件)
-`GET /app/preset/:id/export` - 导出预设为 JSON
**核心功能**
- ✅ 完全兼容 SillyTavern 预设格式
- ✅ JSON 格式导入导出
- ✅ 预设搜索和筛选
- ✅ 用户权限控制(只能编辑自己的预设)
- ✅ 默认预设管理
- ✅ 使用统计
**文件清单**
```
server/
├── api/v1/app/preset.go # API 控制器
├── model/app/preset.go # 预设模型
├── model/app/request/preset.go # 请求结构
├── model/app/response/preset.go # 响应结构
├── service/app/preset.go # 业务逻辑
└── router/app/preset.go # 路由配置
```
### 3.2 前端页面(已完成 - 2026-02-27
**页面**
-`/presets` - 预设管理页
**功能特性**
- ✅ 导入 JSON 预设
- ✅ 预设参数编辑Temperature、Top P、Top K、Frequency Penalty、Presence Penalty 等)
- ✅ 预设复制
- ✅ 预设导出
- ✅ 预设删除
- ✅ 搜索功能
- ✅ 设置默认预设
**文件清单**
```
web-app/src/
├── api/preset.ts # 预设 API 封装
└── pages/PresetManagePage.tsx # 预设管理页面
```
### 3.3 前后端对接(已完成 - 2026-02-27
**API 服务层**
-`web-app/src/api/preset.ts` - 预设 API 封装
**核心功能**
- ✅ 预设列表加载(分页、搜索)
- ✅ 文件上传JSON
- ✅ 预设编辑和保存
- ✅ 预设删除
- ✅ 预设导出
- ✅ 默认预设设置
- ✅ 错误处理和用户提示
- ✅ 登录状态检查
---
## 四、对话系统 ✅
### 4.1 后端 API已完成 - 2026-02-27
**数据模型**
-`Conversation` - 对话会话模型
-`Message` - 消息模型
- ✅ 支持用户、角色、预设关联
- ✅ 支持 AI 提供商和模型配置
- ✅ 使用 JSONB 存储对话设置和消息元数据
- ✅ 统计信息消息数量、Token 使用量)
**API 端点**
-`POST /app/conversation` - 创建对话
-`GET /app/conversation` - 获取对话列表(分页)
-`GET /app/conversation/:id` - 获取对话详情
-`PUT /app/conversation/:id/settings` - 更新对话设置
-`DELETE /app/conversation/:id` - 删除对话
-`GET /app/conversation/:id/messages` - 获取消息历史(分页)
-`POST /app/conversation/:id/message` - 发送消息
-`POST /app/conversation/:id/message?stream=true` - 流式发送消息SSE
**核心功能**
- ✅ 对话会话管理
- ✅ 消息发送接收
- ✅ 对话历史存储
- ✅ SSE 流式响应支持
- ✅ Token 统计
- ✅ 用户权限控制
**文件清单**
```
server/
├── api/v1/app/conversation.go # API 控制器
├── model/app/conversation.go # 对话和消息模型
├── model/app/request/conversation.go # 请求结构
├── model/app/response/conversation.go # 响应结构
├── service/app/conversation.go # 业务逻辑
└── router/app/conversation.go # 路由配置
```
### 4.2 前端页面(已完成 - 2026-02-27
**页面**
-`/chat` - 聊天界面
**功能特性**
- ✅ 对话列表侧边栏
- ✅ 角色选择弹窗
- ✅ 消息输入框
- ✅ 对话菜单(导出、删除)
- ✅ 实时消息发送
- ✅ 消息流式显示
- ✅ 对话历史加载
- ✅ 背景图和主题色设置
**待完善**
- ✅ 预设切换功能(流式模式已修复应用预设参数)
- ✅ 消息重新生成(支持流式,自动删除旧回复)
- 📋 消息编辑
- 📋 世界书开关
- 📋 正则脚本开关
**文件清单**
```
web-app/src/
├── api/conversation.ts # 对话 API 封装
├── pages/ChatPage.tsx # 聊天页面
├── components/Sidebar.tsx # 侧边栏
├── components/ChatArea.tsx # 聊天区域
├── components/CharacterPanel.tsx # 角色面板
└── components/SettingsPanel.tsx # 设置面板
```
### 4.3 前后端对接(已完成 - 2026-02-27
**API 服务层**
-`web-app/src/api/conversation.ts` - 对话 API 封装
**核心功能**
- ✅ 对话列表加载(分页)
- ✅ 创建新对话
- ✅ 发送消息
- ✅ 消息历史加载
- ✅ 对话设置更新
- ✅ 对话删除
- ✅ 错误处理和用户提示
- ✅ 登录状态检查
---
## 五、AI 集成 🚧
### 5.1 后端 API部分完成 - 2026-02-27
**数据模型**
-`AIConfig` - AI 配置模型
- ✅ 支持多种 AI 提供商OpenAI/Anthropic/Custom
- ✅ API Key 加密存储
- ✅ 模型配置和参数管理
**API 端点**
-`POST /app/ai-config` - 创建 AI 配置
-`GET /app/ai-config` - 获取配置列表
-`GET /app/ai-config/:id` - 获取配置详情
-`PUT /app/ai-config/:id` - 更新配置
-`DELETE /app/ai-config/:id` - 删除配置
-`POST /app/ai-config/:id/test` - 测试连接
**待实现功能**
- ✅ 实际 AI API 调用集成OpenAI/Anthropic
- 📋 本地模型支持Ollama/LM Studio
- 📋 Token 计数优化
- 📋 错误重试机制
- 📋 提示词模板系统
**文件清单**
```
server/
├── api/v1/app/ai_config.go # API 控制器
├── model/app/ai_config.go # AI 配置模型
├── model/app/request/ai_config.go # 请求结构
├── model/app/response/ai_config.go # 响应结构
└── service/app/ai_config.go # 业务逻辑
```
### 5.2 前端页面(已完成 - 2026-02-27
**功能特性**
- ✅ AI 配置管理界面
- ✅ API Key 配置
- ✅ 模型选择
- ✅ 连接测试
**文件清单**
```
web-app/src/
└── api/aiConfig.ts # AI 配置 API 封装
```
---
## 六、世界书系统 ✅
### 6.1 后端 API已完成 - 2026-02-27
**数据模型**
-`Worldbook` - 世界书模型
-`WorldbookEntry` - 世界书条目模型(完全兼容 SillyTavern 格式)
- ✅ 支持公开/私有世界书
- ✅ 使用 JSONB 存储关键词数组和扩展字段
**已实现字段**
- ✅ keys/secondary_keys - 主关键词和次要关键词
- ✅ content - 条目内容
- ✅ constant/enabled - 常驻和启用标志
- ✅ use_regex/case_sensitive/match_whole_words - 匹配选项
- ✅ selective/selective_logic - 选择性触发逻辑
- ✅ position/depth/order - 注入位置和深度
- ✅ probability/scan_depth - 触发概率和扫描深度
- ✅ group_id - 分组管理
**API 端点**
-`POST /app/worldbook` - 创建世界书
-`GET /app/worldbook` - 获取世界书列表(分页、搜索)
-`GET /app/worldbook/:id` - 获取世界书详情
-`PUT /app/worldbook/:id` - 更新世界书
-`DELETE /app/worldbook/:id` - 删除世界书(级联删除条目)
-`POST /app/worldbook/import` - 导入世界书JSON
-`GET /app/worldbook/:id/export` - 导出世界书为 JSON
-`POST /app/worldbook/:id/entry` - 创建条目
-`GET /app/worldbook/:id/entries` - 获取条目列表
-`PUT /app/worldbook/:id/entry/:entryId` - 更新条目
-`DELETE /app/worldbook/:id/entry/:entryId` - 删除条目
**核心功能**
- ✅ 完全兼容 SillyTavern 世界书格式
- ✅ JSON 格式导入导出
- ✅ 世界书搜索和筛选
- ✅ 用户权限控制(只能编辑自己的世界书)
- ✅ 条目计数自动更新
- 📋 关键词触发算法(待与对话系统集成)
- 📋 与对话系统集成(待实现)
**文件清单**
```
server/
├── api/v1/app/worldbook.go # API 控制器
├── model/app/worldbook.go # 世界书和条目模型
├── model/app/request/worldbook.go # 请求结构
├── model/app/response/worldbook.go # 响应结构
├── service/app/worldbook.go # 业务逻辑
└── router/app/worldbook.go # 路由配置
```
### 6.2 前端页面(已完成 - 2026-02-27
**页面**
-`/worldbooks` - 世界书管理页
**功能特性**
- ✅ 导入 JSON 世界书
- ✅ 创建世界书
- ✅ 世界书列表展示
- ✅ 世界书搜索
- ✅ 世界书导出
- ✅ 世界书删除
- ✅ 条目创建和编辑
- ✅ 条目列表展示
- ✅ 条目删除
- ✅ 关键词管理(主关键词、次要关键词)
- ✅ 条目选项配置(常驻、启用、正则、大小写等)
- ✅ 高级选项(触发概率、扫描深度)
**文件清单**
```
web-app/src/
├── api/worldbook.ts # 世界书 API 封装
└── pages/WorldbookManagePage.tsx # 世界书管理页面
```
### 6.3 前后端对接(已完成 - 2026-02-27
**API 服务层**
-`web-app/src/api/worldbook.ts` - 世界书 API 封装
**核心功能**
- ✅ 世界书列表加载(分页、搜索)
- ✅ 文件上传JSON
- ✅ 世界书创建、编辑、删除
- ✅ 世界书导出
- ✅ 条目创建、编辑、删除
- ✅ 条目列表加载
- ✅ 错误处理和用户提示
- ✅ 登录状态检查
### 6.4 待完善功能
- 📋 与对话系统集成(在对话中激活世界书)
- 📋 关键词触发引擎实现
- 📋 选择性触发逻辑AND/NOT
- 📋 深度控制和位置注入
- 📋 概率触发机制
- 📋 递归扫描
- 📋 角色绑定世界书
- 📋 全局世界书
---
## 七、正则脚本系统 📋
### 7.1 待实现功能(规划中)
**数据模型**
- 📋 `RegexScript` - 正则脚本模型
- 📋 支持全局、角色、预设三种作用域
- 📋 完全兼容 SillyTavern 正则脚本格式
**待实现字段**
- 📋 find_regex/replace_with - 查找和替换表达式
- 📋 trim_string - 修剪字符串
- 📋 placement - 执行阶段(输入/输出/世界书/推理)
- 📋 disabled/markdown_only/run_on_edit/prompt_only - 执行选项
- 📋 substitute_regex - 宏替换({{user}}/{{char}}
- 📋 min_depth/max_depth - 深度控制
- 📋 scope/owner_char_id/owner_preset_id - 作用域管理
**计划 API 端点**
```
POST /app/regex # 创建正则脚本
GET /app/regex # 获取脚本列表
GET /app/regex/:id # 获取脚本详情
PUT /app/regex/:id # 更新脚本
DELETE /app/regex/:id # 删除脚本
POST /app/regex/:id/test # 测试脚本
```
**核心功能规划**
- 📋 多阶段脚本执行(输入/输出/世界书/推理)
- 📋 正则表达式解析和执行
- 📋 宏替换系统
- 📋 深度控制和条件执行
- 📋 与对话系统集成
---
## 八、公共页面 ✅
### 6.1 已完成页面
-`/` - 首页(平台介绍、热门角色)
-`/market` - 角色广场(浏览、搜索、分类)
-`/character/:id` - 角色详情(信息、评价)
**文件**
```
web-app/src/pages/
├── HomePage.tsx
├── CharacterMarket.tsx
└── CharacterDetail.tsx
```
---
## 九、技术债务与优化
### 9.1 待优化项
- ✅ 前后端 API 对接(已完成:用户、角色卡、预设、对话)
- ✅ 实际 AI API 调用集成
- 📋 错误处理统一化
- 📋 加载状态优化
- 📋 响应式布局完善
- 📋 性能优化(虚拟滚动、懒加载)
- 📋 单元测试
- 📋 E2E 测试
- 📋 实际 AI API 调用集成
- 📋 世界书引擎实现
- 📋 正则脚本引擎实现
- 📋 Prompt Pipeline 优化
### 9.2 已知问题
- ✅ 对话系统预设切换功能(流式模式已支持)
- ✅ 消息重新生成功能(支持流式,自动删除旧回复)
- 📋 消息编辑功能待实现
---
## 十、部署相关 📋
### 10.1 待完成
- 📋 Docker 配置
- 📋 CI/CD 流程
- 📋 环境变量管理
- 📋 数据库迁移脚本
- 📋 备份策略
- 📋 监控告警
---
## 十一、文档完善 📋
### 11.1 待补充文档
- 🚧 API 接口文档Swagger 注释已添加,待生成)
- 📋 数据库设计文档
- 📋 部署文档
- 📋 开发规范
- 📋 贡献指南
- ✅ SillyTavern 兼容优化方案(已完成)
---
## 开发时间线
### 2024-02-26
- ✅ 完成用户系统后端 API
- ✅ 完成用户系统前端页面
- ✅ 完成用户系统前后端对接
- ✅ 完成角色卡管理后端 API完全兼容 SillyTavern V2
- ✅ 完成角色卡管理前端页面
- ✅ 完成角色卡管理前后端对接
- ✅ 完成预设管理前端页面
- ✅ 完成对话系统前端基础界面
- ✅ 完成公共页面(首页、角色广场、角色详情)
- ✅ 项目结构重构(前后端分离)
### 2026-02-27
-**完成预设管理后端 API**
- 实现预设 CRUD 操作
- 实现预设导入导出JSON
- 实现默认预设管理
- 完全兼容 SillyTavern 预设格式
-**完成预设管理前后端对接**
-**完成对话系统后端 API**
- 实现对话会话管理
- 实现消息发送接收
- 实现 SSE 流式响应
- 实现对话历史存储
-**完成对话系统前后端对接**
-**完成 AI 配置管理模块**
-**编写 SillyTavern 完全兼容优化方案**
-**更新开发进度文档**
### 下一阶段规划
- ✅ 实现实际 AI API 调用OpenAI/Anthropic
- 📋 实现世界书系统(完全兼容 SillyTavern
- 📋 实现正则脚本系统(完全兼容 SillyTavern
- 📋 实现 Prompt Pipeline世界书触发、正则处理、提示词构建
- 📋 完善对话系统高级功能(消息重新生成、编辑)
- 📋 性能优化与测试
- 📋 部署上线
---
## 下一步计划
### 短期目标(本周)
1. ✅ 完成角色卡管理后端 API已完成
2. ✅ 完成预设管理后端 API已完成
3. ✅ 完成对话系统后端 API已完成
4. ✅ 实现实际 AI API 调用OpenAI/Anthropic
5. ✅ 完善对话系统高级功能(消息重新生成)
### 中期目标(本月)
1. 📋 实现世界书系统(完全兼容 SillyTavern
- 数据模型设计
- 关键词触发算法
- 选择性触发逻辑
- 与对话系统集成
2. 📋 实现正则脚本系统(完全兼容 SillyTavern
- 数据模型设计
- 多阶段脚本执行
- 正则表达式引擎
- 宏替换系统
3. 📋 实现 Prompt Pipeline
- 世界书扫描与注入
- 正则脚本处理
- 提示词构建优化
4. 📋 基础功能测试与优化
### 长期目标(下月)
1. 📋 插件系统设计与实现
2. 📋 性能优化(虚拟滚动、懒加载、缓存)
3. 📋 完善文档API 文档、部署文档)
4. 📋 Docker 部署配置
5. 📋 CI/CD 流程搭建
6. 📋 部署上线
7. 📋 用户反馈收集
---
## 团队协作
### 开发规范
- 代码风格:遵循项目现有风格
- 提交规范:使用 Conventional Commits
- 分支管理feature/* 用于新功能bugfix/* 用于修复
### 沟通渠道
- 技术讨论GitHub Issues
- 进度同步:本文档
- 代码审查Pull Request
---
## 备注
- 本文档持续更新,记录项目开发进度
- 每完成一个功能模块,更新对应状态
- 遇到问题及时记录在"已知问题"部分