# aetherno2332/open-ai-canvas4ai architecture

> Architecture diagram of the GitHub repository aetherno2332/open-ai-canvas4ai, 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/aetherno2332/open-ai-canvas4ai
- Repository: https://github.com/aetherno2332/open-ai-canvas4ai

## Overview

影策是面向影视与短剧创作的 AI 工作台。创作者在浏览器中组织自由画布与结构化项目，再提交文本、图片、视频或音频生成任务；后端统一处理任务并通过模型渠道提供结果，资源与时间线支持后续管理和剪辑。主要实现分布在前端工作区、后端 handler/service/repository 与 provider 层。README 描述了总体调用链和能力；未抽样的子系统仅按文档保留，不推断其内部调用。

Main entry points: [`web/src/application.tsx`](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/web/src/application.tsx) (React 工作区), [`backend/internal/app/task_execution.go`](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/task_execution.go) (任务执行), [`backend/internal/handler/creation.go`](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/handler/creation.go) (生成任务 API), [`backend/internal/app/resource.go`](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/resource.go) (资源服务)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_creation["创作工作区"]
  node_workspace["React 工作区<br/>[application.tsx]"]
  node_canvas["自由画布"]
  node_project["项目工作流"]
end

subgraph group_generation["生成与 Agent"]
  node_agent["云端 Agent<br/>[cloud_agent.go]"]
  node_task_api["生成任务 API<br/>[creation.go]"]
  node_task_runtime["任务执行<br/>[task_execution.go]"]
  node_generation_engine["生成引擎<br/>[engine.go]"]
  node_provider["模型渠道<br/>[provider.go]"]
end

subgraph group_assets["素材与剪辑"]
  node_assets_ui["素材管理界面"]
  node_image_storage["图片资源客户端<br/>[image-storage.ts]"]
  node_resource_api["资源接口"]
  node_resource_service["资源服务<br/>[resource.go]"]
  node_object_storage[("对象存储<br/>[objects.go]")]
  node_timeline["时间线剪辑"]
end

subgraph group_backend["后端服务"]
  node_api_handlers["HTTP 路由处理<br/>[routes.go]"]
  node_app_services["应用服务<br/>[service.go]"]
  node_repositories["数据仓库<br/>[repository.go]"]
  node_database[("业务数据库<br/>[database.go]")]
end

subgraph group_operations["平台管理"]
  node_admin_ui["管理后台"]
  node_admin_handlers["管理接口<br/>[admin_storage.go]"]
  node_storage_config["存储配置服务"]
end

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

node_creator -->|"使用"| node_workspace
node_workspace -->|"组织创作"| node_canvas
node_workspace -->|"管理项目"| node_project
node_canvas -->|"提交生成"| node_task_api
node_project -->|"提交任务"| node_task_api
node_workspace -->|"发起对话"| node_agent
node_task_api -->|"委派执行"| node_task_runtime
node_task_runtime -->|"请求生成"| node_generation_engine
node_generation_engine -->|"选择渠道"| node_provider
node_provider -->|"调用模型"| node_external_models
node_task_runtime -->|"保存产物"| node_resource_service
node_assets_ui -->|"上传与读取"| node_image_storage
node_image_storage -->|"传输资源"| node_resource_api
node_resource_api -->|"处理请求"| node_resource_service
node_resource_service -->|"读写对象"| node_object_storage
node_workspace -->|"剪辑素材"| node_timeline
node_workspace -->|"请求 API"| node_api_handlers
node_api_handlers -->|"调用服务"| node_app_services
node_app_services -->|"读写数据"| node_repositories
node_repositories -->|"查询持久化"| node_database
node_admin_ui -->|"管理请求"| node_admin_handlers
node_admin_handlers -->|"调用服务"| node_app_services
node_admin_ui -->|"配置存储"| node_storage_config
node_storage_config -->|"保存配置"| node_repositories

