Files
BossAI/plan/2026-05-18-comfyui-video-assistant-saas.md
T
boos f2434e725d feat: ComfyUI video assistant SaaS plan + shared types cleanup
- Add plan/2026-05-18-comfyui-video-assistant-saas.md (gpt-5.5 generated)
- Add src/server/ and src/shared/ type definitions
- Update comfyui routes and api_key auth
- Remove old metapi docs, deploy/k3s, and deprecated configs
2026-05-18 11:28:20 +08:00

9.9 KiB
Raw Blame History

内置 ComfyUI 视频助手 + SaaS 多租户方案

生成: gpt-5.5 via api.boos.lat | 2026-05-18


1. 数据表设计 (SQLite migrations)

1.1 tenants 租户

CREATE TABLE tenants (
  id TEXT PRIMARY KEY,
  name TEXT NOT NULL,
  slug TEXT UNIQUE NOT NULL,
  plan TEXT NOT NULL DEFAULT 'free',
  status TEXT NOT NULL DEFAULT 'active',
  owner_user_id TEXT NOT NULL,
  settings TEXT NOT NULL DEFAULT '{}',
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
  updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);

1.2 tenant_members 租户成员

CREATE TABLE tenant_members (
  id TEXT PRIMARY KEY,
  tenant_id TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
  user_id TEXT NOT NULL,
  role TEXT NOT NULL DEFAULT 'member',
  status TEXT NOT NULL DEFAULT 'active',
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
  UNIQUE(tenant_id, user_id)
);

1.3 subscriptions 订阅与额度

CREATE TABLE subscriptions (
  id TEXT PRIMARY KEY,
  tenant_id TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
  plan TEXT NOT NULL,
  status TEXT NOT NULL DEFAULT 'active',
  monthly_generations_limit INTEGER NOT NULL DEFAULT 100,
  monthly_video_seconds_limit INTEGER NOT NULL DEFAULT 300,
  storage_bytes_limit INTEGER NOT NULL DEFAULT 5368709120,
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
  updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);

1.4 usage_counters 用量统计

CREATE TABLE usage_counters (
  id TEXT PRIMARY KEY,
  tenant_id TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
  period TEXT NOT NULL,
  generations_used INTEGER NOT NULL DEFAULT 0,
  video_seconds_used INTEGER NOT NULL DEFAULT 0,
  storage_bytes_used INTEGER NOT NULL DEFAULT 0,
  ai_tokens_used INTEGER NOT NULL DEFAULT 0,
  updated_at TEXT NOT NULL DEFAULT (datetime('now')),
  UNIQUE(tenant_id, period)
);

1.5 comfy_workflows 工作流模板

CREATE TABLE comfy_workflows (
  id TEXT PRIMARY KEY,
  tenant_id TEXT REFERENCES tenants(id) ON DELETE CASCADE,
  name TEXT NOT NULL,
  description TEXT,
  type TEXT NOT NULL DEFAULT 'video',
  visibility TEXT NOT NULL DEFAULT 'private',
  workflow_json TEXT NOT NULL,
  input_schema TEXT NOT NULL DEFAULT '{}',
  version INTEGER NOT NULL DEFAULT 1,
  is_default INTEGER NOT NULL DEFAULT 0,
  created_by TEXT,
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
  updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);

1.6 video_jobs 视频任务

CREATE TABLE video_jobs (
  id TEXT PRIMARY KEY,
  tenant_id TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
  user_id TEXT,
  workflow_id TEXT REFERENCES comfy_workflows(id),
  status TEXT NOT NULL DEFAULT 'queued',
  priority INTEGER NOT NULL DEFAULT 100,
  prompt TEXT,
  negative_prompt TEXT,
  params TEXT NOT NULL DEFAULT '{}',
  comfy_prompt_id TEXT,
  progress REAL NOT NULL DEFAULT 0,
  error_message TEXT,
  result_asset_id TEXT,
  estimated_video_seconds INTEGER DEFAULT 0,
  actual_video_seconds INTEGER DEFAULT 0,
  started_at TEXT,
  completed_at TEXT,
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
  updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);

