# ddcat-ai/open-ai-canvas architecture

> Architecture diagram of the GitHub repository ddcat-ai/open-ai-canvas, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ddcat-ai/open-ai-canvas
- Repository: https://github.com/ddcat-ai/open-ai-canvas

## Overview

影策是面向影视与短剧创作的 AI 工作台。主要创作路径是：用户在自由画布和结构化项目中组织剧本、角色、场景及分镜，提交多媒体生成任务，经渠道路由调用模型，随后管理生成素材并编排时间线。图中结合 README 明确描述的前后端分层与主要能力；部分功能实现未抽样，因此相关连线只采用文档明确支持的关系。

Main entry points: [`web/src/application.tsx`](https://github.com/ddcat-ai/open-ai-canvas/blob/main/web/src/application.tsx) (React 工作区), [`backend/internal/app/task_execution.go`](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/task_execution.go) (任务执行), [`backend/internal/app/service.go`](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/service.go) (业务服务), [`backend/internal/app/resource.go`](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/resource.go) (资源管理)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_creation["创作工作区"]
  node_web["React 工作区<br/>[application.tsx]"]
  node_canvas["自由画布"]
  node_project["结构化项目<br/>[project.go]"]
  node_timeline["时间线剪辑"]
end

subgraph group_generation["生成与 Agent"]
  node_task["任务执行<br/>[task_execution.go]"]
  node_generation_engine["生成引擎<br/>[engine.go]"]
  node_provider["模型渠道<br/>[provider.go]"]
  node_agent["云端 Agent<br/>[cloud_agent.go]"]
  node_skills["Agent 技能<br/>[service.go]"]
end

subgraph group_backend["服务端核心"]
  node_api["HTTP 路由<br/>[routes.go]"]
  node_appsvc["业务服务<br/>[service.go]"]
  node_db[("业务数据库<br/>[database.go]")]
end

subgraph group_assets["素材与存储"]
  node_resource["资源管理<br/>[resource.go]"]
  node_storage[("媒体存储<br/>[objects.go]")]
  node_resource_repo[("资源仓储<br/>[repository.go]")]
end

subgraph group_operations["渠道与管理"]
  node_model_router["模型路由<br/>[model_router.go]"]
  node_admin["管理与渠道配置<br/>[admin.go]"]
  node_plugins["支付与协议插件<br/>[registry.go]"]
end

node_creator(("创作者"))
node_external_models{{"外部模型服务"}}

node_creator -->|"创作"| node_web
node_web -->|"组织创作"| node_canvas
node_web -->|"管理项目"| node_project
node_web -->|"调用 API"| node_api
node_api -->|"分发请求"| node_appsvc
node_appsvc -->|"创建任务"| node_task
node_task -->|"执行生成"| node_generation_engine
node_generation_engine -->|"选择模型"| node_model_router
node_model_router -->|"路由请求"| node_provider
node_provider -->|"调用模型"| node_external_models
node_task -->|"保存产物"| node_resource
node_resource -->|"读写媒体"| node_storage
node_resource -->|"读写元数据"| node_resource_repo
node_resource_repo -->|"持久化"| node_db
node_web -->|"编排片段"| node_timeline
node_web -->|"发起对话"| node_agent
node_agent -->|"使用技能"| node_skills
node_appsvc -->|"管理操作"| node_admin
node_admin -.->|"管理插件"| node_plugins
node_admin -->|"查询资源"| node_resource_repo

click node_web "https://github.com/ddcat-ai/open-ai-canvas/blob/main/web/src/application.tsx"
click node_canvas "https://github.com/ddcat-ai/open-ai-canvas/tree/main/web/src/components/canvas"
click node_project "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/project.go"
click node_timeline "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/timeline_render_plan.go"
click node_api "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/handler/routes.go"
click node_appsvc "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/service.go"
click node_task "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/task_execution.go"
click node_generation_engine "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/generation/engine.go"
click node_model_router "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/model_router.go"
click node_provider "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/provider.go"
click node_agent "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/cloud_agent.go"
click node_skills "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/skills/service.go"
click node_resource "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/resource.go"
click node_storage "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/storage/objects.go"
click node_resource_repo "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/repository/repository.go"
click node_db "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/database/database.go"
click node_admin "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/admin.go"
click node_plugins "https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/protocol/registry.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_web,node_canvas,node_project,node_timeline toneBlue
class node_task,node_generation_engine,node_provider,node_agent,node_skills toneAmber
class node_api,node_appsvc,node_db toneMint
class node_resource,node_storage,node_resource_repo toneRose
class node_model_router,node_admin,node_plugins,node_creator,node_external_models toneIndigo
```

## Components

### 创作工作区

- [React 工作区](https://github.com/ddcat-ai/open-ai-canvas/blob/main/web/src/application.tsx): `web/src/application.tsx`
- [自由画布](https://github.com/ddcat-ai/open-ai-canvas/tree/main/web/src/components/canvas): `web/src/components/canvas`
- [结构化项目](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/project.go): `backend/internal/app/project.go`
- [时间线剪辑](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/timeline_render_plan.go): `backend/internal/app/timeline_render_plan.go`

### 生成与 Agent

- [任务执行](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/task_execution.go): `backend/internal/app/task_execution.go`
- [生成引擎](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/generation/engine.go): `backend/internal/generation/engine.go`
- [模型渠道](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/provider.go): `backend/internal/app/provider.go`
- [云端 Agent](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/cloud_agent.go): `backend/internal/app/cloud_agent.go`
- [Agent 技能](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/skills/service.go): `backend/internal/skills/service.go`

### 服务端核心

- [HTTP 路由](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/handler/routes.go): `backend/internal/handler/routes.go`
- [业务服务](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/service.go): `backend/internal/app/service.go`
- [业务数据库](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/database/database.go): `backend/internal/database/database.go`

### 素材与存储

- [资源管理](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/resource.go): `backend/internal/app/resource.go`
- [媒体存储](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/storage/objects.go): `backend/internal/storage/objects.go`
- [资源仓储](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/repository/repository.go): `backend/internal/repository/repository.go`

### 渠道与管理

- [模型路由](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/model_router.go): `backend/internal/app/model_router.go`
- [管理与渠道配置](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/app/admin.go): `backend/internal/app/admin.go`
- [支付与协议插件](https://github.com/ddcat-ai/open-ai-canvas/blob/main/backend/internal/protocol/registry.go): `backend/internal/protocol/registry.go`

### Other components

- **创作者**
- **外部模型服务**

## Connections

- 创作者 → React 工作区: 创作
- React 工作区 → 自由画布: 组织创作
- React 工作区 → 结构化项目: 管理项目
- React 工作区 → HTTP 路由: 调用 API
- HTTP 路由 → 业务服务: 分发请求
- 业务服务 → 任务执行: 创建任务
- 任务执行 → 生成引擎: 执行生成
- 生成引擎 → 模型路由: 选择模型
- 模型路由 → 模型渠道: 路由请求
- 模型渠道 → 外部模型服务: 调用模型
- 任务执行 → 资源管理: 保存产物
- 资源管理 → 媒体存储: 读写媒体
- 资源管理 → 资源仓储: 读写元数据
- 资源仓储 → 业务数据库: 持久化
- React 工作区 → 时间线剪辑: 编排片段
- React 工作区 → 云端 Agent: 发起对话
- 云端 Agent → Agent 技能: 使用技能
- 业务服务 → 管理与渠道配置: 管理操作
- 管理与渠道配置 → 支付与协议插件: 管理插件
- 管理与渠道配置 → 资源仓储: 查询资源
