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)也是 AI 翻译、再人工审校做完的。

但这版落地页后来被整个推翻了,重做成暗黑奢华风(第 12-19 天)。原因是「温馨」这种调子,会让用户觉得一个算命平台不够庄重。推翻的过程后面那篇再讲。

和 AI 讨论这篇文章
ChatGPTClaude

订阅更新

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


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