1.7 assets 文件资产

CREATE TABLE assets (
  id TEXT PRIMARY KEY,
  tenant_id TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
  user_id TEXT,
  job_id TEXT REFERENCES video_jobs(id) ON DELETE SET NULL,
  type TEXT NOT NULL,
  mime_type TEXT,
  file_name TEXT,
  storage_path TEXT NOT NULL,
  public_url TEXT,
  size_bytes INTEGER NOT NULL DEFAULT 0,
  metadata TEXT NOT NULL DEFAULT '{}',
  created_at TEXT NOT NULL DEFAULT (datetime('now'))
);

2. API 路由设计

租户管理

POST   /api/tenants                          → 创建租户
GET    /api/tenants                          → 我的租户列表
GET    /api/tenants/:id                      → 租户详情
PATCH  /api/tenants/:id                      → 更新租户

成员管理

GET    /api/tenants/:id/members              → 成员列表
POST   /api/tenants/:id/members/invite       → 邀请成员
DELETE /api/tenants/:id/members/:uid         → 移除成员
PATCH  /api/tenants/:id/members/:uid/role    → 修改角色

视频助手

POST   /api/tenants/:id/video/analyze        → 解析脚本(角色/场景/对话)
POST   /api/tenants/:id/video/generate       → 生成视频任务
GET    /api/tenants/:id/video/jobs           → 任务列表
GET    /api/tenants/:id/video/jobs/:jid      → 任务详情
POST   /api/tenants/:id/video/jobs/:jid/cancel → 取消任务
GET    /api/tenants/:id/video/jobs/:jid/events → SSE 进度

ComfyUI 工作流

GET    /api/tenants/:id/workflows            → 工作流模板列表
POST   /api/tenants/:id/workflows            → 创建模板
GET    /api/tenants/:id/workflows/:wid       → 模板详情
DELETE /api/tenants/:id/workflows/:wid       → 删除模板

资产生成(ai Helper)

POST   /api/tenants/:id/ai/character        → gpt-image-2 生成角色四视图
POST   /api/tenants/:id/ai/scene            → 生成场景图
POST   /api/tenants/:id/ai/tts              → TTS 语音
POST   /api/tenants/:id/ai/prompt-optimize  → 优化视频 prompt

用量与订阅

GET    /api/tenants/:id/usage               → 当前用量
GET    /api/tenants/:id/subscription        → 订阅信息

3. 前端页面/组件结构

src/web/pages/
├── VideoAssistant.tsx          ← 视频助手主页面(prompt→生成→预览)
├── VideoJobs.tsx               ← 历史任务列表
├── WorkflowLibrary.tsx         ← 工作流模板库
├── TenantSettings.tsx          ← 租户设置
└── TenantMembers.tsx           ← 成员管理

src/web/components/
├── video/
│   ├── ScriptEditor.tsx        ← 自然语言脚本编辑
│   ├── ScriptPreview.tsx       ← 脚本解析预览(角色/场景/对话)
│   ├── CharacterCard.tsx       ← 角色四视图卡片
│   ├── SceneCard.tsx           ← 场景图卡片
│   ├── TTSPlayer.tsx           ← TTS 语音播放
│   ├── WorkflowExport.tsx      ← ComfyUI 工作流导出
│   └── VideoPlayer.tsx         ← 视频播放/下载
├── tenant/
│   ├── TenantSwitcher.tsx      ← 租户切换
│   ├── MemberList.tsx          ← 成员列表
│   ├── InviteDialog.tsx        ← 邀请对话框
│   └── UsageQuota.tsx          ← 用量/配额显示

4. 核心业务流程

注册 → 创作 → 导出

