Skip to content

里程挑战详情页 PRD

版本: V2.0
更新日期: 2026-02-25
依赖: 通用组件规范V2 变更: 新增打卡型挑战详情页差异化设计;挑战类型枚举修正(速度→时长);新增打卡进度区和打卡型排行榜


一、模块定位

场景:官方/俱乐部发起的里程/落差/速度挑战赛,用户通过 GPS 轨迹自动累计成绩。

核心交互:查看规则 → 报名 → 滑雪自动累计 → 查看排名


二、差异化插槽区

2.1 排行榜区

┌────────────────────────────────────┐
│ 🏆 实时排行榜           Top 100 ▼  │
│ ┌────────────────────────────────┐ │
│ │ 🥇 雪疯子    太舞     128.5km  │ │
│ │ 🥈 粉雪控    万龙      98.2km  │ │
│ │ 🥉 单板小明  云顶      87.6km  │ │
│ │  4 冰雪女王  松花湖    76.3km  │ │
│ │  5 极限骑士  北大壶    71.8km  │ │
│ │        [查看完整榜单 ▼]        │ │
│ └────────────────────────────────┘ │
├────────────────────────────────────┤
│ 📈 我的战绩                        │
│ ┌────────────────────────────────┐ │
│ │ 当前排名  #42                   │ │
│ │ 累计里程  32.5 km               │ │
│ │ 距上一名  还差 2.3 km 🔥        │ │
│ └────────────────────────────────┘ │
└────────────────────────────────────┘

字段定义

字段名类型说明
排行榜数据数组榜单条目列表
我的排名整数当前用户排名
我的成绩小数当前用户累计成绩
距上一名差距小数与上一名的成绩差值
距获奖区差距小数与获奖名次的成绩差值(可选)
是否完赛布尔是否达到完赛门槛

榜单条目对象

字段名类型说明
排名整数名次
用户头像图片头像
用户昵称字符串昵称
所属俱乐部字符串俱乐部名称(可选)
成绩值小数成绩数值
单位字符串km/m/km/h

排行榜交互

操作行为
点击「查看完整榜单」展开至 Top 100
点击榜单用户跳转该用户个人主页
下拉刷新刷新排行榜数据

2.2 挑战规则区

┌────────────────────────────────────┐
│ 📋 挑战规则                        │
├────────────────────────────────────┤
│ 📊 统计维度:累计里程(公里)        │
│ 🎿 有效雪场:万龙、云顶、太舞        │
│ ⏰ 挑战周期:01/15 - 02/15          │
│ 🏅 完赛门槛:累计滑行 ≥ 10km        │
├────────────────────────────────────┤
│ 👥 参与范围:全网公开               │
│    (或:仅限 XX 俱乐部成员)        │
├────────────────────────────────────┤
│ 🎁 奖励设置                        │
│ • 🥇 第1名:品牌滑雪服一套          │
│ • 🥈 第2名:雪场年卡                │
│ • 🥉 第3名:雪具代金券 ¥500         │
│ • 🏅 完赛奖:100雪币 + 限定周边      │
└────────────────────────────────────┘

字段定义

字段名类型说明
挑战类型枚举里程/落差/时长
有效雪场数组有效雪场范围(空=全部有效)
开始时间时间戳挑战开始时间
结束时间时间戳挑战结束时间
完赛门槛小数最低有效成绩
参与范围枚举全网公开/仅限俱乐部成员
关联俱乐部对象俱乐部信息(仅限俱乐部时必填)
排名奖列表数组前 N 名奖品配置
完赛奖对象完赛即得奖励

2.3 打卡型挑战差异化插槽区

当挑战类型为「雪道打卡」时,详情页使用以下插槽区替换 2.1 排行榜区和 2.2 挑战规则区。

2.3.1 打卡进度区

┌────────────────────────────────────┐
│ 📋 打卡进度  5/8                 │
│ ┌────────────────────────────────┐ │
│ │ ✅ 银龙道       01/16 打卡      │ │
│ │ ✅ 玉龙道       01/17 打卡      │ │
│ │ ✅ 白龙道       01/18 打卡      │ │
│ │ ✅ 小龙道       01/19 打卡      │ │
│ │ ✅ 青龙道       01/20 打卡      │ │
│ │ ⬜ 云龙道       未打卡          │ │
│ │ ⬜ 雪龙道       未打卡          │ │
│ │ ⬜ 冰龙道       未打卡          │ │
│ │       还差 3 条雪道 💪          │ │
│ └────────────────────────────────┘ │
└────────────────────────────────────┘
打卡进度字段定义
字段名类型说明
已打卡数整数已完成的雪道数
总数整数该挑战目标雪道总数
雪道列表数组雪道打卡状态清单
雪道条目对象
字段名类型说明
雪道名称字符串雪道名称
打卡状态布尔是否已打卡
打卡时间时间戳首次打卡时间(未打卡为空)
打卡进度交互
操作行为
点击已打卡雪道查看该次滑行轨迹详情

2.3.2 打卡型排行榜区

