# SaaS 核心对象清单(第一版) 本文档定义新 SaaS 系统的核心业务对象。目标不是现在就把数据库字段写死,而是先把系统世界观定清楚,避免后续边开发边返工。 --- ## 1. 设计原则 核心对象必须满足: - 能覆盖当前桌面版的主要业务能力 - 能支撑未来多人协作和迭代 - 能清楚区分“谁拥有、谁使用、谁产生、谁消费” - 不因为桌面版历史实现而被绑死 --- ## 2. 顶层对象分组 新 SaaS 的核心对象建议分为 6 组: 1. 用户与组织 2. 工作空间与项目 3. 素材与素材库 4. 生成与任务 5. 结果与发布 6. 系统与运维 --- ## 3. 用户与组织对象 ### 3.1 User(用户) 代表系统中的登录使用者。 职责: - 登录系统 - 创建项目 - 上传素材 - 发起生成 - 查看结果 - 管理自己的资源 后续待确认: - 是否支持多个角色 - 是否支持子账号 - 是否支持团队成员 ### 3.2 Team / Workspace(团队 / 工作空间) 如果未来不是纯个人 SaaS,就必须有这个对象。 职责: - 隔离不同用户组的数据 - 承载成员、项目、素材库、任务 - 作为权限边界 当前建议: - 先按“工作空间”概念设计 - 一期即使只支持单用户,也保留扩展位 ### 3.3 Membership(成员关系) 表示用户属于哪个工作空间、具备什么权限。 职责: - 权限控制 - 团队协作 - 后续审计与操作归属 --- ## 4. 工作空间与项目对象 ### 4.1 Project(项目) 新 SaaS 里最核心的业务容器之一。 职责: - 承载一组素材、配音、策略、任务、生成结果 - 作为用户操作的主要上下文 为什么必须有: 桌面版很多逻辑都默认“当前工作台上下文”,SaaS 里必须把这个上下文对象化。 ### 4.2 Folder / Collection(可选) 如果素材量很大,后续可能需要集合/文件夹逻辑。 一期建议: - 不作为强制核心对象 - 预留二级组织能力即可 --- ## 5. 素材与素材库对象 ### 5.1 AssetLibrary(素材库) 素材库的统一抽象。 建议未来不要把“视频库”和“配音库”写成完全不同的两套模型,而是: - 统一为 `AssetLibrary` - 通过 `kind` 区分: - `video` - `voice` - 后续可扩展 `image` / `template` / `subtitle` 职责: - 组织素材 - 隔离不同项目/工作空间资源 - 提供筛选、统计、权限、归属能力 ### 5.2 Asset(素材) 素材的统一抽象。 可能包括: - 视频素材 - 图片素材 - 配音素材 - 背景音频 - 模板文件(未来) 关键属性层面未来要支持: - 所属库 - 所属项目 / 工作空间 - 文件地址 - 文件元数据 - 分类结果 - 质量状态 - 风险标记 - 使用统计 ### 5.3 AssetClassification(素材分类结果) 当前桌面版已经有成熟经验,这个对象未来应该独立表达。 职责: - 记录素材分类结果 - 记录口播/场景/待复核等业务标签 - 作为生成策略选择依据 ### 5.4 AssetDiagnosis(素材诊断结果) 用于表达素材准备度、缺口、建议。 职责: - 给项目/素材库生成健康判断 - 给用户输出“缺什么、风险在哪里、建议怎么补” --- ## 6. 配音与策略对象 ### 6.1 VoiceAsset(配音素材) 虽然可以作为 Asset 的一种,但业务上很重要,需要单独强调。 职责: - 作为生成输入 - 支持试听、复核、重复检测、质量检查 ### 6.2 GenerationStrategy(生成策略) 桌面版里已经存在生成策略概念,SaaS 里必须保留,而且要对象化。 职责: - 定义生成模式 - 定义视频库/配音库选择方式 - 定义阈值、数量、规则 - 支持后续模板化与复用 ### 6.3 StrategyTemplate(策略模板,可选) 如果未来要做更强复用,这个对象会非常有用。 职责: - 保存可复用的生成策略 - 支持团队共享 --- ## 7. 生成与任务对象 ### 7.1 GenerationRequest(生成请求) 表示用户点击“开始生成”时提交的一次业务请求。 职责: - 记录用户发起的意图 - 绑定项目、策略、素材范围、配置 ### 7.2 GenerationTask(生成任务) 表示后台真正执行的一次任务。 职责: - 追踪状态 - 分配 worker - 记录进度 - 支持失败重试 - 支持日志与诊断 ### 7.3 BatchTask(批量任务) 桌面版已经证明单个任务和批量任务不是一个复杂度级别,所以建议单独对象化。 职责: - 管理一批生成候选 - 统计成功/失败/跳过 - 支持单候选失败隔离 ### 7.4 TaskAttempt / TaskRun(任务执行记录) 如果未来要支持重试、回放、错误审计,这个对象很重要。 职责: - 记录某个任务的第几次执行 - 记录失败原因、耗时、日志摘要 --- ## 8. 结果与发布对象 ### 8.1 GeneratedVideo(生成结果 / 成片) 表示最终产出的业务结果。 职责: - 保存成片元信息 - 绑定来源任务 - 供下载、预览、发布、同步 ### 8.2 ResultPackage(结果包,可选) 如果后续要把视频、封面、字幕、元信息打包下载,可以引入。 ### 8.3 PublishRecord(发布记录,可选) 如果未来要做发布/分发到外部平台,这个对象需要提前预留。 --- ## 9. 系统与运维对象 ### 9.1 WorkerNode(执行节点) SaaS 版里视频生成大概率不应该和 Web 请求进程混在一起,所以需要执行节点概念。 职责: - 执行长任务 - 上报健康状态 - 接受任务分派 ### 9.2 SyncJob(同步任务) 当前桌面版有云同步经验,SaaS 里如果有多存储、多节点、多结果归档,也会需要同步任务抽象。 ### 9.3 AuditLog(审计日志) 职责: - 记录谁在什么时候做了什么 - 支持排错、责任追踪、安全审计 ### 9.4 SystemEvent / HealthCheck(系统事件 / 健康检查) 职责: - 观测性 - 巡检 - 告警 --- ## 10. 一期必须优先确认的对象 最先必须定死的是: 1. User 2. Workspace 3. Project 4. AssetLibrary 5. Asset 6. GenerationStrategy 7. GenerationTask 8. BatchTask 9. GeneratedVideo 10. WorkerNode 这 10 个对象决定了 SaaS 的主骨架。 --- ## 11. 当前建议 ### 一期推荐采用的对象骨架 - 用户 - 工作空间 - 项目 - 统一素材库 - 统一素材对象 - 生成策略 - 单任务 / 批量任务 - 成片结果 - Worker 节点 - 审计日志 ### 暂时可后补的对象 - 套餐 / 支付 - 发布记录 - 模板市场 - 高级权限体系 - 更复杂的目录树/集合体系 --- ## 12. 当前阶段结论 新 SaaS 项目最重要的不是“先建多少表”,而是先把对象世界观定清楚。 当前建议已经足够支持下一步: - 继续定义核心流程 - 再根据对象和流程定技术栈 - 之后再设计数据库和 API