Listen & Pick 路线图

一份用试用家庭验证低摩擦听力习惯的产品计划。

试听范围
5 天
听力题数
15 道题
首次练习
免登录
下一步3

约到 3-5 个家长带练试用家庭

收集 7 天证据:至少完成 5 次练习、比现有工具更快开始,并且至少 1 个家庭认为它可以成为主要练习方式。

核心
验证关口

准备第 6-10 天课程扩展

推荐下一批先做第 6-10 天家庭日常扩展,只在试用证据和资产 dry-run 通过后,把试听包从 5 天扩到 10 天。

下一步
推荐切片

留存验证后的持久化家长进度

只有在看到重复使用后,再加入孩子档案、跨设备进度和家长看板。

后续
验证之后
进行中2

招募并观察试用家庭

用等待名单、联系页面、本地试用日志和仅浏览器保存的家庭准备度追踪,把口头兴趣转成真实的 7 天家庭使用行为。

核心
当前推进

手动 Cloudflare 试用发布路径

继续把部署放在 GitHub Actions 外,手动验证 Worker 资源,并在每次试用发布前运行第 1 天本地预检。

下一步
发布路径
已完成3

公开试听包已接入应用壳

首页和 /play 已经可以免登录打开,用 5 天本地优先练习流完成一句英文、两张图的核心体验。

核心
基础已上线

本地进度能恢复下一次练习

孩子昵称、当前天数、复习模式、跟读开关和语速都会保存在本地,刷新后能继续。

后续
免账号进度

本地摩擦日志能承接练习证据

结果页现在会把练习天数和到第一句英文的秒数预填到试用日志,同时家长记录仍然只保存在本机,除非主动分享。

下一步
试用证据

手动 Cloudflare 试用发布路径

首轮试用发布继续保持手动、以证据为准:先运行第 1 天本地预检,通过 Wrangler 发布,再用 live smoke 命令检查公开 workers.dev 地址后才把第 1 天发给家庭。

可复制试用发布运行清单

用这份运行清单从本地预检推进到手动部署、线上冒烟和 waitlist 发送门禁,避免临场判断下一步能不能做。

1. 第 1 天本地预检

pnpm listen-pick:preflight
仅本地

证明:终端以“Listen & Pick Day 1 local preflight OK”结束,并且没有部署、R2 上传、线上冒烟、结账、账号门槛或邀请发送动作。

未完成前阻断:不要部署、不要复制第 1 天邀请,也不要上传课程媒体。

2. 手动 Worker 部署

pnpm deploy
手动

证明:Wrangler 部署到目标 Worker 成功,并输出已部署的 workers.dev 路径。

未完成前阻断:不要对旧构建跑线上冒烟,也不要发送第 1 天。

3. workers.dev 线上冒烟

pnpm listen-pick:smoke:live
线上证据

证明:命令通过 /、/play?day=1&start=1、/pilot-log、/waitlist、对应 /zh 本地化路径和 /api/ping。

未完成前阻断:不要复制或发送第 1 天邀请。

4. waitlist 发送门禁

Open /waitlist
人工门禁

证明:追踪器显示 3 个可邀请家庭,并且浏览器本地第 1 天发送检查已勾选本地预检和线上冒烟。

未完成前阻断:继续招募或补完缺失发布检查后,才能复制邀请。

5. 复制并发送第 1 天

Copy Day 1 invite from /waitlist
邀请

证明:先复制准备报告;邀请里包含练习链接、试用日志链接、每日记录提示和儿童隐私边界。

未完成前阻断:第 1-5 天日志回来前,不要把发送视为课程验证完成。

试用发布门禁

第 1 天本地预检

发布前运行 pnpm listen-pick:preflight。它会顺序执行配置审计、Biome、locale 检查、公开壳隐私契约、法律页隐私边界契约、联系反馈安全契约、关于页产品论点契约、练习实验室契约、公开内容契约、公开 footer 试用路径契约、变现边界契约、账号边界契约、pnpm listen-pick:settings-boundary-contract、pnpm listen-pick:curriculum-expansion-contract、pnpm listen-pick:repeat-entry-contract、pnpm listen-pick:manifest-contract、覆盖 sitemap 和 robots 的 pnpm listen-pick:seo-contract、启动契约、pnpm listen-pick:assets-contract、资产 dry-run、证据/日志/邀请契约、pnpm listen-pick:live-smoke-contract、locale 编译和生产构建,不会部署、上传资产、开放结账、扩展课程、运行线上冒烟或要求先注册再练习。

Cloudflare 配置审计

试用发布前运行 pnpm cf:launch:check,清掉 Worker、D1、R2、环境变量和域名相关阻断项。

试听包资产 dry-run