1. 注册/登录
2. 自动创建个人租户(或个人空间)
3. 进入视频助手页面
4. 输入自然语言脚本
5. 系统解析 → 提取角色/场景/对话
6. 自动调用 AI 生成:
   - 【CHARACTER】→ gpt-image-2 四视图
   - 【SCENE】    → 场景图
   - 【TTS】      → 语音
   - 【WORKFLOW】 → ComfyUI 工作流 JSON
7. 预览所有生成内容
8. 导出/下载/提交 ComfyUI 执行
9. 视频生成 → 预览 → 下载

如需协作: → 创建组织 → 邀请成员 → 设置角色

租户管理流程

创建组织
  → 成为 owner
  → 可创建 API Key
  → 可邀请成员(邮箱/链接)
  → 角色: owner / admin / member
  → 每个成员有独立用量跟踪

套餐限制:
  free:    50 次/月, 5GB 存储, 基础功能
  pro:     500 次/月, 50GB, 全功能+更高配额
  custom:  定制

5. 文件变更清单

新增文件

后端 Rust:

src/routes/tenants/mod.rs              → 租户 CRUD
src/routes/tenants/{handlers,types}.rs
src/routes/video_jobs/                 → 视频任务管理
src/routes/video_jobs/{handlers,sse}.rs
src/routes/ai_assist.rs                → AI 辅助生成(角色/场景/TTS/prompt)
src/routes/subscriptions.rs            → 订阅/用量
src/services/tenant_service.rs         → 租户业务逻辑
src/services/video_service.rs          → 视频任务调度
src/services/usage_service.rs          → 用量统计
src/services/comfy_client.rs           → ComfyUI API 客户端
src/workers/video_worker.rs            → 后台视频任务 Worker
src/middleware/tenant_context.rs        → 租户上下文中间件
migrations/0010_tenants.sql
migrations/0011_tenant_members.sql
migrations/0012_subscriptions.sql
migrations/0013_usage_counters.sql
migrations/0014_comfy_workflows.sql
migrations/0015_video_jobs.sql
migrations/0016_assets.sql

前端:

src/web/pages/VideoAssistant.tsx
src/web/pages/VideoJobs.tsx
src/web/pages/WorkflowLibrary.tsx
src/web/pages/TenantSettings.tsx
src/web/pages/TenantMembers.tsx
src/web/components/video/*.tsx
src/web/components/tenant/*.tsx
src/web/hooks/useVideoJobs.ts
src/web/hooks/useTenant.ts
src/web/hooks/useAssets.ts
src/web/hooks/useUsage.ts

修改文件

src/routes/mod.rs                      → 注册新路由
src/web/App.tsx                        → 添加导航项和路由
src/routes/video_agent.rs              → 增强现有 Agent SSE
src/services/mod.rs                    → 注册新服务
src/config.rs                          → 添加 ComfyUI/套餐配置
src/main.rs                            → 注册 Worker
src/db/mod.rs                          → 新增表类型

6. 实施步骤(按优先级)

P0 - 基础链路

  1. migrations: tenants + video_jobs + assets 三张核心表
  2. 租户上下文中间件
  3. 视频助手 Agent SSE 增强 → 脚本解析 + AI 生成调用
  4. 前端 VideoAssistant 页面(脚本输入→解析→预览→导出)
  5. ComfyUI client → 提交 prompt + 获取结果

P1 - 多租户

  1. 租户 CRUD + 成员管理 + 邀请
  2. 资源 tenant_id 隔离
  3. 用量统计 + 套餐限制
  4. API Key 管理
  5. 顶栏租户切换 + 用量显示

P2 - 生产增强

  1. SSE 实时进度
  2. Worker 后台任务队列
  3. 视频任务历史 + 重试
  4. ComfyUI 工作流模板库
  5. AI prompt 优化(调用 gpt-5.5)

P3 - 商业化

  1. 订阅管理(Stripe/内部)
  2. 多 ComfyUI 节点调度
  3. 对象存储集成