4.0 KiB
4.0 KiB
05 · 业务规则(必落地)
这些规则散落在 PRD 与原型的橙色虚线注释里,是产品的「魂」。开发时务必逐条实现,不可省略。
R1 · 登录与建档分流
- 微信授权登录后:无任何狗狗 → 直接进建档(0b);已有狗狗 → 跳过,进首页。
- 协议/隐私为必须合规要素,登录页底部展示。
R2 · 建档门槛最低
- 仅 名字、犬种 必填,其余(性别/年龄/体重/头像)全选填——降低首次门槛。
- 建档与编辑复用同一表单;编辑时预填已有值,标题改「编辑资料」。
- 犬种用于映射体型档位;中华田园犬、串串、找不到的犬种必须让用户手动选体型档位。
R3 · 狗步算法
- 狗步公式:
dogStepsByDog[dogId] = round(distanceMeters / dog.stride)。 stride由体型档位决定,不做「每品种一个系数」。体型档位与基础步幅:超小型0.20m、小型/短腿0.25m、中型0.35m、大型0.45m、超大型0.55m。- 填了体重时,在基础步幅上做二次校准:
stride = baseStride * (1 + (weight - 档位标准体重) * 0.005),修正幅度封顶 ±15%。 - 狗步只是展示层:多狗同遛时按每只狗分别计算;成就、未来排行榜和防刷统计只用距离、时长、连续天数等客观量。
R4 · 多狗选择
- 仅多狗用户点遛狗时弹出选择层;单狗直接进遛狗中。
- 选择层可多选,支持多只狗一起遛(一条 walk 关联多个 dogId)。
R5 · 遛狗计时与暂停
- 计时基于时间戳差值,扣除暂停时长;切后台/锁屏不丢。
- 暂停 = 停止计时 + 数据置灰,主按钮变「继续」。意义:遛狗常有等狗、捡便便的停顿,暂停防止污染数据。
- 结束必须二次确认再生成成果卡。
R6 · 定位与数据降级
- V1 纳入可选 GPS 距离与狗步:授权时累计距离并换算狗步。
- 未授权定位时,距离 / 狗步隐藏(存 null),时长照常。不阻断遛狗闭环。
- 首次打开不强制索权;定位应在开始遛狗或用户主动开启增强能力时请求。
- 地图轨迹回放、精准轨迹去噪后置,不阻塞 V1。
R7 · 成果卡全选填
- 照片、备注、天气、状态等所有输入字段全部选填,跳过也能保存——遛狗时用户腾不出手。
- 视角为「狗狗走了」而非「你遛了」。
- 分享朋友圈是首选 CTA(拉新入口)。
- 核心记录在结束遛狗时先保存;成果卡补充字段通过回写接口保存,跳过不影响记录沉淀。
R8 · 手动补记
- 入口:历史页 / 记录 Tab 右上「+」。
- 数据层标记
source='manual'、isManual=true。 - 补记可维持连续打卡不断签(参与连续天数计算)。
- 补记不计入排行榜(
countsForRanking=false,防刷量)。 - 补记记录列表带「补记」标识区分。
R9 · 统计维度
- 累计只用 次数 / 公里 / 连续天数。
- 不要配速、不要卡路里——记录陪伴厚度,而非运动表现。
R10 · 连续天数算法
- 以
walkDate(本地时区 yyyy-mm-dd)为单位。 - 同日多次遛狗:连续天数不变。
- 距上次为「昨天」:
currentStreak += 1。 - 距上次 > 1 天(断签):重置为 1。
- 补记同样按其
walkDate参与此计算。
R11 · 成就体系
- 成就按狗维度,基于 连续 / 累计 / 场景,而非「最多 / 最快」。
- 未解锁项显示进度(「还差 X」),强化收集与坚持动机。
- 成就墙露灰锁制造收集欲;新用户也显示全灰待解锁(含「首遛」)。
- 「记录」Tab 与「我的→成就」两入口指向同一页,文案统一叫「成就」。
R12 · 安全与防刷
- 所有写操作 + 统计累加 + 成就解锁只在云函数执行,客户端集合权限禁写。
- openid 一律服务端取,不信任客户端传参。
- 同一
(dogId, achievementKey)不重复解锁。