Skip to content

Latest commit

 

History

History
61 lines (49 loc) · 4.39 KB

File metadata and controls

61 lines (49 loc) · 4.39 KB

需求文档:整体功能验收与端到端测试

编号:002 | 状态:已执行(2026-06-13,19/0 通过) 关联:001 三大模块、docs/architecture.mdtests/e2e-backend.sh

1. 目标

对"从视频上传到流媒体播放"的整条链路做端到端测试与功能验收,并逐项核对"播放体验对齐商业流媒体"。

2. 端到端自动化测试(后端)

脚本 tests/e2e-backend.sh,对线上 Worker 做 19 项断言,可重复运行、有 pass/fail 退出码。

source ~/.zshrc
PIN=1234 bash tests/e2e-backend.sh   # 退出码 0=全过

最近一次结果(2026-06-13):通过 19 / 失败 0。 覆盖: 健康检查 · 无令牌 401 · 错误 PIN 403 · 激活发令牌 · 带令牌拉库 · library 含媒体 URL · 媒体 Range 206+Content-Range · 媒体全量 200 · 边缘缓存 HIT · 封面 200 · 进度 GET(含 weekSec 本周报告)· 进度 POST 累加 · 规则错误 PIN 403 · 规则保存 200 + 回读生效 · 超时段拦截 · 超时长拦截。

3. 上传 → 播放 全链路 E2E(手动 + 模拟器)

  • cpv upload --category 上传 → manifest 更新 → 库立即可见(CLI 已验证)。
  • ✅ iOS 模拟器:激活 → 首页(金刚区/系列) → 分类 → 播放(真实流) → 我的(家长 PIN) 全部截图验证。
  • ✅ 播放真实流媒体(Big Buck Bunny 720p):206 分段、缓冲、拖动、同系列自动下一集(模拟器实测画面解码正常)。
  • ✅ 家长闸门:超时段/超时长 → "休息一下"页(模拟器实测触发)。

4. 播放体验 vs 商业流媒体 —— 逐项验收清单

(对标 Netflix / YouTube / B站 / 爱奇艺;✅=已实现并构建通过)

维度 功能 状态 实现位置
播放控制 播放/暂停 PlayerView 中心大按钮
播放控制 进度条拖动 + 缓冲指示 scrubber(fill+buffered+knob,拖动 seek)
播放控制 ±10 秒快退/快进 中心 gobackward/goforward.10
播放控制 倍速(0.75/1/1.25/1.5,儿童克制档) 倍速菜单
播放控制 播完重播 ended 态显示重播按钮
音频 音量滑块 + 静音 bottomBar Slider + 静音按钮
字幕 CC 字幕开关(内嵌字幕轨) AVMediaSelectionGroup(hasSubtitles 时显示)
内容导航 选集面板(同系列) episodeListSheet
内容导航 同系列上一集/下一集 onNext/onPrev + 下一集按钮
内容导航 同系列自动连播 autoNext(不跨系列、无推荐)
内容导航 继续观看(断点续播) startAt + 进度上报
内容导航 收藏(我喜欢的) model.toggleFavorite + 首页行
系统集成 AirPlay 投屏 AVRoutePickerView
系统集成 Now Playing 锁屏/控制中心/耳机线控 MPNowPlayingInfoCenter + MPRemoteCommandCenter
儿童/家长 防误触锁定(长按解锁) locked + lockedOverlay
儿童/家长 每日时长上限 + 允许时段 家长设置 + 服务端规则 + 休息页
儿童/家长 护眼休息提醒 eyeCareOverlay(间隔可配)
儿童/家长 学习报告(今日/本周) weekSec + 家长设置展示
性能 边缘缓存降起播 Worker Cache API(etag 键)

有意不做(违背封闭专注理念,对标里明确排除):弹幕、评论/社交、算法推荐流、热度榜、外链、画质手动切换(封闭库统一 720p)、2x+ 高倍速、PiP 默认开。

已知取舍:双击快进手势未做(已有可见 ±10s 按钮,避免与单击控件冲突);缩略图进度预览未做(需 HLS I-frame,当前为 MP4 渐进式)。

5. 两端构建与交付

  • ✅ macOS:xcodebuild ChildVideo_macOS BUILD SUCCEEDED;已安装到 /Applications/ChildVideo.app 运行。
  • ✅ iOS(模拟器):xcodebuild ChildVideo_iOS -sdk iphonesimulator BUILD SUCCEEDED;模拟器全流程验证。
  • iOS 真机交付:用免费 Apple ID 在 Xcode 签名 + SideStore 安装(见 app/README.mddocs/architecture.md §4.4)。真机 .ipa 需用户本地 Apple ID 签名(无年费路径)。

6. 结论

端到端后端测试 19/0 通过;上传→播放全链路在模拟器与 CLI 实测打通;商业播放器体验清单逐项落实(封闭花园相关项有意排除)。功能验收达成。