┌────────────────────────────────────┐
│ 🏆 排行榜(已集齐 2 人)           │
│ ┌────────────────────────────────┐ │
│ │ 🥇 雪疯子   8/8   01/22 完成   │ │
│ │ 🥈 粉雪控   8/8   01/24 完成   │ │
│ └────────────────────────────────┘ │
│ 💡 集齐全部初级道后,你将出现在榜单 │
└────────────────────────────────────┘
打卡型榜单条目对象
字段名类型说明
排名整数名次
用户头像图片头像
用户昵称字符串昵称
进度字符串"N/N" 格式
完成时间时间戳最后一条雪道打卡时间

空状态提示: 尚无人集齐时,显示空状态:"暂无人集齐,成为第一个吧!🏔️"

2.3.3 打卡挑战规则区

┌────────────────────────────────────┐
│ 📋 挑战规则                        │
├────────────────────────────────────┤
│ 🏔️ 目标雪场:万龙滑雪场            │
│ 🎿 打卡范围:初级道 8 条             │
│ ⏰ 挑战周期:01/15 - 02/15          │
│ 📊 排名方式:最先集齐者排名靠前     │
├────────────────────────────────────┤
│ 🏅 上榜条件                        │
│ 集齐全部初级道即登上排行榜         │
├────────────────────────────────────┤
│ 🎁 奖励设置                        │
│ • 🥇 第1名:品牌滑雪服一套          │
│ • 🥈 第2名:雪场年卡                │
│ • 🥉 第3名:雪具代金券 ¥500         │
│ • 🏅 完赛奖:集齐全部初级道 → 100雪币│
└────────────────────────────────────┘

三、发布者卡片配置

发起身份展示样式
官方雪哒官方头像 + ✅官方认证
俱乐部俱乐部头像 + 🏔️俱乐部标签 + 成员数

四、完赛感言区(替代评价区)

┌────────────────────────────────────┐
│ 🗣️ 完赛感言 (23条)          [更多] │
│ ┌────────────────────────────────┐ │
│ │ 👤 雪疯子  🥇 第1名             │ │
│ │ 终于登顶了!感谢队友陪练!       │ │
│ │ 累计 128.5km · 01/28           │ │
│ └────────────────────────────────┘ │
└────────────────────────────────────┘

五、报名流程(底部抽屉)

交互:统一使用底部抽屉模式,保持交互一致性

┌────────────────────────────────────┐
│ 报名挑战                      [×]  │
├────────────────────────────────────┤
│ 挑战名称:崇礼开板首滑挑战          │
│ 挑战周期:01/15 - 02/15            │
│ 有效雪场:万龙、云顶、太舞           │
├────────────────────────────────────┤
│ ⓘ 报名后,您在有效雪场的滑行数据将  │
│   自动计入挑战成绩。                │
├────────────────────────────────────┤
│ ☑ 我已阅读并同意《挑战规则》        │
├────────────────────────────────────┤
│           [确认报名]               │
└────────────────────────────────────┘

付费挑战:若挑战设置报名费,底部抽屉显示费用明细和支付按钮


六、须知规则区配置

标题📋 数据说明

默认内容

  • 仅统计挑战周期内的有效滑行数据
  • 数据来源:APP 内置 GPS 轨迹记录
  • 异常数据(车载/缆车)将被自动过滤
  • 榜单每 5 分钟更新一次

七、底部操作栏配置

布局结构(三列版本)

┌─────────────────────────────────────────┐
│ [咨询] [收藏] │ ¥价格/免费 │ [主操作按钮] │
└─────────────────────────────────────────┘
元素说明
咨询按钮图标+文字,点击联系客服
收藏按钮图标+文字,切换收藏状态
价格区免费¥{报名费}
主按钮见下表

主按钮状态

状态按钮文案
未报名报名挑战
已报名去滑雪
挑战未开始敬请期待(置灰)
已结束已结束(置灰)

与雪友组局保持一致的三列布局,适用于社交属性较强的活动页面。

九、关联信息展示规则

V1.3 新增:遵循通用组件规范中的 ClubCard / ResortCard 定义

9.1 关联俱乐部 (ClubCard)

位置:发布者卡片下方

条件渲染:仅当活动配置了关联俱乐部时显示

9.2 关联雪场 (ResortCard)

位置:赛事规则区下方(页面底部)

条件渲染:仅当活动配置了关联雪场时显示


十、验收标准

10.1 通用(原有)

  1. 有效性过滤:非有效雪场的轨迹不计入成绩
  2. 时间范围过滤:挑战周期外的轨迹不计入
  3. 重复报名拦截:已报名用户再次点击显示「去滑雪」
  4. 俱乐部隔离:仅限俱乐部成员的挑战,非成员报名时提示「请先加入俱乐部」

10.2 积累型专属(原有 + 修正)

  1. 排行榜实时性:上传轨迹后 5 分钟内排名更新
  2. 差距提示准确:「距上一名还差 X km」计算正确
  3. 完赛状态标记:达到门槛后显示「已完赛」标签

10.3 打卡型专属(V2 新增)

  1. 打卡判定准确:滑行轨迹经过雪道全部检查点后,该雪道自动标记为已打卡
  2. 集齐才上榜:未集齐该挑战全部目标雪道的用户不出现在排行榜中
  3. 打卡反馈:滑行结束后若有新雪道打卡成功,弹出打卡成功提示
  4. 去重:同一雪道重复滑行不重复打卡
  5. 空状态:无人集齐时,显示空状态提示文案