# YaoAI Video

YaoAI Video 是一个面向 AI 漫剧、短剧与视频内容生产的创作平台仓库，当前采用单仓库结构，保留前端应用与后端服务两部分，方便持续开发、部署和项目展示。

项目目标是把“从剧本到视频”的关键流程串起来，包括项目管理、角色与场景生成、分镜生成、素材管理、Agent 工作流，以及最终的视频任务编排与输出。

仓库地址：

`https://github.com/yaoke602/yaoai-video`

## 核心能力

- AI 漫剧 / 短剧生产后台
- 项目、角色、场景、道具、分镜等内容管理
- AI 生成任务编排与状态追踪
- 多模块 Spring Boot 后端服务
- Vite 前端工作台
- Docker 一键打包与部署

## 仓库结构

```text
.
|-- doc/html                  # 前端工程（Vite）
|-- yaoai-comic-studio        # 后端工程（Spring Boot 多模块）
|-- docker-compose.yml        # 根目录发布态部署编排
`-- .env.example              # 发布态环境变量模板
```

## 技术栈

- 前端：Vite、React、TypeScript、MUI、TanStack Query、Zustand
- 后端：Java 17、Spring Boot 3、MyBatis-Plus、Flyway、Redis
- 基础设施：MySQL、Redis、Docker Compose、Nginx
- AI / 媒体：火山引擎 Ark、TOS、FFmpeg

## 本地开发

当前项目保留了已经跑通的开发方式，建议按下面顺序启动。

1. 启动后端依赖服务

```bash
cd yaoai-comic-studio
docker compose up -d
```

2. 编译后端

```bash
cd yaoai-comic-studio
mvn package -pl yaoai-bootstrap -am -DskipTests
```

3. 启动后端服务

```bash
cd yaoai-comic-studio
java -jar yaoai-bootstrap\target\yaoai-bootstrap-0.1.0-SNAPSHOT.jar
```

4. 启动前端开发服务

```bash
cd doc/html
npm install
npm run dev
```

默认开发访问地址：

- 前端：`http://localhost:5173`
- 管理端：`http://localhost:5174`
- 后端：`http://localhost:8081`
- Swagger：`http://localhost:8081/swagger-ui/index.html`

## Docker 一键部署

根目录的 `docker-compose.yml` 用于发布态部署，会同时构建前端和后端镜像，并启动 MySQL 与 Redis。

1. 复制环境变量模板

```bash
cp .env.example .env
```

2. 按需填写 `.env`

至少建议检查这些配置：

- `MYSQL_ROOT_PASSWORD`
- `MYSQL_PASSWORD`
- `VOLCENGINE_ARK_API_KEY`
- `VOLCENGINE_TOS_ACCESS_KEY`
- `VOLCENGINE_TOS_SECRET_KEY`
- `VOLCENGINE_TOS_BUCKET`

3. 启动发布态服务

```bash
docker compose up -d --build
```

默认部署访问地址：

- 前端：`http://localhost:3000`
- 管理端：`http://localhost:3001`
- 后端：`http://localhost:28081`
- Swagger：`http://localhost:28081/swagger-ui/index.html`
- MySQL：`localhost:23306`
- Redis：`localhost:26379`

说明：

- 前端容器内部使用 Nginx 托管打包后的页面，并将 `/api` 反向代理到后端容器。
- 当前前端 Nginx 已配置 `100MB` 上传限制，与后端 `multipart` 配置保持一致，适合脚本、素材等较大的上传请求。
- 根目录发布态默认使用独立端口：`MySQL 23306`、`Redis 26379`、`后端 28081`，可以和开发态同时保留。
- 当前 Docker 基础镜像已切换到更适合当前网络环境的镜像源，减少拉取失败概率。

## 双环境稳定使用

如果你需要同时保留“开发态”和“本地发布态”，请固定按下面方式使用，不要混用入口。

开发态：

- 入口：`yaoai-comic-studio/docker-compose.yml`
- 用途：本地开发后端、前端、管理端
- 数据库：`localhost:13306`
- Redis：`localhost:16379`
- 后端：`http://localhost:8081`
- 前端：`http://localhost:5173`
- 管理端：`http://localhost:5174`
- 启动脚本：`./start-dev.ps1`

本地发布态：

- 入口：根目录 `docker-compose.yml`
- 用途：本地模拟完整部署
- 数据库：`localhost:23306`
- Redis：`localhost:26379`
- 后端：`http://localhost:28081`
- 前端：`http://localhost:3000`
- 管理端：`http://localhost:3001`
- 启动脚本：`./start-prod-local.ps1`

稳定规则：

- 开发态和本地发布态是两套独立数据库，不共享数据。
- 启动前先确认自己要进哪套环境，不要把两套环境当成同一份数据。
- 不要执行 `docker compose down -v`，否则会删除对应环境的数据卷。
- 前端登录态会缓存到浏览器，切环境时建议使用不同浏览器配置文件或无痕窗口，避免把本地缓存误判成数据库数据。

## 关键文件

- `docker-compose.yml`：发布态部署入口
- `yaoai-comic-studio/docker-compose.yml`：开发态依赖服务编排
- `start-dev.ps1`：开发态启动入口说明脚本
- `start-prod-local.ps1`：本地发布态启动入口脚本
- `doc/html/Dockerfile`：前端镜像构建
- `doc/html/nginx.conf`：前端反向代理与上传限制配置
- `yaoai-comic-studio/Dockerfile`：后端镜像构建
- `.env.example`：发布态环境变量模板

## 当前状态

- 仓库已经整理为“前端 + 后端”双工程结构
- GitHub 远程仓库已完成同步
- 根目录发布态镜像构建链路已验证通过
- 双环境默认端口已分离，可同时保留但应按固定入口使用
