ENZH
和 AI 讨论这篇文章
ChatGPTClaude

Day 5-10,开始像个产品了

📊 幻灯片

第一周基本都在搭基础设施。这周的目标就一个:让这个 monorepo 看起来、用起来像一个真正的产品。

盘盘猫品牌诞生:一只穿着星月披风的猫咪从设计画布中现身盘盘猫品牌诞生:一只穿着星月披风的猫咪从设计画布中现身

测试冲刺

这周先把 Vitest 铺满了整个 monorepo。测试的优先级是我刻意排的,大概分三层:先测共享包,再测领域计算,最后是 API 路由的 integration test。

先说共享包。API 的 streaming 工具、supabase 客户端、积分管理,所有 app 都压在这几个包上面:createAIStreamResponse() 要是有 bug,15 条 streaming 路由全挂;积分扣减有 race condition 的话,用户要么白嫖,要么被双重扣费。所以光 streaming 这一个工具我就写了 36 个测试,把每条代码路径都盖住:流正常走完、流中途出错要把积分退回去、内容被过滤截断、SSE 事件的格式化。

然后是领域计算,就是八字推算、塔罗抽牌、六壬起卦这些。这块有个很实际的问题:我没法验证正确性,因为我零领域知识,根本不知道一个命盘算得对不对。但我能验证确定性——相同的出生数据永远算出同一个命盘,同一次洗牌抽出来的分布符合预期,同一个卦象映射到的含义不会变。反正我不懂算命,但我知道怎么写测试,测确定性这件事不需要懂算命。

最后是 API 路由的 integration test:mock 掉认证 token,验证积分有没有正确扣掉,确认 SSE 事件的格式跟前端对得上。

刻意排的三层测试优先级——从共享包到领域计算再到 API 路由,且领域逻辑测的是确定性而非正确性刻意排的三层测试优先级——从共享包到领域计算再到 API 路由,且领域逻辑测的是确定性而非正确性

CI 也在这周接上了,GitHub Actions 跑 lint → type-check → build → test,每个 PR 都走完整流程。一个人做开发,最怕的是改一个地方把另一个地方搞崩了,自己还不知道——没有第二个人帮你盯着,CI 干的就是这个活。

4 天 147 个 commit,过程不算光鲜。但做完以后心里就有底了,后面迭代再快,平台这一层我基本不担心,反正有测试盯着。

品牌:定成了一只猫

品牌这周也定了:PanPanMao(盼盼猫),一只会算命的猫,帮你看命运的猫。

猫咪主题一定下来,后面很多决定就自然顺下来了:每个应用有自己的猫咪风格装扮,积分货币直接改叫小鱼干——给一只算命的猫付小鱼干,这个设定挺顺的。

定猫这个决定,当时主要是觉得好玩,后来我发现品牌其实就是个产品决策。算命这个东西,有人觉得吓人,有人觉得是骗人的。套上猫咪之后它就变得亲切了,用户分享结果的时候心态是「这个挺有趣的」,没什么人去纠结准不准。觉得有趣的用户才愿意转出去,对传播的影响完全不一样。

品牌是个产品决策——给「吓人/骗人」的算命套上一只猫,它就变亲切,用户才愿意转发品牌是个产品决策——给「吓人/骗人」的算命套上一只猫,它就变亲切,用户才愿意转发

顺带说一句测试的回报:品牌重塑要换主题、改积分名称、更新 6 个应用的 UI 文案,这一圈改下来,测试套件帮我抓了三个差点上线的回归 bug。前面铺测试的那些投入,到这里就已经回本了。

Stripe 接上了

四个积分套餐:

  • 10 积分 / $6.99(入门档)

  • 50 积分 / $24.99(量大优惠)

  • 150 积分 / $59.99 — 挂了个「最受欢迎」标签(锚定档)

  • 500 积分 / $149.99(高级用户)

那个「最受欢迎」标签其实是个价格锚点。后来我做过测试把它去掉,那一档的转化率明显往下掉。

四档积分套餐里,中间那档挂「最受欢迎」标签当价格锚点——把它去掉,那一档转化率就往下掉四档积分套餐里,中间那档挂「最受欢迎」标签当价格锚点——把它去掉,那一档转化率就往下掉

每次解读只花几条小鱼干。这里关键的是积分这个抽象层:用户更愿意「花 5 条小鱼干」,不太愿意直接花一个具体的美元金额。货币从「积分」改名叫「小鱼干」之后,用户感知到的消费阻力明显降低了——花小鱼干的时候,脑子里想的不是花钱这件事,游戏化就是有这个威力。

这周在定价上花的脑子比写代码多,光是积分套餐怎么命名这一件事,花的时间就比写整个支付流程的代码还多。

落地页 v1

落地页第一版也做出来了:暖棕和金色的调子,移动端优先,标语是「千年智慧 × 现代 AI」——claude 帮我写的中文文案,这句是从 20 个方案里头脑风暴挑出来的。讲道理这种中文文案我自己是写不出来的,整个平台的多语言支持(zh-CN/zh-TW/en)的 i18n,也是 AI 翻译加人工审校做完的。

不过这版落地页后来被彻底推翻,重做成了暗黑奢华风(第 12-19 天),因为「温馨」这个调性会削弱用户对一个算命平台的庄重感。推翻的过程,后面那篇再讲。

和 AI 讨论这篇文章
ChatGPTClaude

订阅更新

新文章发布时发到你的邮箱,不发别的。


© Xingfan Xia 2024 - 2026 · CC BY-NC 4.0