Files
Pet3/docs/05-业务规则.md
2026-06-25 18:24:29 +08:00

70 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)` 不重复解锁。