- 仪表盘双色进度条(超100%蓝红分段)、工时损耗展示、chart tooltip增强 - 修复 Submissions.vue 延期原因字段始终显示的Bug - 修复 SPA catch-all 路由拦截 API 请求(去尾部斜杠) - seed_demo.py 重写:5项目/4类型/32里程碑/124提交,真实时间线 - 三阶段损耗计算(前期工时/制作秒数/后期工时) - ContentType 扩展为11种,里程碑增强(预估天数/开始日期/超期检测) - 更新 PRD 和项目总结文档 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
22 KiB
内容组 · 项目制周期 / 成本 / 产出管理系统
AirLabs · Project
V1 产品需求文档(PRD)
1. 产品背景与使用场景
本系统服务于一家以 AI 动画 / 视觉内容为核心产出的内容团队(团队规模 30 人以内)。
团队真实工作方式
- 团队以项目制运作
- 项目类型包括:
- 原创动画项目(季播 / 单季)
- 客户项目(TVC / 定制广告 / 内容委托)
- 每个项目在开始时即可明确:
- 单集成片时长
- 集数
- 最终目标总时长
- 制作过程中:
- 大量使用 AI 工具(动画、图像、视频)
- 单日可能产出大量动画片段
- 最终在剪辑软件中拼接为完整成片
- 项目过程中普遍存在:
- 测试 / 试错
- 重做
- 内部制作 + 外包混合
内容组阶段分工
内容组按制作阶段分为三个小组,各组产出物与计量方式不同:
| 阶段组 | 主要产出物 | 能否用秒数衡量 |
|---|---|---|
| 前期组 | 剧本、策划方案、角色/场景设定图 | ❌ |
| 制作组(中期) | 动画片段、部分图片 | ✅ |
| 后期组 | 剪辑成片、补拍修改镜头(≤10%) | 部分可以 |
2. 当前管理问题
现有日报 / 表格方式无法解决以下问题:
- 一个项目到底投入了多少成本
- 实际产出是否匹配项目目标
- 测试与损耗占比情况
- 项目是否超期
- 项目结束后是否盈利
3. 产品目标
构建一个:
以项目为核心,
以内容提交为最小记录单位,
自动汇总产出、进度、成本与损耗,
支持项目完成后统一结算的内部系统。
4. 使用范围(V1)
覆盖范围
- 内容组
- 内容类项目
- 动画 / 视觉内容生产
- PC 端 Web 应用(预留响应式结构,V2 适配移动端)
不包含
- 产品研发周期管理
- 精细工时系统
- 人事绩效考核
- 审批 / 验收流程(保持提交轻量化)
- 移动端专属适配(V2)
5. 核心设计原则
- 项目是最高层级单位
- 内容提交是真实发生的工作记录
- 员工只填"发生了什么",计算交给系统
- 提交过程尽量简单,不给制作人员增加负担
- 项目完成前不展示财务结果
- 项目完成后统一结算
6. 核心对象与逻辑结构
6.1 项目(Project)
项目在创建时即明确目标,用于后续一切对照与计算。
项目字段:
- 项目名称
- 项目类型
- 客户正式项目(已签约,有合同金额)
- 客户测试项目(为甲方做测试/提案,未签约,无回款)
- 内部原创项目(自主立项的内容作品)
- 内部测试项目(技术测试、风格探索等)
- 项目状态
- 制作中
- 已完成(结算)
- 废弃(中途停止,全部产出记为损耗)
- 项目负责人
- 项目阶段结构
- 前期 / 制作 / 后期
- 项目目标产出
- 单集正片时长(分钟)
- 集数
- 系统自动计算目标总时长 = 单集时长 × 集数(换算为秒)
- 项目预估完成时间(日期)
- 由管理层基于前期测试后填写
- 客户回款金额(仅客户正式项目)
- 项目创建时即填写
- 其他类型项目此字段不显示
- 项目创建日期(系统自动记录)
6.2 用户(User)
- 姓名
- 所属团队(内容组)
- 所属阶段组
- 前期 / 制作 / 后期
- 用于后台按组筛选和统计
- 不影响成本分摊逻辑(分摊由提交内容自动决定)
- 角色权限
- 成员 / 组长 / 主管 / Owner
- 月度人力成本(工资)
- 日成本(系统自动计算)
- 日成本 = 月薪 ÷ 22 个工作日
6.3 内容提交(Submission)【系统核心】
一条内容提交 = 一次真实发生的内容交付或试错
设计原则:成员只需如实填写"做了什么、产出多少",系统自动完成分类与计算。
MVP 阶段不设审批流程,提交即生效。
提交字段:
- 提交人(自动关联当前用户)
- 所属项目(下拉选择当前参与的项目)
- 项目阶段
- 前期 / 制作 / 后期
- 工作类型
- 制作 / 测试 / 方案
- 内容制作类型(按阶段分组,共 11 种)
- 前期:策划案 / 剧本 / 分镜 / 人设图 / 场景图
- 制作:动画制作
- 后期:配音 / 音效 / 修补镜头 / 剪辑
- 其他
- 选择内容类型时系统自动设置对应的项目阶段
- 产出时长输入
- 分钟(可选)
- 秒(可选)
- 系统自动换算为总秒数
- 若无产出可填 0
- 投入时长(可选)
- 单位:小时
- 非必填,鼓励填写
- 用于后续效率分析
- 提交对象
- 组长 / 制片 / 内部 / 外部
- 制作描述(简要说明)
- 提交日期(默认当天,可修改为过去日期补填)
- 里程碑关联(系统自动)
- 根据内容类型自动匹配同名里程碑
- 如"策划案"提交自动关联"策划案"里程碑
- 延期原因
- 当关联的里程碑已超期时,必须填写延期原因
- 用于后续 AI 分析和管理复盘
6.4 项目里程碑(ProjectMilestone)
每个项目创建时自动生成一套默认里程碑,对应各阶段的工作环节。
里程碑字段:
- 所属项目
- 名称(如:策划案、剧本、分镜、配音等)
- 所属阶段(前期 / 后期)
- 是否完成(勾选)
- 完成日期(系统自动记录)
- 预估工作日(管理员填写)
- 开始日期(管理员填写)
- 实际工作日(系统自动计算 = 开始日期到完成日期的工作日数,排除周末)
- 是否超期(计算值 = 实际工作日 > 预估工作日)
默认里程碑:
| 阶段 | 里程碑 |
|---|---|
| 前期 | 策划案、剧本、分镜、人设图、场景图 |
| 后期 | 配音、音效、修补镜头、剪辑、杂项 |
制作阶段不使用里程碑,以秒数进度为度量。
操作:
- 管理员可添加/删除里程碑
- 管理员可设置预估工作日和开始日期
- 勾选完成后系统记录完成日期
7. 成本结构设计
7.1 人力成本(自动计算)
基础规则
- 日成本 = 月薪 ÷ 22
- 项目人力成本 = 参与该项目的所有人员日成本按分摊规则累计
分摊核心规则
系统根据提交的产出秒数自动判定分摊方式,成员无需额外操作。
规则一:有产出秒数 → 按秒数比例分摊
适用于:制作组动画产出、后期组补拍镜头等有秒数的提交
示例:
小王(制作组)日成本 909 元,某天提交情况:
- A 项目:产出 60 秒
- B 项目:产出 30 秒
分摊结果:
- A 项目承担:909 × (60/90) = 606 元
- B 项目承担:909 × (30/90) = 303 元
规则二:无产出秒数(秒数为 0) → 按提交条数比例分摊
适用于:前期组策划/剧本/设定、后期组剪辑等无秒数产出的提交
示例:
小李(前期组)日成本 682 元,某天提交情况:
- A 项目:提交 2 条(剧本 + 角色设定)
- B 项目:提交 1 条(策划方案)
分摊结果:
- A 项目承担:682 × (2/3) = 455 元
- B 项目承担:682 × (1/3) = 227 元
规则三:混合情况(同一天既有有秒数的提交,又有无秒数的提交)
- 有秒数的提交按秒数参与分摊
- 无秒数的提交按 1 条 = 该日平均每秒对应的成本折算
- 简化处理:全部按提交条数比例分摊
其他规则:
- 若某天仅为一个项目提交 → 全部日成本归该项目
- 管理员可在后台手动修改任意一天的分摊结果
各阶段组成本分摊方式汇总
| 阶段组 | 典型提交 | 产出秒数 | 分摊方式 |
|---|---|---|---|
| 前期组 | 剧本、策划、设定图 | 0 | 按提交条数比例 |
| 制作组 | 动画片段 | 有 | 按产出秒数比例 |
| 后期组 — 剪辑 | 剪辑成片 | 0 | 按提交条数比例 |
| 后期组 — 补拍 | 修改镜头(≤10%) | 有 | 按产出秒数比例 |
7.2 AI 工具成本(订阅类,可扩展)
设计要求
- 后台支持自定义添加 AI 工具
- 工具种类可随时扩展
- 由主管或组长录入,每月录入一次或每次购买时录入
字段:
- 工具名称(自定义)
- 订阅周期(月 / 年)
- 费用金额
- 录入日期
- 录入人
- 成本归属方式
- 指定项目(100% 归属某项目)
- 内容组整体(按当月各项目产出秒数比例自动分摊)
- 手动分摊比例(自定义各项目占比)
7.3 外包成本(项目级)
字段:
- 所属项目
- 外包类型
- 动画 / 剪辑 / 整集
- 外包范围
- 第 X–Y 集
- 外包金额
- 录入人
- 录入日期
7.4 内制 + 外包混合项目处理逻辑
- 项目目标仍按全集数计算
- 外包部分:
- 直接计入外包成本
- 不产生内部内容提交
- 内制部分:
- 通过内容提交产生动画时长
- 计入人力成本
8. 损耗与亏损(核心概念区分)
8.0 概念定义
损耗(Waste) 和 亏损(Loss) 是两个独立指标,必须区分。
| 概念 | 定义 | 性质 | 何时产生 |
|---|---|---|---|
| 损耗 | 生产过程中的浪费(测试试错 + 超产废片) | 生产效率指标 | 制作过程中持续产生,盈利项目也有 |
| 亏损 | 项目总成本超过回款金额 | 财务结果指标 | 仅客户正式项目结算后才计算 |
关系:损耗大 → 成本上升 → 可能导致亏损。但盈利的项目也会有损耗。
8.1 三阶段损耗计算体系
不同阶段的工作性质不同,采用不同的损耗衡量方式:
| 阶段 | 计算方式 | 损耗指标 | 度量单位 |
|---|---|---|---|
| 前期 | 工时制 | 里程碑超期工时 | 小时(h) |
| 制作 | 秒数制 | 测试损耗 + 超产损耗 | 秒(s) |
| 后期 | 工时制 | 里程碑超期工时 | 小时(h) |
前期损耗(工时制)
前期工作(策划案、剧本、分镜、人设图、场景图)无法用秒数衡量,改为按里程碑工期计算:
- 遍历前期里程碑,对有
预估工作日且已完成的里程碑 - 实际工作日 =
完成日期 − 开始日期的工作日数(排除周末) - 超出天数 = max(0, 实际工作日 − 预估工作日)
- 损耗工时 = 超出天数 × 8 小时
- 未完成但已超期的里程碑也计入(用当前日期代替完成日期)
制作损耗(秒数制,保持现有逻辑)
- 测试损耗 = 工作类型为"测试"且项目阶段为"制作"的提交总秒数
- 制作产出 = 项目阶段为"制作"的非测试总秒数 + 内容类型为"修补镜头"的总秒数
- 超产损耗 = max(0, 制作产出 − 目标秒数)
- 制作总损耗 = 测试损耗 + 超产损耗
- 秒数损耗率 = 制作总损耗 ÷ 目标秒数 × 100%
后期损耗(工时制)
后期里程碑中:
- 剪辑等有预估工期的里程碑:与前期同理,按工时计算超期损耗
- 修补镜头:秒数已计入制作损耗(与目标对比)
- 配音 / 音效:外包或 AI 生成,不计损耗
项目总损耗
秒数类总损耗 = 测试损耗 + 超产损耗 工时类总损耗 = 前期超期工时 + 后期超期工时 秒数损耗率 = 秒数类总损耗 ÷ 目标秒数 × 100%
注意:损耗仅统计生产层面的浪费,不含 AI 工具成本。
示例: 项目目标:13 集 × 5 分钟 = 3,900 秒 前期:策划案预估 5 天 / 实际 8 天 → 超 3 天 = 24h 损耗 制作:测试 500 秒 + 制作产出 4,800 秒 → 超产 900 秒 → 秒数损耗 1,400 秒 后期:剪辑预估 3 天 / 实际 3 天 → 无超期 秒数损耗率:1,400 ÷ 3,900 = 35.9% 工时损耗:24h
8.2 亏损的计算(仅客户正式项目)
亏损 = 项目总成本 − 回款金额(仅当总成本 > 回款时)
- 仅客户正式项目有回款,因此仅客户正式项目计算盈亏
- 原创项目:只看成本和损耗,不算盈亏(未来回款未知)
- 客户测试项目 / 内部测试项目:无回款,全部成本视为经营投入
8.3 各项目类型的损耗与亏损适用性
| 项目类型 | 计算损耗 | 计算盈亏 | 说明 |
|---|---|---|---|
| 客户正式项目 | ✅ | ✅ | 损耗看效率,盈亏看财务结果 |
| 客户测试项目 | ✅ | ❌ | 无回款,损耗 = 全部产出(本身就是试错) |
| 内部原创项目 | ✅ | ❌ | 只看成本和损耗,未来回款未知 |
| 内部测试项目 | ✅ | ❌ | 无回款,损耗 = 全部产出 |
8.4 团队效率追踪(V1 粗暴方案)
核心问题:同样的工作量分下去,谁的废片率高?
V1 不做逐条通过率标记(太复杂),采用人均基准对比法:
计算逻辑
- 人均基准 = 项目目标总秒数 ÷ 参与制作的人数
- 超出基准 = 个人提交总秒数 − 人均基准
- 超出比例 = 超出基准 ÷ 人均基准 × 100%
- 超出多的人 → 产出的废片多 → 效率相对低
示例
项目目标 3,900 秒,4 人参与制作:
| 成员 | 提交总秒数 | 人均基准 | 超出基准 | 超出比例 |
|---|---|---|---|---|
| 小王 | 1,300 | 975 | +325 | +33% |
| 小李 | 1,100 | 975 | +125 | +13% |
| 小张 | 950 | 975 | −25 | −3% |
| 小赵 | 850 | 975 | −125 | −13% |
| 合计 | 4,200 | 3,900 | +300 | — |
此方案基于"工作量基本均分"的前提,无需额外标记,纯靠提交数据自动计算。
8.5 各阶段组损耗说明
| 阶段组 | 损耗方式 | 说明 |
|---|---|---|
| 前期组 | 工时制 | 按里程碑预估 vs 实际天数,超期部分 × 8h 计为损耗 |
| 制作组 | 秒数制 | 核心损耗来源:测试损耗 + 超出目标秒数的超产损耗 |
| 后期组 — 剪辑 | 工时制 | 按里程碑预估 vs 实际天数 |
| 后期组 — 补拍 | 秒数制 | 补拍秒数计入制作损耗(与目标对比) |
| 后期组 — 配音/音效 | ❌ | 外包或 AI 生成,不计损耗 |
9. 项目进度与时间管理
9.1 进度计算逻辑
- 完成百分比 = 当前累计提交秒数(有秒数的提交)÷ 项目目标总秒数 × 100%
- 仅统计有产出秒数的提交(制作组 + 后期补拍)
- 前期组和后期剪辑的工作不影响进度百分比(但其成本计入项目总成本)
- 进度上限不封顶(可超过 100%,超出部分即为损耗)
说明:前期全部完成但制作未开始时,进度仍为 0%。
这是合理的——进度条反映的是"内容产出进度",不是"项目整体工作量进度"。
9.2 进度条可视化
- 显示项目进度条
- 预估完成时间作为基准
- 当前时间位置实时标注
颜色规则
- 进度 ≤100%:蓝色进度条
- 进度 >100%:双色进度条 — 蓝色表示目标内占比,红色表示超出占比(如 258% 时蓝色占 38.8%,红色占 61.2%)
- 百分比数字超过 100% 时变为红色
9.3 预估 vs 实际完成
- 项目完成后记录:
- 实际完成日期
- 与预估完成日期的偏差(天)
10. 项目完成与结算机制
规则
- 项目是否完成:
- 仅由 Owner 或指定高权限角色手动确认
- 系统可提示但不自动结算:
- 已达到目标产出
- 已超过预估完成时间
- 在手动确认前:
- 项目始终处于制作阶段
- 不触发任何结算逻辑
11. 项目结算(仅项目完成后)
结算内容(仅 Owner 可见)
所有项目类型均展示:
- 项目总人力成本
- 项目 AI 工具成本
- 项目外包成本
- 项目总成本 = 人力 + AI 工具 + 外包
- 项目总损耗(秒数 + 损耗率)
- 团队效率排行(人均基准对比)
仅客户正式项目额外展示:
- 项目回款金额(创建时已填写)
- 项目盈亏 = 回款金额 − 项目总成本
- 盈利 → 绿色标注
- 亏损 → 红色标注
其他项目类型:
- 客户测试项目:展示总成本 + 损耗,无盈亏
- 内部原创项目:展示总成本 + 损耗,无盈亏
- 内部测试项目:展示总成本 + 损耗,无盈亏
项目进行中不展示任何盈利或亏损信息。
12. 仪表盘(Dashboard)
全局总览(Owner 可见)
提供公司级一目了然的运营视图:
项目概览
- 当前进行中项目数量(按类型分类统计)
- 各项目进度条一览
- 超期项目高亮提醒
成本视角
- 本月总人力成本
- 本月 AI 工具总成本
- 各项目成本排行
- 按项目类型汇总成本分布
产出与效率视角
- 本月总产出秒数
- 各项目产出对比
- 团队人均日产出秒数
损耗视角
- 总损耗率 + 总工时损耗卡片
- 各项目进度条下方显示损耗率与工时损耗
- 各项目损耗率排行(柱状图,tooltip 显示秒数损耗 + 工时损耗)
- 损耗不含工具成本,仅反映生产效率
盈亏视角(仅客户正式项目)
- 已结算客户项目盈亏列表
- 客户项目盈亏汇总
- 亏损项目高亮标红
13. 权限与历史记录
权限层级
| 角色 | 可见范围 | 可操作 |
|---|---|---|
| Owner | 全量数据 + 结算 + 仪表盘 | 一切操作、确认结算、修改历史 |
| 主管 / 制片 | 所有项目进度与产出数据 | 录入 AI 工具成本、外包成本 |
| 组长 | 所负责项目 + 组内成员提交 | 查看组员提交、录入成本 |
| 成员 | 本人提交记录 + 所属项目公开信息 | 提交内容、查看项目进度 |
历史修改规则
- 普通成员不可修改已提交的历史记录
- 高权限角色(组长及以上)修改时:
- 必须填写修改原因
- 系统自动生成版本记录
- Owner 接收修改通知
- 页面默认显示最新版本
- 支持查看历史版本对比
14. 技术架构(V1)
技术栈
| 层级 | 技术选型 | 说明 |
|---|---|---|
| 前端 | Vue 3 + Element Plus + Vite | 成熟的后台管理 UI 组件库 |
| 后端 | Python FastAPI | 高性能 API 框架 |
| 数据库 | MySQL 8.0(阿里云 RDS) | 生产环境;本地开发可回退 SQLite |
| 图表 | ECharts | 仪表盘可视化 |
| 认证 | JWT Token | 登录鉴权与权限控制 |
| AI 模型 | 豆包(火山引擎 ARK) | 报告摘要生成 |
| 消息推送 | 飞书自建应用 | 报告卡片消息 |
| 定时任务 | APScheduler | 日报/周报/月报定时触发 |
部署方式
- CI/CD:Gitea Actions 自动构建,推代码即部署
- 镜像:Docker 构建,推送到华为云 SWR
- 运行:K3s 集群,通过 Ingress 暴露服务
- 前端:静态构建后由后端统一托管(
/路径返回 index.html) - 数据库:阿里云 RDS MySQL,通过环境变量配置连接
后续扩展路径
- V3:移动端响应式适配
- V3:数据导出(Excel / PDF)
- V3:AI 智能问答助手(自然语言查询系统数据)
15. MVP 开发优先级
| 优先级 | 模块 | 内容 |
|---|---|---|
| P0 | 登录与权限 | 4 级角色登录、鉴权、权限控制 |
| P0 | 项目管理 | 项目创建 / 编辑 / 状态管理 / 目标设定 |
| P0 | 内容提交 | 成员提交表单(核心功能) |
| P0 | 项目详情 | 进度条、提交记录列表、损耗统计 |
| P1 | 成本管理 | 人力成本自动计算、AI 工具成本录入、外包成本录入 |
| P1 | 仪表盘 | 全局总览:项目进度、成本、损耗、收益 |
| P1 | 项目结算 | Owner 手动结算、盈亏计算 |
| P2 | 历史修改记录 | 版本追溯、修改原因、通知 |
| P2 | 用户管理 | 新增 / 编辑成员、薪资设定 |
16. 系统最终产出价值
通过该系统,管理层可以清晰看到:
- 项目是否超期
- 项目节奏是否失控
- 各项目实际成本与损耗
- 内容组真实生产能力
- 客户项目是否盈利
- 项目结束后是否值得继续投入
17. AI 能力(V2)
17.1 概述
V2 接入 AI 大模型能力,为管理层提供自动化报告和智能分析:
- AI 模型:豆包(Doubao)— 字节跳动大语言模型,火山引擎 ARK 平台
- 报告推送:飞书自建应用,私聊推送给指定管理人员
- 定时调度:APScheduler 集成
17.2 自动报告
| 报告类型 | 推送时间 | 数据范围 |
|---|---|---|
| 日报 | 每天 20:00 | 当天数据 |
| 周报 | 每周五 20:00 | 本周一至周五 |
| 月报 | 每月1日 10:00 | 上月完整数据 |
报告内容由系统汇总数据 + AI 生成自然语言摘要与建议。
17.3 项目风险预警
基于规则引擎自动识别风险项目,在仪表盘展示预警:
| 风险维度 | 判定规则 |
|---|---|
| 超期风险 | 距截止 ≤7天且进度 <80% |
| 进度风险 | 实际进度严重落后于时间线 |
| 损耗风险 | 损耗率 >50% |
| 产出停滞 | 近7天无提交 |
17.4 后续迭代(V3)
- AI 智能问答助手(自然语言查询系统数据)
- 按权限分级推送(不同角色看到不同内容)
- 团队效率 AI 深度分析
18. 飞书集成
接入方式
- 飞书自建应用(非 Webhook 群机器人)
- 私聊发送消息给指定管理人员
所需权限
im:message:send_as_bot— 以应用身份发消息contact:user.id:readonly— 通过手机号获取用户 ID
消息格式
- 飞书交互式卡片(Interactive Card)
- 内容为 markdown 格式
最终定义
这是一个让内容生产过程保持自由, 但让项目进度、成本与结果无法模糊的系统。