Dramivio 分阶段开发任务卡
本页目录
使用方法顺序与依赖基础与认证D00 最小工程D01 服务端邮箱 OTPD02 Web 登录D03 App 登录播放器关口D04 App 原生单集播放D05 Web 单集播放D06 离线播放可行性内容与播放业务D07 剧库与查询D08 原子授权与额度D09 App 控制与长按倍速D10 Web 控制D11 历史与续播用户功能D12 首页与查询D13 追剧与待办D14 App 缓存队列D15 邀请关系D16 邀请资格与账本D17 账户敏感操作D18 后台配置发布与扩展D19 综合验收E01 普通广告E02 激励广告E03 付费权益2026-10-02 · 配套 PRD v3.3 与工程路线 · 当前是开发计划,尚未执行真实系统测试。
使用方法
一次交给开发模型一张卡,验收后再选下一张。先完成基础与播放器验证,再开发业务;不要把全部卡一次交付为一个大任务。每张卡提交代码、锁定版本、可复现测试、实际结果、未验证项与回滚方法。模拟服务只用于可重复测试,不能替代真机播放或真实认证集成验收。
可直接复制以下指令,并替换任务编号:
本次仅执行 Dxx。先阅读 dramivio-prd.md、dramivio-engineering-plan.md 和本卡,检查仓库已有实现与约束。按卡内依赖实现,复用成熟组件,不另写认证、验证码或视频解码内核。对业务状态和边界执行本卡测试;失败先修复。交付代码位置、版本、测试命令和实际结果、设备与网络条件、未验证项及回滚步骤。不得把模拟结果写成真机通过。完成本卡即停止,不自动实施下一卡。
顺序与依赖
| 卡 | 单项交付 | 前置 |
|---|---|---|
| D00 | 最小工程和兼容矩阵 | 无 |
| B00 | Payload后台框架接入,见后端复用方案 | D00 |
| D01 | 服务端邮箱 OTP | D00 |
| D02 | Web 登录 | D01 |
| D03 | App 登录 | D01 |
| D04 | App 原生单集播放验证 | D00 |
| D05 | Web 单集播放验证 | D00 |
| D06 | App 离线资产播放可行性 | D04 |
| D07 | 剧库与统一查询 | D00、B00 |
| D08 | 原子播放授权与额度 | D01、D07 |
| D09 | App 播放控制与长按倍速 | D04、D08 |
| D10 | Web 正式播放控制 | D05、D08 |
| D11 | 逐集进度与跨端续播 | D08、D09、D10 |
| D12 | 首页与查询列表 | D02、D03、D07 |
| D13 | 追剧及登录后续办 | D11、D12 |
| D14 | App 缓存任务 | D03、D06、D08、D11 |
| D15 | 邀请关系接入 | D01 |
| D16 | 邀请资格与奖励账本 | D08、D11、D15 |
| D17 | 改邮箱、清历史与注销 | D01、D11、D14、D16 |
| D18 | 后台配置及发布回滚 | D07、D08、D16 |
| D19 | 发布前综合验收 | 所有上线功能 |
| E01 | 普通广告 | D19后按需 |
| E02 | 激励广告 | E01、D16后按需 |
| E03 | 付费权益 | D19后按需 |
D04–D06是选型关口,必须在缓存完整开发前完成。无可用媒体或真机时先完成独立模块,播放器兼容和性能保留未验证状态。
基础与认证
D00 最小工程
建立独立 App、Web、API 包;共享类型与业务纯函数,Web不能导入原生播放器。新项目采用能本地构建的 Expo development build;已有 RN 项目先沿用原结构。API用 Hono、PostgreSQL;暂不引入微服务和仅为认证增加的 ORM。
验收:iOS/Android Release样例可启动,Web可构建,数据库迁移可从空库执行与回滚;记录 RN/Expo、React、播放器、手势库、Better Auth 的兼容版本、许可证和锁文件。确认开发构建与生产构建配置分离,仓库无凭证。
D01 服务端邮箱 OTP
接入 Better Auth 官方 emailOTP;完成SMTP发送适配、账号自动创建、条款版本记录和业务账户映射。验证码哈希存储、轮换重发、有效期与尝试次数按工程路线;多维限流由服务端执行。开发邮件捕获工具仅用于测试。
验收:新邮箱首次成功验证只建一个账户;老邮箱登录复用身份;验证码过期、旧码、重复提交、错码上限、并发重发、邮件失败均可恢复;响应不泄露邮箱是否注册。两实例同时验证不重复建账;限流跨实例一致;测试使用共享数据库限流或Valkey,不能用各进程内计数宣称通过。同IP多个正常用户不会仅因同IP被永久封禁。认证路由不能绕过业务动作所需权限。
D02 Web 登录
仅Logo、剧库名、“欢迎登录”、邮箱输入与必要提示。使用官方客户端与同源安全会话;保留登录前的有效业务动作,无额外宣传页。
验收:刷新保持会话,退出撤销访问;过期会话提示并可恢复;OTP错误/重发倒计时/邮件延迟状态完整;非法跳转地址被拒绝,Cookie/CSRF/CORS配置验证;浏览器后退不重复提交业务动作。中英文与键盘可用。
D03 App 登录
用官方 Expo 集成和 SecureStore,不把会话存在普通持久化存储中。业务请求携带框架要求的会话凭据;用户界面缓存不承担服务端授权。
验收:冷启动恢复、会话过期、主动退出、远端撤销、重装与系统备份恢复符合PRD;锁屏返回与网络切换不重复创建账户;被篡改本地登录状态不能追剧/缓存/领次数。登录取消保留页面,不执行待办动作。
播放器关口
D04 App 原生单集播放
接入 react-native-video 稳定版本候选,通过 AVPlayer/ExoPlayer 播放真实 HLS 测试资产。实现独立 Adapter 和单播放器生命周期;先验证加载、暂停、seek、倍速、异常、释放,不做推荐流。
验收:区分 metadata-ready 与可显示画面;海报只在画面就绪后消失;快速切源迟到回调无污染;连续切换50次无音频残留、旧画面、持续内存增长;后台/来电/音频焦点恢复正确。记录正常与弱网首帧代理指标、缓冲和真实录屏;不把 onLoad 视为首帧。验证 Android SurfaceView 上控件叠层和手势。
D05 Web 单集播放
原生HLS优先,MSE环境懒加载 hls.js;仅在播放器路由加载相关代码。完成浏览器 video adapter、资源销毁与 play Promise 拒绝恢复。
验收:真实 Safari 和 Chrome 至少各一条路径;首页不请求视频分片或hls.js;自动播放被拒后点击可继续;清晰度切换、seek、缓冲、退出释放有效;320/390/768/1280适配,无长按手势;弱网与低内存浏览器不挂死。Playwright WebKit通过不能替代真实Safari通过。
D06 离线播放可行性
验证实际首发授权源的下载格式,不做完整队列;至少覆盖生产HLS切片、密钥、字幕及平台下载产物由同一RN引擎播放,按source capability逐项放行。不得用MP4样例代替生产HLS兼容验证。分别验证iOS/Android本地文件或平台支持的离线HLS路径、存储与过期删除。授权内容要求DRM时单独验证许可证能力;不以普通MP4通过替代DRM通过。
验收:飞行模式冷启动可播、seek与倍速可用;文件不完整不可播放;失效许可不可播;无授权下载格式明确禁用缓存。输出每平台支持矩阵与失败原因;不支持的资产不能进入后续下载承诺。
内容与播放业务
D07 剧库与查询
实现 canonical_drama、canonical_episode、source映射与审核合并;聚合只接授权源。公开响应屏蔽营销渠道名,但不删除权利方要求的署名。稳定排序/游标分页,10条剧卡为一页。
验收:同名不同剧不误合并、改名同剧可合并;不同剪辑版本不错误映射集号;失效源不返回可播放承诺;分页无重复/漏项,查询变化取消旧请求;后台标签发布必须恰好10个有效双语标签。
D08 原子授权与额度
实现服务端 grant、日额度账本、幂等键、同集当日去重和签名媒体访问。Web10/App50共享消费记录,非相加60;服务端可信端能力检查,不能靠请求字段自称App。游客策略沿用PRD,游客与账号合并按PRD防止重复领取。
验收:Web先看10集后App仅余40个基础新集;App先看11集后Web不能再解锁新集,同日已解锁重播允许;100并发请求不超扣,重试不双扣;切午夜、过期grant、撤权内容、配置降额、余额不足均正确。媒体源拿不到合法grant不可播放,客户端伪造余额无效;缺可信平台证明时记录App仿冒残余风险并验证共享设备/账号/总成本限额,不能把自报请求头或安装密钥当绝对证明;失败补偿只按PRD可确证条件发生。
D09 App 控制与长按倍速
接入D08授权;选集、基础倍速、seek、同剧下一集;空白画面按住约350ms临时2×,松开/取消恢复原速度。使用与当前RN兼容的成熟手势库,控制区不响应长按。
验收:从1×/1.5×/2×开始分别长按,结束恢复各自基础速度;滑出、第二指、切集、选集面板、后台、来电、手势取消、组件卸载均不残留2×。暂停/广告不触发;缓冲中的用户暂停不被恢复逻辑覆盖;100次混合手势与快速切集无旧事件修改新播放器。预加载仅下一集元数据/海报,不预扣或建立第二解码器。
D10 Web 控制
复用授权业务,不复用App手势层。实现选集、倍速菜单、进度、明确点击播放和单播放器释放。
验收:触屏正常滚动、文本和按钮不被长按劫持;授权等待导致play拒绝后重试不重复扣次;手机Safari、Android Chrome、桌面键鼠流程完整;页面隐藏暂停、返回页面保持用户播放意图;源错误和额度错误分开提示。
D11 历史与续播
按用户+统一集ID保存位置、时长、完成状态、修订与history_epoch。短周期本地记录,服务端按节流及关键事件同步;不按每个播放器进度事件请求网络。广告与缓冲时间不计内容观看时间。
验收:跨端续播正确;旧设备、旧集回调、离线重放不能覆盖新修订;主动回看可降低当前位置而完成状态不误取消;尾部完成判定符合PRD;清历史后旧epoch不复活;倍速资格按可信规则计算,不信任客户端上报完整观看。退出/换号后的旧上传仍绑定原user/session/epoch,不迁移到当前账号。
用户功能
D12 首页与查询
实现10标签横向滚动、右固定筛选、两列推荐、查看更多复用查询页;二级页返回+标题+可编辑输入+综合筛选。按PRD区分刷新和加载下一页动作,不倒置平台常规手势。
验收:每页10部;旧搜索迟到不覆盖新词;反复加载不重复;空/错/尾页状态完整;免费游客触发需登录的组合筛选按PRD续办;中英文长标签不挡筛选;Web列表与RN列表分别测试滚动和图片开销。
D13 追剧与待办
封面右下角快速追剧,登录后执行一次,追剧页续播引用D11。待办有类型、目标、有效期和幂等标识。
验收:快速双击一致,登录取消不追剧;登录后内容下架不追不存在的目标;切账号不串待办;取消与重新追剧无重复记录;Web缓存待办登录后仍只引导下载,不变成浏览器下载。
D14 App 缓存队列
基于D06已支持矩阵,实现选集、容量估算、预留/提交、校验、暂停重试、过期与账号隔离;沿用PRD的下载订单状态机和失败补偿。Web只提供下载App入口。
验收:空间不足、后台中断、进程杀死、断网、部分文件、许可证未知、注销与切账号均正确;同集重复任务不重复扣;离线播放不重复耗费当日额度;缓存仍不能突破授权和PRD离线有效期。真实飞行模式验证,不只关闭API模拟离线;补PRD I03/I22/I24:首次可播交付前后取消、已发许可响应丢失、在线/下载同集100并发、task_id越权、续许可不延长原到期。
D15 邀请关系
先验证成熟开源 referral 插件与邮箱OTP的注册时序;未验证兼容不得默认采用。框架只承担已验证的关系能力,奖励不由插件直接发放。若不兼容,使用简单邀请关系表,不另造登录系统。
验收:老用户不能重新绑定,新用户只能绑定一次;自邀、循环、过期/伪造码拒绝;并发注册/绑定无双关系;规则版本与来源保留;邀请链接跳转安全;同IP风险进入可解释审核,不自动认定两个账户同一人。
D16 邀请资格与账本
实现后台规则快照、有效观看资格、风险审核、待发/已发/撤回/过期账本与Outbox。所需集数、时长、奖励量与上限可配置;不信任客户端观看完成或邀请人数。
验收:重放事件、并发回调、跨午夜、改规则、账号删除/重新注册、相同内容重播不重复资格/发奖;外部失败可对账,未知结果不释放后重复发奖;IP共享用户可申诉;默认不开广告/付费权益。覆盖PRD奖励总余额和到期消耗顺序。
D17 账户敏感操作
复用框架改邮箱和删除账户能力;需要近期验证的动作绑定具体账户、用途和一次性证明。先执行业务终止、媒体授权/缓存撤销、删除任务与审计,再按PRD处理身份。删除入口统一校验,不能另一路由绕开。
验收:改邮箱新旧邮箱验证正确;普通登录OTP不能跨账号/跨用途删除;敏感意图由服务端创建,新OTP会话核对当前账号与时间;证明消费与terminal同事务或稳定操作ID幂等,清理失败继续原操作;一次性证明不可重放;认证删除与业务清理中途故障可重试,不出现仍可用旧会话或奖励重建。清历史后在线/离线旧数据及备份恢复不复活;删除重新注册不取回旧奖励。
D18 后台配置
基于Payload现成Admin、Collections、Versions与Access Control配置字段和薄业务命令页面,不重新开发管理后台CRUD。配置标签、邀请资格、Web/App额度、广告与收费开关;权限分级、草稿校验、发布版本、审计和回滚。客户端配置不作为授权依据。
验收:9/11标签不可发布,缺英文不可发布;旧客户端与未知配置安全降级;上线奖励机会保留已承诺版本;降额不负扣;未授权后台用户不能发布;关闭广告/付费后不再产生新机会或订单,已有结果仍完成对账。
发布与扩展
D19 综合验收
执行工程路线性能场景和PRD测试矩阵;记录版本、真机、浏览器、媒体、网络、样本量和统计定义。完成日志脱敏、grant/缓冲/异常监控、备份恢复、灰度开关与回滚演练。
验收:基础账本与去重没有并发漏洞;正常网络首帧与缓冲达到路线目标或列出实测差距和阻塞;长按取消无泄漏;Web首页无播放资源下载;旧会话和被撤权内容不可访问。不可用录屏/截图替代服务端与真实浏览器证据。未通过的上线必要项不能标全功能通过。
E01 普通广告
仅启用设计预留槽位:App首页/查询列表、我的me_card及默认关闭的集间位;Web仅首页/查询列表/我的,不开放集间位。不覆盖搜索、播放主控、选集、登录OTP。广告不占每页10部剧数量;只可使用经核验开源的接入组件,供给无可用适配时保持关闭。
验收:无填充/超时不阻塞内容;广告布局不跳动、不计播放额度或历史;点击与曝光幂等;中英文广告标识可见;频控、隐私开关、撤权与紧急关闭有效;会员免广告生效。按PRD验证跨端60秒冷却、直投合计20次/日、集间3次/日,以及关闭同页slot后不立即替换广告。
E02 激励广告
按PRD offer/机会/证明/奖励状态接入;必须有可信服务端完成证明、幂等查询及未知结果对账。仅客户端播放完成事件无法安全发奖,供给不具备能力则功能保持关闭。
验收:伪造完成、重复回调、断网、过期机会、结果未知、关闭开关、余额上限和人工对账均按PRD;广告中App长按禁用;拒绝观看不影响已有权益。
E03 付费权益
只按PRD开关接入订单、服务端权益和平台允许的支付路径;不靠前端隐藏按钮完成收费改造。客户端支付库需开源,交易服务/平台能力单独记录;首版不开启。
验收:重复通知、待定订单、退款、续订失败、撤销、权益到期、跨端恢复、历史免费额度迁移正确;展示金额币种来自可信平台商品,服务端验证并冻结交易快照;商品与配置不一致重新确认,后台不能单独改平台实际价格;关闭入口不丢弃已存在订单对账。不要求免费首版提前交付支付代码。
端证明验收必须列出iOS、带Google服务Android、不带Google服务Android的能力矩阵。签名挑战和安装钥匙仅提供连续性;无Google服务的低风险合法App仍按PRD提供50集,不能一律降到Web10集。可完整模拟握手的攻击者仍可能仿冒,按成本/带宽限流、共享预算与审核控制;媒体访问始终需要合法grant。