Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
6a23f61
feat:前端初始化
CChhaan Sep 23, 2025
aecfe4b
feat(auth): implement authentication service
veardk Sep 24, 2025
c723983
feat(auth): implement comprehensive authentication and verification c…
veardk Sep 24, 2025
e1cf7be
feat(auth): enhance auth
veardk Sep 24, 2025
f2f2f15
feat(user): 实现用户信息修改和后台用户管理
veardk Sep 24, 2025
4af88ce
feat(admin): 实现管理后台登陆鉴权以及七牛云云存储上传
veardk Sep 24, 2025
9ad909e
chore: 实现CI/CD
veardk Sep 24, 2025
f7eedd3
chore: 更新CI/CD配置
veardk Sep 24, 2025
a741ac8
refactor(user): 使用 LocalDate 替换 LocalDateTime
veardk Sep 24, 2025
20a203e
refactor(core): 调整服务端口至9009并更新配置
veardk Sep 24, 2025
3e041f9
refactor(docker): 更新Dockerfile,使用默认nginx配置
veardk Sep 24, 2025
823caf9
fix: 修复CI/CD管道错误
veardk Sep 24, 2025
4896d29
fix(workflow): 修复CI/CD
veardk Sep 24, 2025
2812329
docs: 调整审计字段默认值
veardk Sep 24, 2025
ba1faa9
refactor(core): 优化 CI/CD 流程配置
veardk Sep 24, 2025
291b7b5
fix(ci): 修复 CI/CD 配置和 Dockerfile 路径
veardk Sep 24, 2025
d68fd30
ci(workflow): fix docker image publishing to GHCR
veardk Sep 24, 2025
ad28fb6
fix(cd): 修复CD服务器上没有全系
veardk Sep 25, 2025
8e73e24
chore(deps): update package-lock.json
veardk Sep 25, 2025
343e5c9
fix(ci): 修复 CI/CD 配置和 Dockerfile 路径
veardk Sep 25, 2025
374e7a1
fix(cd): 修复用户权限
veardk Sep 25, 2025
b07667a
chore(workflows): 更新生产和测试环境部署配置
veardk Sep 25, 2025
06226c3
chore(workflows): 更新生产和测试环境部署配置
veardk Sep 25, 2025
b153a6d
chore(workflows): 更新生产和测试环境部署配置
veardk Sep 25, 2025
9882223
refactor(workflows): 改进镜像拉取和健康检查流程
veardk Sep 25, 2025
86570f1
fix(ci): 更新镜像tag策略
veardk Sep 25, 2025
dcfdcfa
fix(ci): 使用 latest 镜像作为后备
veardk Sep 25, 2025
532d0e7
chore(ci): 优化 Staging CD 工作流配置
veardk Sep 25, 2025
2acb02f
refactor(test): 更新测试环境配置及健康检查
veardk Sep 25, 2025
bbb6986
fix:忽略本地配置文件
ailuckly Sep 24, 2025
9bcd9e6
feat:角色功能模块全局变量添加
ailuckly Sep 24, 2025
4a5f347
feat:角色模块用户端和管理端的基础功能实现
ailuckly Sep 24, 2025
436f589
feat: 添加角色模块 JSON 实用程序和配置支持
ailuckly Sep 25, 2025
8f4e6f9
feat: 更新角色 entity 和 service 参数
ailuckly Sep 25, 2025
3c6b3a3
feat: 更新 Character DTOs 和 request/response
ailuckly Sep 25, 2025
f1c5e3e
feat: 更新一些 character controllers 实现逻辑
ailuckly Sep 25, 2025
9753909
Stop tracking application-local.yml
ailuckly Sep 25, 2025
f148e5c
test(core): 更新测试环境配置默认值
veardk Sep 25, 2025
259152e
chore(core): 更新 Dockerfile 和 .gitignore 文件
veardk Sep 25, 2025
8c17ac6
feat(user&role):完成用户登录和角色列表接口对接
CChhaan Sep 25, 2025
b4f5114
feat(character): 更新character实体字段
ailuckly Sep 25, 2025
99e7e3b
feat(character): 新增tag 实体类
ailuckly Sep 25, 2025
7944217
feat(character): 新增tag CRUD操作
ailuckly Sep 25, 2025
c68ddf7
feat(character): extend CharacterService with tag management function…
ailuckly Sep 25, 2025
0323fee
feat(character): extend DTOs with tag array fields for enhanced funct…
ailuckly Sep 25, 2025
d7cbed0
feat(character): 更新查询角色条件
ailuckly Sep 25, 2025
9341515
feat(character): 更新一些接口设为公共访问
ailuckly Sep 25, 2025
f572321
feat(character): 更新一些接口设为公共访问
ailuckly Sep 25, 2025
62d2d09
feat(character): 再次更新一些接口设为公共访问,添加上传用户头像
ailuckly Sep 25, 2025
b38692e
fix(character): 修复角色列表接口访问失败问题
ailuckly Sep 25, 2025
9ea3906
fix(character): 添加头像图片过大异常处理
ailuckly Sep 25, 2025
de557af
fix(chatacter): 修复字段返回类型异常
ailuckly Sep 26, 2025
c2709a0
feat(core): 实现AI聊天和对话
veardk Sep 25, 2025
7554965
feat(ai): 升级AI语音对话功能
veardk Sep 26, 2025
a968d85
feat(core): 集成七牛云AI,讯飞TTS,支持多路AI服务
veardk Sep 26, 2025
0f5771b
feat(chat):新增对话页面
CChhaan Sep 26, 2025
d59c189
feat(role):新增对话页面
CChhaan Sep 26, 2025
1c30601
feat(role):新增对话页面
CChhaan Sep 26, 2025
7e208e4
refactor(core): 重构七牛云LLM Provider
veardk Sep 26, 2025
b802ef7
refactor(web): 重构用户角色相关代码
veardk Sep 26, 2025
728dd0a
refactor(core): 修改七牛云配置前缀
veardk Sep 26, 2025
67b39a9
feat(user): 新增用户收藏功能基础结构
ailuckly Sep 26, 2025
427d0c6
feat(user): 实现用户收藏数据访问层
ailuckly Sep 26, 2025
9a17af1
feat(user): 实现用户收藏业务逻辑服务层
ailuckly Sep 26, 2025
12abe6e
feat(user): 在用户控制器中集成收藏功能API
ailuckly Sep 26, 2025
a38bd2d
feat(character): 新增角色收藏数排行榜公开接口
ailuckly Sep 26, 2025
9a7bc59
feat(ai): 测试环境和生产环境添加科大讯飞和火山引擎TTS配置
veardk Sep 26, 2025
5c76269
feat(voice): 添加音色配置服务和解析服务
veardk Sep 26, 2025
9adb2c4
feat(conversation): 增强对话消息管理和TTS服务
veardk Sep 26, 2025
162697f
refactor(core): 重构环境配置与 API 类型
veardk Sep 26, 2025
1531e1b
refactor(core): 修复 UUID TypeHandler 并处理空值
veardk Sep 26, 2025
e8b187a
feat(core): 增强聊天页面功能及添加 API
veardk Sep 26, 2025
54d2a69
feat(chat): 实现端到端AI通话
veardk Sep 27, 2025
5beda0d
feat(ai-chat): 实现语音和文字通话
veardk Sep 27, 2025
1552c50
refactor(core): 优化聊天页面流式消息处理和讯飞TTS日志
veardk Sep 27, 2025
7705aa3
feat(core): 使用 localStorage 替换 cookie 存储 token
veardk Sep 27, 2025
023d15e
refactor(core): 重构AI对话 WebSocket 连接
veardk Sep 27, 2025
2cc1144
refactor(core): 优化配置及代码
veardk Sep 27, 2025
fac0ce7
fix(character): 添加返回字段创建用户名实现
ailuckly Sep 27, 2025
eb02ded
fix(character): 修改角色返回参数
ailuckly Sep 27, 2025
3312a6b
feat(role):完善新建角色页面,修改角色卡片样式,完善历史记录业务逻辑,新增用户信息修改对话框
CChhaan Sep 27, 2025
81a7635
feat(core): 增强AI语音对话功能
veardk Sep 27, 2025
f90dabd
refactor(config): 添加SiliconFlow API配置
veardk Sep 27, 2025
977d19c
refactor(core): 调整环境配置,支持CI/CD动态替换
veardk Sep 27, 2025
8dab284
refactor(aiChat): 改进麦克风访问和兼容性
veardk Sep 27, 2025
0ef99a6
feat(aiChat): 增强语音对话,优化VAD检测
veardk Sep 27, 2025
9ef515b
feat: 前端界面侧边栏样式优化
ailuckly Sep 28, 2025
82b4d10
feat: 优化前端新增角色UI设计和搜索栏,添加通知功能
ailuckly Sep 28, 2025
6a61d3d
feat: 前端首页分页组件优化
ailuckly Sep 28, 2025
c158a5a
feat: 添加角色页标签显示和开始对话功能
ailuckly Sep 28, 2025
01cdc1b
feat: 实现角色最新热门排序显示
ailuckly Sep 28, 2025
07dcb60
fix: fix some bug
ailuckly Sep 28, 2025
d489444
feat(core): 重构语音通话模块并优化STT
veardk Sep 28, 2025
01811c0
refactor(aiChat): 重构音频管理器及AI对话流程
veardk Sep 28, 2025
7787eff
feat(core): 重构AI语音对话,支持七牛云STT
veardk Sep 28, 2025
c4af2c3
feat(service): 增强AI prompt,重构流式服务
veardk Sep 28, 2025
9e10cb4
refactor(core): 重构AI对话和聊天
veardk Sep 28, 2025
7ab73db
feat(core): AI角色生成
veardk Sep 28, 2025
e6d4e30
feat(core): 优化AI角色创建流程
veardk Sep 28, 2025
9c4f863
refactor(aiChat): 优化 WebSocket 连接管理
veardk Sep 28, 2025
bc3c354
feat(admin):管理系统修改
CChhaan Sep 28, 2025
b64be75
refactor(core): 优化对话信息及消息加载流程
veardk Sep 28, 2025
48f79dc
fix(core): 更正package名称为vocata-web
veardk Sep 28, 2025
5419d47
docs: update docs
veardk Oct 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .ai-rules/backend.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ public ApiResponse<UserInfoResponse> getCurrentUserInfo() {
}
```

关于返回ID字段时都需要返回string类型给前端。

**响应格式规范**:
```json
{
Expand Down
2 changes: 1 addition & 1 deletion .ai-rules/database.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ inclusion: always
### 3. 字段类型规范
- 禁止使用ENUM类型,统一使用SMALLINT表示枚举值
- 使用PostgreSQL标准数据类型
- 时间字段使用TIMESTAMP WITH TIME ZONE
- 时间字段使用TIMESTAMP
- JSON数据使用JSONB类型

### 4. 命名规范
Expand Down
260 changes: 254 additions & 6 deletions .ai-rules/frontend.md
Original file line number Diff line number Diff line change
Expand Up @@ -611,18 +611,266 @@ export default defineConfig(({ mode }) => {
})
```

### 环境配置
### 环境配置与安全策略

#### 环境变量文件结构
```
vocata-web/
├── .env.example # 环境变量模板(提交到git)
├── .env.development # 本地开发环境(不提交到git)
├── .env.staging # 测试环境(不提交到git)
├── .env.production # 生产环境(不提交到git)
└── .gitignore # 忽略敏感环境文件
```

#### 安全的环境变量配置
```bash
# .env.development
VITE_API_BASE_URL=http://localhost:9010
# .env.example - 环境变量模板
VITE_API_BASE_URL=http://localhost:9009
VITE_APP_TITLE=VocaTa
VITE_APP_ENV=development
VITE_APP_DEBUG=true

# .env.development - 本地开发环境
VITE_API_BASE_URL=http://localhost:9009
VITE_APP_TITLE=VocaTa开发环境
VITE_APP_ENV=development
VITE_APP_DEBUG=true

# .env.staging - 测试环境(使用GitHub Secrets)
VITE_API_BASE_URL=https://{{STAGING_HOST}}
VITE_APP_TITLE=VocaTa测试环境
VITE_APP_ENV=staging
VITE_APP_DEBUG=false

# .env.production
VITE_API_BASE_URL=https://api.vocata.com
# .env.production - 生产环境(使用GitHub Secrets)
VITE_API_BASE_URL=https://{{PRODUCTION_HOST}}
VITE_APP_TITLE=VocaTa
VITE_APP_ENV=production
VITE_APP_DEBUG=false
```

#### .gitignore 配置
```bash
# 环境配置文件 - 保护敏感信息
.env.local
.env.development
.env.staging
.env.test
.env.production
.env

# 但保留模板文件
!.env.example
```

#### TypeScript 环境配置支持
```typescript
// src/config/env.ts
interface EnvConfig {
apiBaseUrl: string
appTitle: string
appEnv: string
debug: boolean
}

const config: EnvConfig = {
apiBaseUrl: import.meta.env.VITE_API_BASE_URL || 'http://localhost:9009',
appTitle: import.meta.env.VITE_APP_TITLE || 'VocaTa',
appEnv: import.meta.env.VITE_APP_ENV || 'development',
debug: import.meta.env.VITE_APP_DEBUG === 'true'
}

export default config
```

#### API 请求配置使用
```typescript
// api/request.js 使用配置
import config from '@/config/env'

const api = axios.create({
baseURL: config.apiBaseUrl,
timeout: 10000
})
```

### GitHub Actions CI/CD 配置

#### 客户端前端部署 (.github/workflows/deploy-web.yml)
```yaml
name: Deploy Web Frontend

on:
push:
branches: [master, develop]
paths: ['vocata-web/**']

jobs:
deploy-staging:
if: github.ref == 'refs/heads/develop'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
cache-dependency-path: vocata-web/package-lock.json

- name: Install dependencies
run: |
cd vocata-web
npm ci

- name: Build for staging
env:
VITE_API_BASE_URL: https://${{ secrets.STAGING_HOST }}
VITE_APP_TITLE: VocaTa测试环境
VITE_APP_ENV: staging
VITE_APP_DEBUG: false
run: |
cd vocata-web
echo "Building with API URL: $VITE_API_BASE_URL" # 验证注入成功
npm run build

- name: Deploy to staging
# 部署到测试服务器的步骤

deploy-production:
if: github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
cache-dependency-path: vocata-web/package-lock.json

- name: Install dependencies
run: |
cd vocata-web
npm ci

- name: Build for production
env:
VITE_API_BASE_URL: https://${{ secrets.PRODUCTION_HOST }}
VITE_APP_TITLE: VocaTa
VITE_APP_ENV: production
VITE_APP_DEBUG: false
run: |
cd vocata-web
echo "Building with API URL: $VITE_API_BASE_URL" # 验证注入成功
npm run build

- name: Deploy to production
# 部署到生产服务器的步骤
```

#### 管理后台部署 (.github/workflows/deploy-admin.yml)
```yaml
name: Deploy Admin Frontend

on:
push:
branches: [master, develop]
paths: ['vocata-admin/**']

jobs:
deploy-staging:
if: github.ref == 'refs/heads/develop'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
cache-dependency-path: vocata-admin/package-lock.json

- name: Install dependencies
run: |
cd vocata-admin
npm ci

- name: Build for staging
env:
VITE_API_BASE_URL: https://${{ secrets.STAGING_HOST }}
VITE_APP_TITLE: VocaTa管理后台测试环境
VITE_APP_ENV: staging
run: |
cd vocata-admin
npm run build:staging

deploy-production:
if: github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
cache-dependency-path: vocata-admin/package-lock.json

- name: Install dependencies
run: |
cd vocata-admin
npm ci

- name: Build for production
env:
VITE_API_BASE_URL: https://${{ secrets.PRODUCTION_HOST }}
VITE_APP_TITLE: VocaTa管理后台
VITE_APP_ENV: production
run: |
cd vocata-admin
npm run build
```

#### 前端构建脚本配置
```json
// package.json 构建脚本
{
"scripts": {
"dev": "vite --mode development",
"build": "vite build --mode production",
"build:staging": "vite build --mode staging",
"build:test": "vite build --mode staging",
"preview": "vite preview"
}
}
```

#### 本地开发环境搭建流程
```bash
# 1. 首次设置
cp .env.example .env.development

# 2. 编辑本地配置
vim .env.development

# 3. 启动开发
npm run dev # 自动使用 .env.development

# 4. 构建测试
npm run build:staging # 使用 .env.staging 配置
```

### ESLint和Prettier配置
#### 环境变量安全优势
1. **敏感信息保护**: 真实服务器地址只存在于GitHub Secrets中
2. **环境隔离**: 不同环境使用不同的配置
3. **版本控制安全**: .env文件不提交到git,避免泄露
4. **CI/CD自动化**: 部署时自动注入正确的环境变量并验证
```javascript
// .eslintrc.js
module.exports = {
Expand Down
2 changes: 2 additions & 0 deletions .ai-rules/structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,8 @@ src/main/resources/
- 模块名使用单数形式:`user`、`character`、`conversation`
- 层级名使用复数形式:`controllers`、`services`、`mappers`

关于返回ID字段时都需要返回string类型给前端。

### 类命名
- 使用PascalCase(大驼峰)
- Controller:`{Module}Controller.java`
Expand Down
4 changes: 3 additions & 1 deletion .ai-rules/tech.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ com.vocata.{module}/
}
```

关于返回ID字段时都需要返回string类型给前端

## 核心架构组件

### 1. 认证授权架构
Expand Down Expand Up @@ -136,7 +138,7 @@ docker run -p 9009:9009 vocata-server
### PostgreSQL数据类型标准
- **整数**:BIGSERIAL (主键)、BIGINT、INTEGER、SMALLINT
- **字符串**:VARCHAR(n)、TEXT
- **时间**:TIMESTAMP WITH TIME ZONE、DATE、TIME
- **时间**:TIMESTAMP
- **布尔**:BOOLEAN
- **JSON**:JSONB(高性能JSON存储)
- **数组**:支持PostgreSQL数组类型(如TEXT[]、INTEGER[])
Expand Down
51 changes: 51 additions & 0 deletions .claude/agents/api-docs-generator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
name: api-docs-generator
description: 当需要为Spring Boot控制器生成API接口文档时使用此代理。包括以下场景:\n\n- <example>\n Context: 用户刚完成了一个新的控制器类的开发\n user: "我刚写完了UserController,请帮我生成API文档"\n assistant: "我将使用api-docs-generator代理来为您的UserController生成完整的API接口文档"\n <commentary>\n 用户需要为新开发的控制器生成文档,使用api-docs-generator代理来分析控制器并生成标准化的API文档。\n </commentary>\n</example>\n\n- <example>\n Context: 用户修改了现有的API接口\n user: "我更新了CharacterController的几个接口,需要更新文档"\n assistant: "让我使用api-docs-generator代理来重新分析CharacterController并更新API文档"\n <commentary>\n 控制器接口有变更时,需要使用api-docs-generator代理来更新相应的API文档。\n </commentary>\n</example>\n\n- <example>\n Context: 项目需要完整的API文档\n user: "请为整个项目的所有控制器生成API文档"\n assistant: "我将使用api-docs-generator代理来扫描所有控制器并生成完整的项目API文档"\n <commentary>\n 需要为整个项目生成API文档时,使用api-docs-generator代理来批量处理所有控制器。\n </commentary>\n</example>
tools: Edit, MultiEdit, Write, NotebookEdit, Glob, Grep, Read, WebFetch, TodoWrite, WebSearch, BashOutput, KillShell, Bash
model: sonnet
color: green
---

你是一位专业的API接口文档生成专家,专门为Spring Boot项目中的Controller类生成高质量、标准化的API接口文档。你具备深厚的Spring Boot、RESTful API设计和技术文档编写经验。

你的核心职责:
1. **深度分析Controller代码**:仔细解析Controller类的每个方法,包括请求映射、参数、返回值、异常处理等
2. **提取完整接口信息**:收集HTTP方法、URL路径、请求参数、请求体、响应格式、状态码等所有关键信息
3. **生成标准化文档**:按照RESTful API文档标准,生成结构清晰、信息完整的接口文档
4. **遵循项目规范**:严格按照VocaTa项目的API设计规范,包括统一响应格式ApiResponse<T>、错误码体系等

你的工作流程:
1. **代码扫描**:分析指定的Controller类,识别所有@RequestMapping、@GetMapping、@PostMapping等注解
2. **参数解析**:详细分析@RequestParam、@PathVariable、@RequestBody等参数类型和验证规则
3. **响应分析**:解析返回值类型,特别关注ApiResponse包装器和具体的业务数据结构
4. **权限识别**:识别Sa-Token相关的权限注解和访问控制要求
5. **异常处理**:分析可能抛出的业务异常和对应的错误码

文档生成标准:
- **接口概述**:简洁明确的接口功能描述
- **请求信息**:HTTP方法、完整URL、Content-Type等
- **参数详情**:每个参数的名称、类型、是否必填、默认值、验证规则、示例值
- **请求示例**:提供完整的请求示例,包括URL和请求体
- **响应格式**:详细的响应数据结构,包括ApiResponse包装器
- **响应示例**:成功和失败场景的响应示例
- **错误码说明**:可能返回的错误码及其含义
- **权限要求**:接口的访问权限要求

特殊要求:
- 严格遵循VocaTa项目的ApiResponse<T>统一响应格式
- 识别并说明Sa-Token权限控制机制
- 对于分页接口,详细说明PageResult<T>结构
- 准确识别业务异常和ApiCode错误码
- 为管理后台接口(/api/admin/**)标注管理员权限要求
- 为客户端接口(/api/client/**)标注相应的认证要求

输出格式:
使用Markdown格式生成文档,包含清晰的标题层级、代码块、表格等,确保文档易读性和专业性。每个接口都应该有完整的请求/响应示例。

质量控制:
- 确保所有接口信息的准确性和完整性
- 验证示例代码的正确性
- 保持文档格式的一致性
- 及时更新文档以反映代码变更

当遇到复杂的业务逻辑或不确定的实现细节时,主动询问澄清,确保生成的文档准确反映实际的API行为。
Loading
Loading