click node_workspace "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/web/src/application.tsx"
click node_canvas "https://github.com/aetherno2332/open-ai-canvas4ai/tree/main/web/src/components/canvas"
click node_project "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/project_workflow.go"
click node_agent "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/cloud_agent.go"
click node_task_api "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/handler/creation.go"
click node_task_runtime "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/task_execution.go"
click node_generation_engine "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/generation/engine.go"
click node_provider "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/provider.go"
click node_assets_ui "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/web/src/components/asset-media-preview.tsx"
click node_image_storage "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/web/src/services/image-storage.ts"
click node_resource_api "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/handler/resource_delivery.go"
click node_resource_service "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/resource.go"
click node_object_storage "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/storage/objects.go"
click node_timeline "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/timeline_render_plan.go"
click node_api_handlers "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/handler/routes.go"
click node_app_services "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/service.go"
click node_repositories "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/repository/repository.go"
click node_database "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/database/database.go"
click node_admin_ui "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/web/src/pages/admin/settings/storage-settings-page.tsx"
click node_admin_handlers "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/handler/admin_storage.go"
click node_storage_config "https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/storage_location.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_workspace,node_canvas,node_project toneBlue
class node_agent,node_task_api,node_task_runtime,node_generation_engine,node_provider toneAmber
class node_assets_ui,node_image_storage,node_resource_api,node_resource_service,node_object_storage,node_timeline toneMint
class node_api_handlers,node_app_services,node_repositories,node_database toneRose
class node_admin_ui,node_admin_handlers,node_storage_config,node_creator,node_external_models toneIndigo
```

## Components

### 创作工作区

- [React 工作区](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/web/src/application.tsx): `web/src/application.tsx`
- [自由画布](https://github.com/aetherno2332/open-ai-canvas4ai/tree/main/web/src/components/canvas): `web/src/components/canvas`
- [项目工作流](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/project_workflow.go): `backend/internal/app/project_workflow.go`

### 生成与 Agent

- [云端 Agent](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/cloud_agent.go): `backend/internal/app/cloud_agent.go`
- [生成任务 API](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/handler/creation.go): `backend/internal/handler/creation.go`
- [任务执行](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/task_execution.go): `backend/internal/app/task_execution.go`
- [生成引擎](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/generation/engine.go): `backend/internal/generation/engine.go`
- [模型渠道](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/provider.go): `backend/internal/app/provider.go`

### 素材与剪辑

- [素材管理界面](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/web/src/components/asset-media-preview.tsx): `web/src/components/asset-media-preview.tsx`
- [图片资源客户端](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/web/src/services/image-storage.ts): `web/src/services/image-storage.ts`
- [资源接口](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/handler/resource_delivery.go): `backend/internal/handler/resource_delivery.go`
- [资源服务](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/resource.go): `backend/internal/app/resource.go`
- [对象存储](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/storage/objects.go): `backend/internal/storage/objects.go`
- [时间线剪辑](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/timeline_render_plan.go): `backend/internal/app/timeline_render_plan.go`

### 后端服务

- [HTTP 路由处理](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/handler/routes.go): `backend/internal/handler/routes.go`
- [应用服务](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/service.go): `backend/internal/app/service.go`
- [数据仓库](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/repository/repository.go): `backend/internal/repository/repository.go`
- [业务数据库](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/database/database.go): `backend/internal/database/database.go`

### 平台管理

- [管理后台](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/web/src/pages/admin/settings/storage-settings-page.tsx): `web/src/pages/admin/settings/storage-settings-page.tsx`
- [管理接口](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/handler/admin_storage.go): `backend/internal/handler/admin_storage.go`
- [存储配置服务](https://github.com/aetherno2332/open-ai-canvas4ai/blob/main/backend/internal/app/storage_location.go): `backend/internal/app/storage_location.go`

### Other components

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

## Connections

- 创作者 → React 工作区: 使用
- React 工作区 → 自由画布: 组织创作
- React 工作区 → 项目工作流: 管理项目
- 自由画布 → 生成任务 API: 提交生成
- 项目工作流 → 生成任务 API: 提交任务
- React 工作区 → 云端 Agent: 发起对话
- 生成任务 API → 任务执行: 委派执行
- 任务执行 → 生成引擎: 请求生成
- 生成引擎 → 模型渠道: 选择渠道
- 模型渠道 → 外部模型服务: 调用模型
- 任务执行 → 资源服务: 保存产物
- 素材管理界面 → 图片资源客户端: 上传与读取
- 图片资源客户端 → 资源接口: 传输资源
- 资源接口 → 资源服务: 处理请求
- 资源服务 → 对象存储: 读写对象
- React 工作区 → 时间线剪辑: 剪辑素材
- React 工作区 → HTTP 路由处理: 请求 API
- HTTP 路由处理 → 应用服务: 调用服务
- 应用服务 → 数据仓库: 读写数据
- 数据仓库 → 业务数据库: 查询持久化
- 管理后台 → 管理接口: 管理请求
- 管理接口 → 应用服务: 调用服务
- 管理后台 → 存储配置服务: 配置存储
- 存储配置服务 → 数据仓库: 保存配置