运行 pnpm listen-pick:assets-contract 和 pnpm listen-pick:assets,并确认没有缺失引用后,才考虑 R2 上传或发送公开试用链接。只有 Cloudflare token scope 检查通过且明确需要复制到 R2 时,才运行 pnpm listen-pick:assets:upload -- --confirm-token-scope。

本地生产构建

先在本地运行 pnpm build,确认 TanStack Start Worker bundle 通过后,再执行 pnpm deploy。

workers.dev 线上冒烟

部署后先在 workers.dev 地址打开 /、/play?day=1&start=1、/pilot-log、/waitlist、对应的 /zh 本地化路径和 /api/ping,再邀请家庭试用。

手动命令顺序

1. 运行第 1 天本地预检
pnpm listen-pick:preflight
2. 门禁通过后手动发布
pnpm deploy
3. 冒烟检查 workers.dev 试用地址
pnpm listen-pick:smoke:live

线上冒烟检查清单

部署后、发送第 1 天邀请前,在 workers.dev 地址运行 pnpm listen-pick:smoke:live。它覆盖家庭实际会用到的英文和 /zh 公开试用路径。

workers.dev

HTTP 200,可见第 1 天入口,匿名家庭练习前不出现登录/注册门槛。

HTTP 200,可见第一道听力题,再听/继续控件可用。

HTTP 200,本地每日摩擦日志表单和隐私边界正常渲染。

HTTP 200,试用同意表单、第 1 天邀请复制和家庭准备度追踪正常渲染。

HTTP 200 JSON 响应:{ "message": "pong" }。

第 1 天邀请前人工门禁

路线图只负责说明。复制第 1 天邀请前,仍需要发布负责人确认真实本地和线上证据。

/waitlist 里有 3 个可邀请家庭

每个家庭都在本地记录了 4-6 岁匹配、7 天家长带练约定和每日摩擦日志约定。

第 1 天发送检查里已确认本地预检

这个勾选代表手动部署前真实通过了 pnpm listen-pick:preflight。

第 1 天发送检查里已确认线上冒烟

这个勾选代表部署后英文和 /zh 公开路径真实通过了 pnpm listen-pick:smoke:live。

复制邀请前已先复制第 1 天发送准备报告

报告让发布负责人一次看到家庭、本地预检、线上冒烟、公开路径和隐私证据。

本地预检没有 R2 上传、线上冒烟、部署或邀请发送

本地预检只是发布门禁;线上检查和家庭发送都保持人工执行。

下一批课程内容决策

公开试听包继续保持 5 天;等试用证据和资产 dry-run 通过后,下一批先准备 Days 6-10 家庭日常扩展。暂时不直接跳到 Levels 1-20 或完整 100 关。

当前天数
5
目标天数
10
目标题数
30

推荐下一批内容

第 6-10 天 · 家庭日常扩展

新增 5 天 · 15 道题 · 每天一个熟悉家庭场景

它延续现有习惯,不改变产品形态:仍然是短练习、两张图选择,同时让家长看到试听包可以自然扩成课程。

扩展发布状态

尚未解锁

在试听包拿到真实家庭证据、扩展资产 dry-run 通过前,第 6-10 天只保持在规划状态。

尚未解锁

发布边界

此时不要发布 Days 6-10,也不要上传 R2。

在课程扩展契约和扩展资产 dry-run 都通过前,第 6-10 天继续保持待办。

课程扩展契约
pnpm listen-pick:curriculum-expansion-contract
扩展资产 dry-run
pnpm listen-pick:assets

第 6-10 天 · 家庭日常扩展

新增 5 天 · 15 道题 · 每天一个熟悉家庭场景

等试用信号后准备

它延续现有习惯,不改变产品形态:仍然是短练习、两张图选择,同时让家长看到试听包可以自然扩成课程。

Levels 1-20 小试点包

20 关 · 更大的媒体包 · 更强课程感

等重复使用可见后再做

它能增强课程深度信任,但在 5 天行为被证明前,资产和 QA 成本太高。

完整 100 关课程库

完整课程库 · R2 优先媒体方案 · 长 QA 周期

不作为第一批扩展

完整课程库会把团队重新拉回平台建设,而我们还没证明家庭第二天会回来。

发布前必须满足

试用家庭已约定
需要真实邀约

至少 3 个家长带练家庭已经准备试用公开版本,并愿意分享每日摩擦记录。

试听包已有证据
等待 7 天证据

用 7 天日志确认家长是否真的需要相邻内容,而不是更重的账号功能。

资产 dry-run 通过
需要扩展资产 dry-run

扩包或 R2 上传前,必须运行资产同步 dry-run,并且没有缺失引用。

试一下当前公开练习流

当前版本刻意保持很窄:打开第一天,听一句英文,选一张图,然后观察真实家庭里这个习惯能不能留下来。

开始第 1 天