Files
mirageai/docs/ARCHITECTURE.md
T
2026-05-13 21:58:19 +08:00

6.3 KiB
Raw Blame History

waoowaoo 技术架构说明

本文档描述仓库当前的整体技术架构、运行时拓扑与主要模块职责,便于新成员理解与运维部署对照。


1. 产品定位

waoowaoo 是一款面向「小说 / 剧本 → 分镜、角色、场景 → 配音 → 成片」的 AI 影视创作 Web 应用。用户在浏览器中管理项目与创作流程;长耗时生成与第三方 AI 调用主要在服务端与独立 Worker 进程中异步完成。


2. 运行时拓扑(多进程)

生产与本地开发均采用 Next.js Web 进程 + 多个常驻 Node 进程(见根目录 package.jsondev / start 脚本,由 concurrently 编排):

进程 说明
Next.js next dev / next startApp Router 页面、src/app/api/** 的 HTTP API、SSR
BullMQ Workers src/lib/workers/index.ts:消费 Redis 队列,处理图片 / 视频 / 语音 / 文本等任务
Watchdog scripts/watchdog.ts:队列与健康类辅助脚本
Bull Board scripts/bull-board.ts:队列可视化(Express

基础设施docker-compose.yml 与典型自建环境):

  • MySQL 8:业务与任务相关持久化(Prisma
  • Redis 7BullMQ 队列与部分运行时状态
  • 对象存储:默认 MinIOS3 兼容);亦可对接 AWS S3、腾讯云 COS 等(见依赖与 STORAGE_TYPE

3. 逻辑分层示意

flowchart TB
  subgraph client [浏览器]
    UI[Next App Router + React]
    RQ[TanStack Query]
  end

  subgraph next [Next.js 进程]
    API[src/app/api]
    Auth[NextAuth]
    Prisma[Prisma Client]
  end

  subgraph infra [基础设施]
    MySQL[(MySQL)]
    Redis[(Redis)]
    S3[(对象存储 S3 兼容)]
  end

  subgraph workers [Worker 进程]
    W[BullMQ Workers]
    Gen[Generators / Providers]
  end

  UI --> RQ --> API
  API --> Auth
  API --> Prisma --> MySQL
  API --> Redis
  API --> S3
  W --> Redis
  W --> Gen
  W --> Prisma
  W --> S3
  Gen --> Ext[外部 AI / 媒体 API]

4. 前端技术栈

领域 技术
框架 Next.js 15App Router)、React 19
构建 / 开发 Turbopacknext dev --turbopack)、TypeScript
国际化 next-intlsrc/middleware.tssrc/i18n.ts 配置 localePrefix: 'always'(路径如 /zh/.../en/...
服务端状态 TanStack React Query@tanstack/react-query
交互 @dnd-kit(拖拽排序等)
视频 / 时间线 Remotionremotion@remotion/player@remotion/cli
样式 Tailwind CSS v4Geist 字体、lucide-react

页面与业务模块主要位于 src/app/[locale]/...,其中 novel-promotion(小说推广 / 分镜工作流)与 asset-hub(资产库)等为核心业务区。


5. 后端与数据层

领域 技术
API Route Handlerssrc/app/api/**(与前端同仓部署)
ORM / 数据库 Prisma 6 + MySQLprisma/schema.prisma
认证 NextAuth v4 + @next-auth/prisma-adapter

数据模型围绕用户、项目、分集、分镜、角色、场景、媒体对象、异步任务与计费等展开,体量较大,属于典型创作类 SaaS 模型。


6. 异步任务与媒体管线

  • 队列BullMQ + ioredis
  • Worker 拆分src/lib/workers/ 下按领域划分(如 image.workervideo.workervoice.workertext.worker),具体任务逻辑在 src/lib/workers/handlers/**
  • 设计意图:HTTP 请求负责校验、落库、入队;长耗时生成在 Worker 中执行,避免 Next 请求超时,并便于重试与监控。

7. AI 与多厂商集成

  • 抽象方式src/lib/generators/** 以工厂(如 factory.ts)按 provider 选择图片 / 视频 / 音频生成器;与用户或系统级 api-config、模型网关等配合。
  • 依赖生态(节选)Vercel AI SDKai@ai-sdk/*)、OpenAIGoogle GenAIOpenRouterFAL 等;另有 src/lib/providers/** 等官方或兼容网关封装。
  • 治理package.json 中大量 scripts/guards/*check:*,用于约束 API 层不直连 LLM、模型能力不落硬编码、路由与计费契约等,体现「配置中心 + 契约 / 静态检查」的工程策略。

8. 存储与文件

  • 初始化npm run storage:initsrc/lib/storage/init.ts
  • 后端src/lib/storage 抽象多后端;支持 MinIO / S3 / COS 等,与 Docker 环境变量(如 STORAGE_TYPEMINIO_*)对齐。
  • 媒体引用:数据库中记录存储键或媒体对象关联,Worker 上传后回写。

9. 工程化与质量

类型 说明
类型检查 npm run typechecktsc --noEmit
Lint ESLinteslint-config-next
测试 Vitesttests/unittests/integrationapi / provider / chain / task)、tests/systemtests/regression;计费有专项单测与并发测
Git 钩子 Huskyprepare 脚本)
脚本门禁 大量 check:*test:guards 聚合,与 CI / 本地校验流程配合

10. 目录与模块速查(开发向)

路径 职责
src/app/[locale]/ 国际化下的页面与布局
src/app/api/ HTTP API
src/lib/workers/ 队列 Worker 入口与任务处理器
src/lib/generators/ 各厂商图片 / 视频 / 音频生成器与工厂
src/lib/prisma.ts Prisma 客户端单例等
src/lib/query/ React Query 封装、mutation、keys
prisma/ Schema 与迁移
messages/ next-intl 文案(如 zhen
scripts/ 运维脚本、守卫脚本、迁移脚本
tests/ 各类自动化测试

11. 一句话总结

本项目采用 「Next 全栈单体 + Prisma/MySQL + Redis/BullMQ 异步 Worker + S3 兼容对象存储 + 多厂商生成器工厂」 架构:Web 负责交互与编排,队列 Worker 承载重任务与多模型调用,并通过 守卫脚本与测试 将模型与路由约束在可维护的配置与契约之内。


12. 文档维护

架构随版本迭代会变化;若重大变更(如队列方案、数据库、部署拓扑),请同步更新本文件并在 PR 中说明变更要点。