From eee3206e90cef38c80f1f815b62ba41f7d9e617d Mon Sep 17 00:00:00 2001 From: wing <10123261+rattan-xiamingrui@user.noreply.gitee.com> Date: Wed, 19 Nov 2025 00:15:18 +0800 Subject: [PATCH] send-stream --- CLAUDE.md | 511 +++++++++++ frontend/app/web-gold/src/api/mix.js | 46 + frontend/app/web-gold/src/api/voice.js | 110 +++ .../tik/voice/client/CosyVoiceClient.java | 178 ++++ .../tik/voice/client/LatentsyncClient.java | 141 +++ .../voice/client/dto/CosyVoiceTtsRequest.java | 54 ++ .../voice/client/dto/CosyVoiceTtsResult.java | 37 + .../client/dto/LatentsyncSubmitRequest.java | 34 + .../client/dto/LatentsyncSubmitResponse.java | 39 + .../tik/voice/config/CosyVoiceProperties.java | 74 ++ .../voice/config/LatentsyncProperties.java | 78 ++ .../AppTikLatentsyncController.java | 38 + .../controller/AppTikUserVoiceController.java | 95 ++ .../voice/dal/dataobject/TikUserVoiceDO.java | 59 ++ .../voice/dal/mysql/TikUserVoiceMapper.java | 26 + .../tik/voice/service/LatentsyncService.java | 20 + .../voice/service/LatentsyncServiceImpl.java | 42 + .../voice/service/TikUserVoiceService.java | 75 ++ .../service/TikUserVoiceServiceImpl.java | 864 ++++++++++++++++++ .../voice/util/ByteArrayMultipartFile.java | 69 ++ .../voice/vo/AppTikLatentsyncSubmitReqVO.java | 37 + .../vo/AppTikLatentsyncSubmitRespVO.java | 22 + .../voice/vo/AppTikUserVoiceCreateReqVO.java | 38 + .../voice/vo/AppTikUserVoicePageReqVO.java | 23 + .../tik/voice/vo/AppTikUserVoiceRespVO.java | 48 + .../voice/vo/AppTikUserVoiceUpdateReqVO.java | 36 + .../tik/voice/vo/AppTikVoicePreviewReqVO.java | 43 + .../voice/vo/AppTikVoicePreviewRespVO.java | 26 + .../tik/voice/vo/AppTikVoiceTtsReqVO.java | 46 + .../tik/voice/vo/AppTikVoiceTtsRespVO.java | 29 + .../service/LatentsyncServiceImplTest.java | 62 ++ 31 files changed, 3000 insertions(+) create mode 100644 CLAUDE.md create mode 100644 frontend/app/web-gold/src/api/mix.js create mode 100644 frontend/app/web-gold/src/api/voice.js create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/client/CosyVoiceClient.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/client/LatentsyncClient.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/client/dto/CosyVoiceTtsRequest.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/client/dto/CosyVoiceTtsResult.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/client/dto/LatentsyncSubmitRequest.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/client/dto/LatentsyncSubmitResponse.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/config/CosyVoiceProperties.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/config/LatentsyncProperties.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/controller/AppTikLatentsyncController.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/controller/AppTikUserVoiceController.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/dal/dataobject/TikUserVoiceDO.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/dal/mysql/TikUserVoiceMapper.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/service/LatentsyncService.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/service/LatentsyncServiceImpl.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/service/TikUserVoiceService.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/service/TikUserVoiceServiceImpl.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/util/ByteArrayMultipartFile.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/vo/AppTikLatentsyncSubmitReqVO.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/vo/AppTikLatentsyncSubmitRespVO.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/vo/AppTikUserVoiceCreateReqVO.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/vo/AppTikUserVoicePageReqVO.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/vo/AppTikUserVoiceRespVO.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/vo/AppTikUserVoiceUpdateReqVO.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/vo/AppTikVoicePreviewReqVO.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/vo/AppTikVoicePreviewRespVO.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/vo/AppTikVoiceTtsReqVO.java create mode 100644 yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/voice/vo/AppTikVoiceTtsRespVO.java create mode 100644 yudao-module-tik/src/test/java/cn/iocoder/yudao/module/tik/voice/service/LatentsyncServiceImplTest.java diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000000..d27ddc69a1 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,511 @@ +# CLAUDE.md + +本文档为 Claude Code (claude.ai/code) 在此仓库中处理代码提供指导。 + +## 项目概览 + +**Yudao(芋道)** - 基于 Spring Boot 的快速开发平台,采用多模块架构。这是 Yudao 平台的 AI/媒体重点部署版本,具备数字人生成、语音克隆、视频混剪和内容分析能力。 + +### 核心技术栈 + +**后端:** +- Java 17 + Spring Boot 3.5.5 +- Maven 构建管理 +- MyBatis Plus 3.5.14 + Dynamic Datasource ORM +- Redis + Redisson 缓存 +- Spring Security 6.5.2 认证 +- Flowable 7.0.1 工作流 +- Springdoc/OpenAPI 文档 + +**前端:** +- Vue.js 3.5.22 + Composition API +- Vite 7.1.7 构建工具 +- Ant Design Vue 4.2.6 UI组件 +- TypeScript 类型安全 +- Pinia 3.0.3 状态管理 +- TailwindCSS 4.1.14 样式 + +**数据库与基础设施:** +- MySQL 8.0+(主要) +- 支持 PostgreSQL、Oracle、SQL Server、DM、KingbaseES、OpenGauss、TiDB +- Redis 缓存 +- Docker 容器化 + +## 项目结构 + +``` +/d/projects/sionrui/ +├── yudao-dependencies/ # Maven 依赖版本管理 +├── yudao-framework/ # 框架组件和 Spring Boot 启动器 +├── yudao-server/ # 主应用服务器(端口 9900) +├── yudao-module-system/ # 系统管理(用户、角色、权限) +├── yudao-module-infra/ # 基础设施(文件、配置、任务) +├── yudao-module-member/ # 会员中心 +├── yudao-module-pay/ # 支付系统 +├── yudao-module-ai/ # AI/ML 功能(聊天、图像、知识、音乐) +├── yudao-module-tik/ # Tik/媒体模块(语音克隆、头像、视频) +├── frontend/app/web-gold/ # Vue.js 前端 +├── sql/ # 数据库模式 +├── script/ # 构建和部署脚本 +└── docs/ # 文档 +``` + +## 常用开发命令 + +### 后端(Maven) + +**构建和运行:** +```bash +# 构建项目 +mvn clean package -DskipTests + +# 运行特定模块的测试 +mvn test -pl yudao-module-tik + +# 启动服务器 +cd yudao-server && mvn spring-boot:run -Dspring-boot.run.profiles=local + +# 使用特定配置构建 +mvn clean package -Pdev -DskipTests +``` + +**代码生成:** +- 内置 CRUD 操作代码生成器 +- 生成 Java、Vue、SQL 脚本和 API 文档 +- 支持单表、树表、主子表模式 + +### 前端(Vue.js) + +**开发:** +```bash +cd frontend/app/web-gold + +# 安装依赖 +npm install + +# 启动开发服务器(代理到后端 9900 端口) +npm run dev + +# 生产构建 +npm run build + +# 代码检查 +npm run lint + +# 代码格式化 +npm run format +``` + +**可用脚本:** +- `dev` - 带热重载的开发服务器 +- `build` - 生产构建 +- `preview` - 预览生产构建 +- `lint:oxlint` - 运行 OxLint 并自动修复 +- `lint:eslint` - 运行 ESLint 并自动修复 +- `lint` - 运行所有检查器 +- `format` - 使用 Prettier 格式化代码 + +### Docker + +**使用 Docker Compose:** +```bash +# 启动所有服务(MySQL、Redis、Server、Admin) +cd script/docker +docker-compose up -d + +# 启动特定服务 +docker-compose up -d mysql redis +``` + +**手动 Docker 构建:** +```bash +# 后端 +cd yudao-server +docker build -t yudao-server . + +# 前端 +cd frontend/app/web-gold +docker build -t web-gold . +``` + +## 模块架构 + +### 后端模块结构模式 + +每个模块都遵循一致的分层架构: +``` +module/ +├── controller/ # REST 控制器(admin-api/、app/) +├── service/ # 业务逻辑 + 接口 +│ ├── {Xxx}Service.java # 接口 +│ └── {Xxx}ServiceImpl.java # 实现 +├── dal/ # 数据访问层 +│ ├── mysql/ # MyBatis Mappers 和 DO 类 +│ └── redis/ # Redis 操作 +├── client/ # 外部 API 客户端 +├── config/ # 配置类 +├── util/ # 工具类 +└── vo/ # 值对象 + ├── {Xxx}SaveReqVO.java # 创建请求 + ├── {Xxx}PageReqVO.java # 分页请求 + ├── {Xxx}UpdateReqVO.java # 更新请求 + └── {Xxx}RespVO.java # 响应 +``` + +**核心模块:** + +1. **yudao-module-tik** - 媒体/AI 功能 + - `voice/` - 语音克隆(CosyVoice、Latentsync) + - `file/` - 带 OSS 集成的文件管理 + - `chat/` - 对话管理 + - `media/` - 媒体处理 + - `quota/` - 配额管理 + +2. **yudao-module-ai** - AI/ML 能力 + - 聊天补全 API + - 图像生成(Midjourney) + - 音乐生成(Suno) + - 带向量搜索的知识库 + +3. **yudao-module-system** - 核心系统功能 + - 用户/角色/权限管理 + - 多租户支持 + - 审计日志 + +### 前端结构 + +``` +frontend/app/web-gold/src/ +├── api/ # API 服务层 +│ ├── axios/ # Axios 拦截器 +│ ├── voice.js # 语音相关 API +│ └── mix.js # 视频混剪 API +├── components/ # 可复用 Vue 组件 +├── router/ +│ └── index.js # Vue Router 配置 +├── stores/ +│ └── voiceCopy.js # Pinia 状态管理 +├── views/ +│ ├── dh/ # 数字人功能 +│ │ ├── Avatar.vue +│ │ ├── Video.vue +│ │ └── VoiceCopy.vue +│ ├── material/ # 素材库 +│ └── content-style/# 内容分析 +└── utils/ + └── video-cover.ts # 工具函数 +``` + +**核心路由:** +- `/digital-human/*` - 语音克隆、头像、视频生成 +- `/content-style/*` - 内容分析和基准测试 +- `/trends/*` - 趋势分析 +- `/material/*` - 素材库管理 + +## 配置 + +### 后端配置文件 + +**主配置:** `yudao-server/src/main/resources/application.yaml` +- Spring Boot 配置 +- 数据库连接 +- Redis 设置 +- 安全设置 +- 多租户配置 +- AI 服务 API 密钥 + +**本地开发:** `yudao-server/src/main/resources/application-local.yaml` +- 本地开发覆盖 +- 数据库:`jdbc:mysql://8.155.172.147:3306/sion_rui_dev` +- Redis:`8.155.172.147:6379` +- 端口:9900 + +**配置环境:** +- `local` - 开发(端口 9900) +- `dev` - 开发服务器 +- `prod` - 生产 + +### 前端配置 + +**Vite 配置:** `frontend/app/web-gold/vite.config.js` +- 开发服务器代理到后端 +- 构建配置 +- 插件设置 + +**API 代理:** +- 开发服务器将 `/admin-api` 和 `/api` 代理到 `http://localhost:9900` + +## 数据库模式 + +**位置:** `sql/mysql/` +- 主模式:`ruoyi-vue-pro.sql` (949KB) +- Quartz:`quartz.sql` 用于定时任务 +- 模块特定迁移在各模块文件夹中 + +**模式更新:** +- 将 SQL 迁移添加到 `sql/mysql/` +- 遵循命名约定:`V{version}__{description}.sql` + +## API 文档 + +- **Swagger UI:** `http://localhost:9900/swagger-ui.html` +- **API 文档:** `http://localhost:9900/v3/api-docs` + +**API 路径约定:** +- 管理 API:`/admin-api/{module}/{resource}` +- 应用 API:`/api/{module}/{resource}` +- CRUD 端点: + - 创建:`POST /module/resource/create` + - 更新:`PUT /module/resource/update` + - 删除:`DELETE /module/resource/delete` + - 查询:`GET /module/resource/get?id=xxx` + - 分页:`GET /module/resource/page` + +## 代码风格与规范 + +### 后端(Java) + +**架构层:** +1. **Controller** - 请求处理、验证、调用 Service +2. **Service** - 业务逻辑、事务管理 +3. **Mapper** - 使用 MyBatis Plus 进行数据访问 +4. **VO** - API 请求/响应对象 +5. **DO** - 映射到数据库表的数据对象 + +**关键规范:** +- Mapper 接口继承 `BaseMapperX` +- DO 类继承 `BaseDO` 或 `TenantBaseDO` 以支持多租户 +- 使用 `@PreAuthorize` 进行权限控制 +- 统一使用 `CommonResult` 作为 API 响应 +- Service 方法使用 `@Transactional` 进行写操作 +- 异常代码在 `ErrorCodeConstants` 中,格式为:`MODULE_RESOURCE_ACTION_ERROR` + +**命名规范:** +- Controller:`{Xxx}Controller` 或 `App{Xxx}Controller` +- Service:`{Xxx}Service` 和 `{Xxx}ServiceImpl` +- Mapper:`{Xxx}Mapper` +- VO:`{Xxx}SaveReqVO`、`{Xxx}PageReqVO`、`{Xxx}RespVO` +- DO:`{Xxx}DO` + +### 前端(Vue.js) + +**关键模式:** +- Composition API + `