ENZH

Day 12-19:功能爆发

这一周,PanPanMao 从一个"有意思的原型"变成了真正的平台。多条产品线、一套跑得起来的积分经济,还有一个让人看了觉得靠谱的视觉风格,都是这几天里堆出来的。

盘盘猫抛接多个功能模块:手相识别、邀请码、积分币盘盘猫抛接多个功能模块:手相识别、邀请码、积分币

积分经济,看着简单做起来全是坑

邀请返利

每个用户有一个唯一的邀请码,邀请人有奖励,被邀请人有欢迎礼。听着简单,一个码背后其实有三层实现:落地页捕获 URL 参数 ?ref=PPM-XXXX-XXXX;localStorage 做兜底,用户可能先逛一圈再注册,邀请码得在整个注册流程里持久化;最后是服务端校验,Supabase RPC claim_referral_bonus() 带最大邀请限制、竞态条件防护和反作弊检测。

比这三层实现更有意思的,是返利金额怎么定。一开始金额不对称,邀请人 10 积分,被邀请人 3 积分,结果用户反馈觉得这是在"薅朋友":"是在利用朋友赚积分。"改成对称的各 5 积分之后,邀请量反而上去了。多给邀请人奖励不一定能促进传播,让双方都觉得公平,效果更好,这跟我原来的直觉正好相反。

PR #59 后来修了一个 bug:link_referral() 会拒绝有效的新用户,因为它在用户还没有任何使用记录之前就去检查 usage_log。等于在防一件还不可能发生的事,典型的过度防御。

用户资料和引导流程

PR #41 是一次大改版。用户资料字段(姓名、性别、生日、出生时辰、出生地、语言偏好)全部可编辑,认证后有全局引导弹窗强制完善资料,还加了"一键带入出生资料"按钮,自动填充八字、占星和 K 线的输入表单。

语言优先级设计得比较细。已登录用户的 localePreference 覆盖浏览器语言,匿名用户走浏览器检测,语言切换器改完还要同步回资料,全是状态同步的细节。

手相面相,整个项目技术最硬的功能

整个功能在 PR #1 里一次落地。56 个文件变更,新增 6,881 行代码,15 次 commit。

浏览器里跑机器学习

计算机视觉全在客户端跑,不需要服务端往返。五个 hook 各管一段:

  • useMediaPipeLoader:WASM 懒加载(约 3MB 二进制),模块级缓存,第一次慢,之后秒开
  • useFaceDetector:BlazeFace 模型,在摄像头预览里以 60fps 跑,给用户"摄像头能识别到脸"的实时反馈
  • useFaceLandmarker:478 点面部网格,拍照时跑一次,提取三停、五官、十二宫位的测量数据
  • useHandLandmarker:21 点手部骨架,识别三大主线、辅助线和掌丘位置
  • useCameraCapture:封装 getUserMedia 调用,8 秒超时兼容移动端浏览器

实时效果是掌纹上有绿色标记点、面部有特征网格。实现上是在视频画面上叠一层 Canvas,移动端用隔帧渲染保持可用帧率。

PR #35 后来给掌纹检测加了 GPU→CPU 回退,有些设备 WebGL 报告可用,推理时实际会挂,回退机制检测到失败后自动切到纯 CPU 模式重试。PR #50 把所有 WASM 和模型文件本地化到应用静态资源目录,因为中国用户访问 cdn.jsdelivr.net 根本不稳。做中国市场的产品,CDN 这关永远在那等着。

多模态 AI 解读

拍下来的图片通过多模态 prompt 发给 Claude 或 Gemini。光说一句"看看这个掌纹"只会得到泛泛的结果,所以 prompt 设计分了四层:先定角色,一位有 30 年经验的中国相术大师;再注入知识,五官、三停、十二宫位、脸型、掌纹含义、掌丘解读规则;然后要求用多个相术体系交叉验证分析;最后指定结构化输出,包括段落结构、置信度和可操作建议。

知识包的正确性靠 30 个领域测试来验证。prompt 模板还会根据性别注入特定知识,女性用户会得到额外的旺夫/克夫分析、柳庄四件解读和女性特有的掌纹特征分析。

从零到上线只用了四天。浏览器端 ML、多模态大模型、结构化 AI 输出,每一项单拿出来都是近几年才出现的新技术,组合在一起确实有种魔法的感觉。自己试用的时候都忍不住想:"这玩意儿怎么还挺像回事?"

落地页推倒重来

原来的暖棕金色主题不好使了。产品越来越正经,用户是带着事业、感情、健康这些真实问题来找答案的,"温馨"反而削弱了庄重感。

于是推倒重来,做成暗黑奢华风:深邃的黑底,金色点缀,猫从可爱吉祥物变成了神秘预言者。用户反馈里开始出现"值得信赖"和"专业"这样的词。同一个产品,换个色调,用户给出的信任就不一样。

第 19 天的成绩单

7 条产品线、跑起来的积分经济、邀请返利系统、暗黑奢华风落地页,还有浏览器端的掌纹和面相识别,背后是大约 700 次 commit。这一周结束的时候我意识到,瓶颈已经不在工程了,工程能力跟得上任何决定。现在卡住我的是产品决策本身:下一步做什么、怎么定位、收多少钱。这三个问题,写这篇日记的时候还没想清楚。


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