# 内置 ComfyUI 视频助手 + SaaS 多租户方案 > 生成: gpt-5.5 via api.boos.lat | 2026-05-18 --- ## 1. 数据表设计 (SQLite migrations) ### 1.1 `tenants` 租户 ```sql 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` 租户成员 ```sql 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` 订阅与额度 ```sql 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` 用量统计 ```sql 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` 工作流模板 ```sql 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` 视频任务 ```sql 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` 文件资产 ```sql 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 - 多租户 6. 租户 CRUD + 成员管理 + 邀请 7. 资源 tenant_id 隔离 8. 用量统计 + 套餐限制 9. API Key 管理 10. 顶栏租户切换 + 用量显示 ### P2 - 生产增强 11. SSE 实时进度 12. Worker 后台任务队列 13. 视频任务历史 + 重试 14. ComfyUI 工作流模板库 15. AI prompt 优化(调用 gpt-5.5) ### P3 - 商业化 16. 订阅管理(Stripe/内部) 17. 多 ComfyUI 节点调度 18. 对象存储集成