Appearance
里程挑战详情页 PRD
版本: V1.3
更新日期: 2026-01-21
依赖: 通用组件规范更新内容: 新增关联信息展示规则(ClubCard/ResortCard)
一、模块定位
场景:官方/俱乐部发起的里程/落差/速度挑战赛,用户通过 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 名奖品配置 |
| 参与奖 | 对象 | 完赛即得奖励 |
速度挑战安全提示:当挑战类型为「速度」时,须在规则区顶部显示安全警示:
⚠️ 安全提示:请在确保安全的前提下参与速度挑战,切勿超速滑行。
三、发布者卡片配置
| 发起身份 | 展示样式 |
|---|---|
| 官方 | 雪哒官方头像 + ✅官方认证 |
| 俱乐部 | 俱乐部头像 + 🏔️俱乐部标签 + 成员数 |
四、完赛感言区(替代评价区)
┌────────────────────────────────────┐
│ 🗣️ 完赛感言 (23条) [更多] │
│ ┌────────────────────────────────┐ │
│ │ 👤 雪疯子 🥇 第1名 │ │
│ │ 终于登顶了!感谢队友陪练! │ │
│ │ 累计 128.5km · 01/28 │ │
│ └────────────────────────────────┘ │
└────────────────────────────────────┘五、报名流程(底部抽屉)
交互:统一使用底部抽屉模式,保持交互一致性
┌────────────────────────────────────┐
│ 报名挑战 [×] │
├────────────────────────────────────┤
│ 挑战名称:崇礼开板首滑挑战 │
│ 挑战周期:01/15 - 02/15 │
│ 有效雪场:万龙、云顶、太舞 │
├────────────────────────────────────┤
│ ⓘ 报名后,您在有效雪场的滑行数据将 │
│ 自动计入挑战成绩。 │
├────────────────────────────────────┤
│ ☑ 我已阅读并同意《挑战规则》 │
├────────────────────────────────────┤
│ [确认报名] │
└────────────────────────────────────┘付费挑战:若挑战设置报名费,底部抽屉显示费用明细和支付按钮
六、须知规则区配置
标题:📋 数据说明
默认内容:
- 仅统计挑战周期内的有效滑行数据
- 数据来源:APP 内置 GPS 轨迹记录
- 异常数据(车载/缆车)将被自动过滤
- 榜单每 5 分钟更新一次
七、底部操作栏配置
布局结构(三列版本)
┌─────────────────────────────────────────┐
│ [咨询] [收藏] │ ¥价格/免费 │ [主操作按钮] │
└─────────────────────────────────────────┘| 元素 | 说明 |
|---|---|
| 咨询按钮 | 图标+文字,点击联系客服 |
| 收藏按钮 | 图标+文字,切换收藏状态 |
| 价格区 | 免费 或 ¥{报名费} |
| 主按钮 | 见下表 |
主按钮状态
| 状态 | 按钮文案 |
|---|---|
| 未报名 | 报名挑战 |
| 已报名 | 去滑雪 |
| 挑战未开始 | 敬请期待(置灰) |
| 已结束 | 已结束(置灰) |
与雪友组局保持一致的三列布局,适用于社交属性较强的活动页面。
九、关联信息展示规则
V1.3 新增:遵循通用组件规范中的 ClubCard / ResortCard 定义
9.1 关联俱乐部 (ClubCard)
位置:发布者卡片下方
条件渲染:仅当活动配置了关联俱乐部时显示
9.2 关联雪场 (ResortCard)
位置:赛事规则区下方(页面底部)
条件渲染:仅当活动配置了关联雪场时显示
十、验收标准
- 排行榜实时性:上传轨迹后 5 分钟内排名更新
- 有效性过滤:非有效雪场的轨迹不计入成绩
- 时间范围过滤:挑战周期外的轨迹不计入
- 差距提示准确:「距上一名还差 X km」计算正确
- 完赛状态标记:达到门槛后显示「已完赛」标签
- 重复报名拦截:已报名用户再次点击显示「去滑雪」
- 俱乐部隔离:仅限俱乐部成员的挑战,非成员报名时提示「请先加入俱乐部」
- 速度挑战安全提示:速度类挑战必须显示安全警示文案
