refactor: 后端标识统一为 FruitShorts,并落地 05 离线下载
为什么: 1) 产品已定名 FruitShorts,但后端仍是 reelshort 系列标识 —— Java 包 com.reelshort、 模块名与 jar 名 reelshort-*、spring.application.name、配置前缀 reelshort.*, 这些会出现在启动日志、命令行和 IDE 里,与产品名不一致。本次整体替换为 fruitshorts, 数据库连接名上一轮已改名,保持不变。 2) 第一阶段下一批第 1 步(05 离线下载)要求把下载授权(设备绑定/有效期/吊销)、 下载任务与断点续传、配额与过期清理、仅 Wi-Fi 规则做成完整接口,本提交一并落地。 3) 顺带修复:schema-phase1.sql 里 playback_ticket / order_event 仍按普通表定义唯一索引, 表分区化之后重跑脚本必定报错(分区表的唯一索引必须包含分区键)。改为在本脚本里就 按分区表定义,并验证脚本可重复执行。
This commit is contained in:
1 parent
a4aa749cc6
commit
b3179fc836
251 files changed
+7261
-767
No files matched your search
@@ -0,0 +1,272 @@
|
||||
# 短剧 App 第一阶段 PRD(印尼首发)
|
||||
|
||||
> 版本 v1.0 · 依据《四阶段功能规划与工作量评估》第一阶段明细(10 个模块 / 614 净人天)
|
||||
> 配套文档:[后端服务设计](./backend-design-phase1.md) · [架构设计](./architecture-design.md)
|
||||
|
||||
## 0. 文档说明
|
||||
|
||||
本 PRD 覆盖第一阶段(M0–M5)的产品范围,即"可上线、可收费、可运营、可供给内容"的 MVP 闭环。
|
||||
第二至第四阶段(会员订阅、广告、个性化推荐、多区域部署、DRM)不在本文范围内,仅在衔接处标注预留。
|
||||
|
||||
阅读约定:`P0` 为上线阻塞项,`P1` 为可延后但不能砍项;"人天"沿用评估表的合并口径,不重复计入通用后台与基础服务。
|
||||
|
||||
## 1. 背景与目标
|
||||
|
||||
### 1.1 背景
|
||||
|
||||
短剧(竖屏、单集 1–3 分钟、强钩子、连续解锁)在国内已被验证。本项目把它做到海外,首发印尼:
|
||||
人口 2.8 亿、移动端占比极高、年轻用户对短视频形态接受度高,但支付能力分散、网络质量参差、
|
||||
内容与宗教文化敏感度高,因此不能直接照搬国内产品与运营方式。
|
||||
|
||||
### 1.2 第一阶段目标
|
||||
|
||||
做出一个能真实跑起来的业务闭环,而不是功能演示:
|
||||
|
||||
1. **能看**:iOS / Android 双端可安装,播放稳定,弱网可用。
|
||||
2. **能收**:分集收费闭环走通,且完全符合 Apple / Google 的数字商品结算规则。
|
||||
3. **能供给**:创作者能自助入驻、上传、提交审核、看到数据。
|
||||
4. **能运营**:运营能编排内容、处理审核与举报、查订单与用户、看经营大盘。
|
||||
5. **能被度量**:埋点口径统一,核心指标可对账、可归因。
|
||||
|
||||
### 1.3 阶段退出标准
|
||||
|
||||
- 通过 UAT 与安全测试,高危漏洞清零;
|
||||
- 支付、播放、内容上下架、账号注销四条全链路端到端通过;
|
||||
- 商店审核材料齐备且首次提审材料可完整复现核心流程。
|
||||
|
||||
## 2. 市场与假设(M0 决策门禁)
|
||||
|
||||
以下四项未冻结前不启动研发,否则登录、支付、版权、短信、UI 与商店资料会反复返工。
|
||||
|
||||
| 决策项 | 当前假设 | 影响面 |
|
||||
| --- | --- | --- |
|
||||
| 首发市场 | 印度尼西亚 | 支付税制、短信到达率、隐私法、内容分级 |
|
||||
| 首发语言 | 印尼语(Bahasa Indonesia)为主,界面预留英文 | 文案长度、字幕、客服、ASO |
|
||||
| 内容形态 | 竖屏短剧,单集 1–3 分钟,单剧 40–80 集 | 转码阶梯、CDN 成本、存储、审核成本 |
|
||||
| 收费方式 | 金币解锁分集,走 Apple IAP / Google Play Billing | 财务模型(15%–30% 抽成 + 税费)、审核 |
|
||||
|
||||
### 2.1 印尼本地化的硬性要求
|
||||
|
||||
- **PSE 注册**:印尼通信与信息部(Kominfo)要求电子系统运营商完成 PSE 注册,未注册可能被封锁。立项即启动。
|
||||
- **数据保护**:印尼《个人数据保护法》(UU 27/2022)要求明示同意、可删除、可导出,跨境传输需合法依据。
|
||||
- **内容分级与合规**:需遵守印尼内容分级(R13/R17/R21 等)与色情、宗教、政治敏感内容的严格限制;上线前需完成内容审核供应商与规则配置。
|
||||
- **商店支付**:App 内数字内容必须走商店结算,任何引导外部支付的文案都会被拒审或下架。
|
||||
- **网络与资费**:4G 为主、数据资费敏感、部分区域带宽受限 → 默认低码率起播,清晰度手工可上调。
|
||||
- **时区与货币**:WIB(UTC+7),IDR 展示按千位分隔(`Rp 12.000`);所有时间字段按用户本地时区展示。
|
||||
|
||||
## 3. 用户与角色
|
||||
|
||||
| 角色 | 主要场景 | 关键诉求 |
|
||||
| --- | --- | --- |
|
||||
| 观众(C 端) | 找剧、刷剧、追更、解锁分集 | 起播快、不卡、剧情钩子密、价格透明 |
|
||||
| 创作者 | 入驻、上传、提交审核、看数据 | 上传稳定、审核反馈明确、数据可信 |
|
||||
| 内容审核 | 审核创作者内容与片源 | 批量高效、驳回原因可复用、留痕 |
|
||||
| 运营 | 编排内容、配置定价与活动、看大盘 | 改动即时生效、可回滚 |
|
||||
| 客服 | 处理退款、账号、播放问题 | 按用户/订单快速检索,有处理入口 |
|
||||
| 财务 | 对账、退款、异常订单 | 订单与商店账单可对账,差异可追溯 |
|
||||
| 管理员 | 账号与权限管理 | RBAC 清晰、敏感操作留痕 |
|
||||
|
||||
## 4. 范围
|
||||
|
||||
### 4.1 纳入(第一阶段)
|
||||
|
||||
| 模块 | 人天 | 优先级 |
|
||||
| --- | --- | --- |
|
||||
| 01 基础与交付准备 | 8 | P0 |
|
||||
| 02 用户账号与登录 | 35 | P0 |
|
||||
| 03 内容发现与详情 | 37 | P0 |
|
||||
| 04 播放器与播放控制 | 44 | P0 |
|
||||
| 05 记录、收藏与下载 | 71 | P0 |
|
||||
| 06 评论、点赞与分享 | 64 | P1 |
|
||||
| 07 创作者中心 | 119 | P0 |
|
||||
| 08 平台运营后台 | 100 | P0 |
|
||||
| 09 分集收费与支付 | 98 | P0 |
|
||||
| 10 质量、数据与上线 | 38 | P0 |
|
||||
|
||||
### 4.2 明确不做(留到后续阶段)
|
||||
|
||||
个性化推荐模型、会员订阅与自动续费、广告插入、创作者分成结算、多语言配音、DRM、多区域容灾、TV/Web 观看端。
|
||||
|
||||
## 5. 功能需求
|
||||
|
||||
每个模块给出:需求点 → 验收要点。验收要点直接作为 QA 的测试设计输入。
|
||||
|
||||
### 5.1 基础与交付准备(8 人天)
|
||||
|
||||
需求点:需求澄清与范围冻结;技术架构、API 契约与数据模型;双端与 Web 工程骨架;后端服务骨架、鉴权与基础中间件;
|
||||
对象存储与转码链路;短信/邮件/推送通道;崩溃与性能监控;埋点规范与数据字典;CI/CD、多环境、域名与 CDN;商店账号与签名;隐私与支付前置。
|
||||
|
||||
验收要点:契约兼容与越权校验;构建产物可复现;上传转码回调闭环;多国家短信到达与限流;事件去重与口径一致。
|
||||
|
||||
### 5.2 用户账号与登录(35 人天)
|
||||
|
||||
需求点:手机号 + 邮箱 + Apple / Google 三种登录;多国家区号与 OTP 风控;隐私同意与年龄门槛;Token 与多设备会话;
|
||||
资料(昵称/头像/地区);账号注销与数据导出;封禁、限制与申诉;登录注册限流反刷。
|
||||
|
||||
验收要点:
|
||||
|
||||
- 并发注册幂等,重复提交不产生重复账号;
|
||||
- 验证码刷取被拦截(同号/同 IP/同设备多维频控 + 图形验证码 + 熔断);
|
||||
- 跨端登录状态一致,登出后旧 Token 立即失效;
|
||||
- Sign in with Apple 提供"隐藏邮箱"路径下的账号可正常续用;
|
||||
- 注销后 15 天内数据不可恢复,导出内容完整且不含他人数据。
|
||||
|
||||
### 5.3 内容发现与详情(37 人天)
|
||||
|
||||
需求点:首页浏览流;关键词搜索(含热词与历史);分类与榜单;详情与选集;规则推荐与热度排序;地区/年龄/状态/版权过滤;加载、空态、离线与错误重试。
|
||||
|
||||
验收要点:上下架与地区过滤实时生效;分页刷新不错位不重复;深链进入返回栈正确;空结果有兜底;弱网超时不空白。
|
||||
|
||||
### 5.4 播放器与播放控制(44 人天)
|
||||
|
||||
需求点:HLS 播放与生命周期管理;播放地址签发与试看校验;快进快退与手势;0.75x–2.0x 倍速与记忆;全屏/旋转/锁屏;
|
||||
断点续播与异常恢复;自适应码率与清晰度切换;基础字幕;缓冲/断网/错误码提示;自动下一集;音频焦点与系统媒体控制;播放事件埋点。
|
||||
|
||||
验收要点(本模块是全阶段最影响口碑的一环):
|
||||
|
||||
- 首帧 P95 < 1.5s,卡顿率 < 2%,弱网(3G / 丢包 5%)可降级播放不黑屏;
|
||||
- 播放地址不可复用:签名过期后直接播放失败,越权拼接地址拿不到片源;
|
||||
- 切集不重复计数,进度不跳变;
|
||||
- 全程 2 小时连续播放无内存增长与音画不同步。
|
||||
|
||||
### 5.5 记录、收藏与下载(71 人天)
|
||||
|
||||
需求点:观看记录(列表、续播、清理);收藏(状态同步、排序、批量删除);离线下载(队列、断点续传、加密存储与离线播放);
|
||||
下载授权与设备绑定、过期与吊销;存储占用管理与仅 Wi-Fi 下载;跨端同步策略;与账号注销联动。
|
||||
|
||||
验收要点:授权、过期、吊销、换机四条路径可验证;下载文件无法被外部播放器直接提取;跨端进度冲突有确定的合并规则。
|
||||
|
||||
> 产品决策待定:第一阶段是否启用"真实离线下载"。若法务与版权未就绪,先做受控缓存(App 内缓存 + 授权有效期),
|
||||
> 该决策会影响 05 模块约 20 人天的用量。
|
||||
|
||||
### 5.6 评论、点赞与分享(64 人天,P1)
|
||||
|
||||
需求点:点赞(动画、计数、防刷);评论(发布、回复、删除、分页、审核状态);敏感词、举报、拉黑与审核联动;
|
||||
系统分享、复制链接与海报;深链与落地页;分享素材模板。
|
||||
|
||||
验收要点:计数与实际关系一致(异步最终一致但可对账);审核中的评论对他人不可见;深链在未安装场景可唤起商店。
|
||||
|
||||
### 5.7 创作者中心(119 人天,最大单模块)
|
||||
|
||||
需求点:创作者入驻(身份资料、协议、审核状态);工作台与内容列表;分片上传与断点续传;上传任务校验、合并与回调;
|
||||
剧集/分集/封面/标签管理;多码率转码与媒资管理;人工审核与驳回原因;定时发布、下架、撤回与版权到期;
|
||||
免费/收费分集与试看规则;数据看板;审核结果与系统公告;角色隔离与敏感操作审计;多语言与币种展示预留。
|
||||
|
||||
验收要点:上传中断可续传且不产生重复媒资;转码失败可重试且失败原因可见;审核状态流转无"卡死"态;
|
||||
创作者只能看到自己的数据(水平越权测试覆盖);版权到期自动下架。
|
||||
|
||||
### 5.8 平台运营后台(100 人天)
|
||||
|
||||
需求点:管理员登录、RBAC、审批与操作审计;内容/剧集/分类/标签/榜单/推荐位管理;创作者资质与违规处理;
|
||||
用户检索与客服视图;评论举报与封禁申诉;订单、退款、补发与权益处理;定价与活动配置;经营大盘;批量操作与受限导出。
|
||||
|
||||
验收要点:权限变更后刷新即生效;关键操作 100% 留痕(操作人、时间、请求与响应);导出受限且可审计。
|
||||
|
||||
### 5.9 分集收费与支付(98 人天)
|
||||
|
||||
需求点:钱包与金币;订单与权益幂等状态机;商品配置与价格分层;Apple IAP 与 Google Play Billing 集成;服务端票据校验与重放防护;
|
||||
恢复购买与跨设备权益;退款、撤销、拒付与权益回收;商店账单对账;付费弹窗与解锁联动;免费集/试看/已购判断;定价实验预留。
|
||||
|
||||
验收要点:
|
||||
|
||||
- 同一票据重复回调只发放一次权益(幂等);
|
||||
- 票据丢失、异步通知延迟时,补偿任务能在 T+1 内自动修复并留痕;
|
||||
- 恢复购买在换设备、重装、切区三种场景下权益一致;
|
||||
- 每日与商店账单自动对账,差异进入人工处理队列。
|
||||
|
||||
### 5.10 质量、数据与上线(38 人天)
|
||||
|
||||
需求点:核心用例自动化与冒烟;接口契约与集成测试;登录/内容/播放/支付/后台压测;安全测试;
|
||||
IAP/Billing 沙盒到权益的端到端验证;埋点与指标一致性验证;UAT;商店素材与提审;灰度与回滚演练;值班与事故响应;备份与灾难恢复。
|
||||
|
||||
## 6. 核心流程与状态机
|
||||
|
||||
**内容状态**:草稿 → 待审核 → 审核中 →(驳回 → 草稿)→ 已通过 → 定时发布 → 已发布 → 已下架 / 版权到期。
|
||||
任何状态下都必须能被运营强制下架,且下架对已缓存列表在 60s 内生效。
|
||||
|
||||
**订单状态**:创建 → 已支付 → 已发放权益;异常分支:支付超时关闭、票据校验失败待补偿、退款中、已退款(回收权益)。
|
||||
所有状态迁移必须幂等,重复回调不改变已终态订单。
|
||||
|
||||
**权益判定优先级**:已购 > 活动免费 > 免费集 > 试看剩余 > 金币可扣 > 需充值。
|
||||
判定结果必须由服务端返回,客户端不得自行推断可播放性。
|
||||
|
||||
**账号状态**:未注册 → 已注册 → (受限 → 申诉中 → 恢复)/ 已注销。封禁与注销必须同步清理会话与缓存。
|
||||
|
||||
## 7. 非功能需求
|
||||
|
||||
### 7.1 性能与容量
|
||||
|
||||
业务方给的目标是"日 1 万加用户同时观看视频流畅"。这里按更严的口径落地:
|
||||
|
||||
| 指标 | 目标 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| 并发播放路数 | ≥ 10,000 路不劣化 | 对应 DAU 约 25–35 万;详见后端设计容量推导 |
|
||||
| 首帧时间 P95 | < 1.5s | 4G 网络、360p 起播 |
|
||||
| 卡顿率 | < 2% | 播放时长加权 |
|
||||
| 接口延迟 P95 | < 100ms(客户端热点接口 < 50ms) | 服务端耗时 |
|
||||
| 可用性 | 99.9%(第一阶段) | 月度 |
|
||||
|
||||
若实际口径是"DAU 1 万",资源需求下降约一个数量级,可先按小规格部署、保留水平扩容能力。
|
||||
|
||||
### 7.2 安全
|
||||
|
||||
播放地址签名与防盗链;接口越权校验(水平 + 垂直);支付服务端校验与重放防护;后台敏感操作二次确认与留痕;
|
||||
密钥集中托管与轮换;上线前渗透测试并将高危漏洞清零。
|
||||
|
||||
### 7.3 数据与埋点
|
||||
|
||||
统一指标字典,核心指标单一口径:播放(起播/卡顿/完播)、留存、收入、支付成功率。
|
||||
播放与收入类指标需与财务、商店账单对账,日报可追溯。
|
||||
|
||||
### 7.4 合规
|
||||
|
||||
隐私政策与用户协议随目标市场本地化;同意管理记录可审计;SDK 清单与商店 Data Safety / Privacy Labels 与实际数据流一致;
|
||||
账号注销与数据导出在承诺时限内完成。
|
||||
|
||||
## 8. 核心指标
|
||||
|
||||
- **北极星**:日均有效观看时长(有效定义:单次播放 ≥ 10s 且进度 ≥ 5%)。
|
||||
- **激活漏斗**:安装 → 首次启动 → 首页首播 → 完成 1 集 → 次日留存。
|
||||
- **商业化**:付费转化率、ARPPU、解锁集数、退款率、支付成功率。
|
||||
- **供给**:创作者上传量、审核通过率、平均审核时长、上架内容数。
|
||||
- **质量**:崩溃率、起播 P95、卡顿率、错误码分布。
|
||||
|
||||
## 9. 依赖与前置
|
||||
|
||||
以下前置项的关键路径在外部,研发无法加速,必须在 M0 并行启动(完整清单见评估表"外部前置与采购"):
|
||||
|
||||
1. 海外上架主体、DUNS / 企业验证、Apple 与 Google 组织账号;
|
||||
2. 公司域名、企业邮箱与官网(隐私政策与客服页依赖它);
|
||||
3. 隐私政策、用户协议、社区规范与版权政策;
|
||||
4. 海外短信通道(目标市场到达率与成本必须先压测);
|
||||
5. 云账号、对象存储、数据库、缓存、日志与 CDN(区域选择与预算同步确认);
|
||||
6. Apple / Google 支付账号、税务资料与商品配置;
|
||||
7. 内容版权台账(地区、期限、渠道、转授权范围必须结构化)。
|
||||
|
||||
## 10. 主要风险
|
||||
|
||||
| 风险 | 影响 | 应对 |
|
||||
| --- | --- | --- |
|
||||
| 市场/语言/内容形态未冻结 | 全链路返工 | 设为 M0 门禁,书面签署后进入变更控制 |
|
||||
| 商店账号与主体审核超期 | 无法提审 | 立项首周并行申请,准备备用主体 |
|
||||
| 支付一致性与跨账号权益 | 资损与投诉 | 幂等状态机 + 补偿任务 + 每日对账 + 客服入口 |
|
||||
| 视频与 CDN 成本失控 | 毛利被侵蚀 | 多码率策略、冷热分层、命中率与单位成本看板 |
|
||||
| 短信成本与到达率 | 无法登录 | 多供应商 + 频控 + 图形验证码 + 熔断 |
|
||||
| 内容安全与版权 | 下架或处罚 | 机审 + 人审 + 举报 + 申诉 + 结构化版权台账 |
|
||||
| 范围蔓延 | 无法形成可上线产品 | 冻结 MVP,变更需影响评估与批准 |
|
||||
|
||||
## 11. 里程碑
|
||||
|
||||
| 里程碑 | 内容 | 产出 |
|
||||
| --- | --- | --- |
|
||||
| M0 | 决策与前置 | 四项决策冻结、账号与主体、云与短信采购 |
|
||||
| M1 | 骨架与通道 | 双端与后端骨架、鉴权、存储转码链路、通道接入 |
|
||||
| M2 | 核心链路 | 账号、内容、播放器、记录收藏、创作者上传 |
|
||||
| M3 | 商业化 | 支付与权益、运营后台、内容治理 |
|
||||
| M4 | 提审准备 | 压测与安全测试、埋点验收、商店素材与提审 |
|
||||
| M5 | 上线与运营 | 灰度发布、值班与回滚演练、上线回归 |
|
||||
|
||||
## 12. 交付物清单
|
||||
|
||||
双端 App(iOS / Android)、创作者中心、运营后台、后端服务与 OpenAPI 契约、ERD、
|
||||
转码与媒资流水线、监控与埋点看板、测试与压测报告、安全测试报告、商店提审素材、发布与回滚 Runbook。
|
||||
Reference in new issue
Block a user