# 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 + `