Appearance
雪友组局详情页 PRD
版本: V2.0
更新日期: 2026-01-21
依赖: 通用组件规范更新内容: TypeSwitcher 类型切换器、4 种组局类型专属字段、关联信息展示规则
一、模块定位
场景:雪友发起的社交活动(拼车/拼房/搭子/聚会),或认证教练/摄影师的单次服务。
核心交互:查看详情 → 报名 → 自动入群
二、差异化插槽区
2.0 TypeSwitcher 活动类型切换器
V2.0 新增:支持 4 种组局类型切换
┌────────────────────────────────────┐
│ [👥 搭子] [🚗 拼车] [🏨 拼房] [🍽️ 聚会] │
└────────────────────────────────────┘| 类型标识 | 中文名称 | 图标 | 说明 |
|---|---|---|---|
| SKI_BUDDY | 搭子 | 👥 | 找滑雪搭子/教练/摄影 |
| CARPOOL | 拼车 | 🚗 | 往返雪场拼车 |
| HOTEL | 拼房 | 🏨 | 酒店拼房 |
| DINING | 聚会 | 🍽️ | 火锅/饭局/KTV 等 |
交互:横向标签切换,所选类型高亮
2.1 各类型专属字段
2.1.1 搭子 (SKI_BUDDY)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| gender | Enum | 否 | 性别要求(不限/限男/限女) |
| skillLevel | Enum | 否 | 能力要求(不限/初级/中级/高级) |
2.1.2 拼车 (CARPOOL)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| gender | Enum | 否 | 性别要求 |
| departure | Object | 是 | 出发地(名称+时间) |
| destination | Object | 是 | 目的地(名称+预计时间) |
| tripType | Enum | 是 | 单程/往返 |
| car | String | 否 | 车型 |
| seats | Integer | 是 | 座位数 |
| canCarryBoard | Boolean | 否 | 可放雪板 |
| canCarryLuggage | Boolean | 否 | 可放行李 |
2.1.3 拼房 (HOTEL)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| roomType | Enum | 是 | 类型(雪票/住宿/雪票+住宿) |
| gender | Enum | 否 | 性别要求 |
| hotelName | String | 否 | 酒店名称 |
2.1.4 聚会 (DINING)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| gender | Enum | 否 | 性别要求 |
| expectedCount | Integer | 否 | 预计人数 |
| budgetPerPerson | Integer | 否 | 人均预算(元) |
| theme | Array | 否 | 聚会标签(#火锅 #桌游 等) |
2.2 报名信息区
┌────────────────────────────────────┐
│ 📍 太舞滑雪小镇 · W酒店大堂 │
│ 📅 01/25 周六 20:00 │
│ 👥 3/6 人 · 仅差3人即可成行 │
├────────────────────────────────────┤
│ 🏷️ 标签 │
│ ┌────────────────────────────────┐ │
│ │ #火锅 #拼房 #女生友好 │ │
│ └────────────────────────────────┘ │
├────────────────────────────────────┤
│ 📋 报名人列表 │
│ ┌────────────────────────────────┐ │
│ │ [头像1] [头像2] [头像3] +3 │ │
│ └────────────────────────────────┘ │
└────────────────────────────────────┘通用字段定义
| 字段名 | 类型 | 说明 |
|---|---|---|
| 活动地点 | 地点 | 关联雪场 POI |
| 活动时间 | 时间戳 | 活动开始时间 |
| 当前人数 | 整数 | 已报名人数 |
| 人数上限 | 整数 | 最大可报名人数 |
| 最低人数 | 整数 | 成行所需最低人数 |
| 聚会标签 | 数组 | 标签列表(#火锅 #拼车 等) |
| 已报名用户 | 数组 | 用户头像列表 |
人数状态展示
| 条件 | 展示文案 |
|---|---|
| 当前人数 < 最低人数 | 👥 {当前}/{上限}人 · 仅差{最低-当前}人即可成行 |
| 最低人数 ≤ 当前人数 < 上限 | 👥 {当前}/{上限}人 · 已成行 (绿色) |
| 当前人数 = 上限 | 👥 {当前}/{上限}人 · 已满员 (橙色) |
2.2 费用信息区
┌────────────────────────────────────┐
│ 💰 费用说明 │
├────────────────────────────────────┤
│ 收费模式:线下AA │
│ 预估费用:约 ¥150/人 │
│ │
│ ⚠️ 实际费用以现场结算为准 │
└────────────────────────────────────┘字段定义
| 字段名 | 类型 | 说明 |
|---|---|---|
| 收费模式 | 枚举 | 免费/线下AA/线上支付 |
| 单价 | 金额 | 线上支付模式下的价格 |
| 预估费用 | 金额 | AA 模式下的预估金额 |
收费模式展示
| 收费模式 | 展示样式 |
|---|---|
| 免费 | 💰 免费活动 |
| 线下AA | 预估费用:约¥{预估费用}/人 + ⚠️ 提示 |
| 线上支付 | 💰 ¥{单价}/人 + 平台托管说明 |
2.3 拼车信息区(CARPOOL 场景专属)
┌────────────────────────────────────┐
│ 🚗 拼车信息 │
├────────────────────────────────────┤
│ ● 北土城地铁站C口 │
│ 出发 06:00 [单程] │
│ │ │
│ ● 崇礼万龙雪场 │
│ 预计到达 约08:30 │
├────────────────────────────────────┤
│ 🚙 别克 GL8 · 银色 │
│ 👥 3/4 个空位 │
│ ✅ 可放雪板 ✅ 可放行李 │
└────────────────────────────────────┘字段定义
| 字段名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| departure.name | String | 是 | 出发地点名称 |
| departure.time | String | 是 | 出发时间 |
| destination.name | String | 是 | 目的地名称 |
| destination.time | String | 否 | 预计到达时间 |
| tripType | Enum | 是 | 单程 / 往返 |
| car | String | 否 | 车型信息(可选) |
| seats.total | Integer | 是 | 总座位数 |
| seats.available | Integer | 是 | 剩余座位数 |
| canCarryBoard | Boolean | 否 | 是否可放雪板 |
| canCarryLuggage | Boolean | 否 | 是否可放行李 |
展示规则
- 路线时间线:使用圆点+竖线视觉连接出发地与目的地
- 行程类型:右上角标签展示「单程」或「往返」
- 车型:可选字段,未填写时不展示
- 行李标签:仅在对应字段为 true 时展示
三、须知规则区配置
标题:📋 活动须知
内容来源(根据发布配置动态生成):
| 配置项 | 展示文案 |
|---|---|
| 准入范围 = 所有用户 | (不显示) |
| 准入范围 = 仅限实名 | • 准入范围:仅限实名认证用户 |
| 准入范围 = 仅限俱乐部 | • 准入范围:仅限 {俱乐部名称} 成员 |
| 性别要求 = 仅女 | • 性别要求:仅限女生报名 |
| 性别要求 = 仅男 | • 性别要求:仅限男生报名 |
| 自动取消开启 | • 自动取消:活动前{N}小时不足{M}人将自动取消退款 |
| 退改政策 = 随时退 | • 取消规则:活动开始前均可取消 |
| 退改政策 = 24小时前可退 | • 取消规则:活动前24小时可取消 |
| 退改政策 = 不可退 | • 取消规则:报名后不可取消 |
四、关联信息展示规则
V2.0 新增:遵循通用组件规范中的 ClubCard / ResortCard 定义
4.1 关联俱乐部 (ClubCard)
位置:发起人卡片下方
条件渲染:仅当活动配置了关联俱乐部时显示
4.2 关联雪场 (ResortCard)
位置:活动须知区下方(页面底部)
条件渲染:仅当活动配置了关联雪场时显示
五、发布者卡片配置
| 发起身份 | 展示样式 |
|---|---|
| 普通雪友 | 用户头像 + 昵称 + 「实名认证」标签 |
| 认证教练 | 用户头像 + 昵称 + 🎿认证教练 + 评分 |
| 认证摄影师 | 用户头像 + 昵称 + 📷认证摄影师 + 评分 |
五、报名流程(底部抽屉)
5.1 免费/AA 活动
┌────────────────────────────────────┐
│ 确认报名 [×] │
├────────────────────────────────────┤
│ 活动:太舞周末火锅局 │
│ 时间:01/25 周六 20:00 │
│ 地点:W酒店大堂 │
├────────────────────────────────────┤
│ 报名人信息 │
│ 姓名 * [ ] │
│ 手机号 * [🔒 138****8888 ] │
│ ⓘ 默认使用注册手机号 │
├────────────────────────────────────┤
│ ☑ 我已阅读并同意《活动须知》 │
├────────────────────────────────────┤
│ ⓘ 报名成功后将自动加入活动群聊 │
├────────────────────────────────────┤
│ [确认报名] │
└────────────────────────────────────┘5.2 线上支付活动
┌────────────────────────────────────┐
│ 确认报名 [×] │
├────────────────────────────────────┤
│ 活动:初级教学拼课 │
│ 时间:01/26 周日 09:00-12:00 │
│ 地点:云顶初级道 │
├────────────────────────────────────┤
│ 报名人信息 │
│ 姓名 * [ ] │
│ 手机号 * [🔒 138****8888 ] │
│ ⓘ 默认使用注册手机号 │
│ 滑雪水平 [初级 ▼] │
├────────────────────────────────────┤
│ 费用明细 │
│ ¥199 × 1人 = ¥199 │
├────────────────────────────────────┤
│ [确认支付 ¥199] │
└────────────────────────────────────┘5.3 异常流程
参见 通用组件规范 中关于「报名异常处理」的定义。支持以下错误类型反馈:
- 名额已满 (FULL)
- 报名截止 (EXPIRED)
- 活动取消 (CANCELLED)
- 无报名资格 (NO_QUALIFICATION)
- 网络异常 (NETWORK)
5.5 退出/取消报名流程 (Participant Cancel)
场景:已报名的用户因故无法参加,需发起退款/退出。
交互入口:
- 主入口:
我的 Tab(底部导航) →内容广场(卡片区) →我的参与(右侧卡片)。 - 交互动作:点击目标活动卡片进入详情页(或唤起管理弹窗)进行取消操作。
┌────────────────────────────────────┐
│ 我的报名信息 [×] │
├────────────────────────────────────┤
│ 状态:✅ 报名成功 │
│ 凭证:8293-2938-1234 │
├────────────────────────────────────┤
│ [进入群聊] [查看订单详情] │
├────────────────────────────────────┤
│ ⚠️ 如无法参加,请提前取消。 │
│ [ 取消报名/退款 ] │
└────────────────────────────────────┘取消规则判定:
- 免费/AA:直接退出,释放名额。
- 付费:根据「退改政策」判断:
- 符合退款:自动原路退回,释放名额。
- 不符退款:弹窗提示「当前已过退款截止时间,无法取消,建议自行转让」。
六、底部操作栏配置
| 元素 | 内容 |
|---|---|
| 左侧信息 | 按收费模式展示(见标题区价格规范) |
| 主按钮 | 我要报名 |
| 状态变体 | 已报名:进入群聊 / 已满员:已满员 / 已结束:已结束 |
七、群聊功能
自动入群逻辑:
报名成功
↓
检查活动是否有群聊
↓ 有
将用户加入群聊
↓
跳转「报名成功」页,显示「进入群聊」按钮报名成功页:
┌────────────────────────────────────┐
│ ✅ 报名成功 │
├────────────────────────────────────┤
│ 太舞周末火锅局 │
│ 📅 01/25 周六 20:00 │
│ 📍 W酒店大堂 │
├────────────────────────────────────┤
│ 💬 已自动加入活动群聊 │
├────────────────────────────────────┤
│ [进入群聊] [返回首页] │
└────────────────────────────────────┘七、群聊功能 (原七)
... (Previous content of Section 7) ...
八、管理操作
发起人管理入口: 所有管理操作(编辑活动 / 取消活动 / 删除活动)统一收敛至 「我的」-「我的发布」 列表页进行操作。 详情页内不提供发起人的编辑/取消入口,保持详情页作为信息展示与报名的纯粹性。
详细交互规范请查阅:管理与我的发布
九、不做范围 (原八)
以下功能不在 MVP 范围内:
- ❌ 等位机制:满员后加入等位列表,有人退出自动递补
- ❌ 摇号机制:满员后加入抽签池,随机抽取入选者
九、验收标准
- 准入校验:仅限女生活动,男性用户报名时弹出提示拒绝
- 人数状态正确:实时展示当前/最大人数及成行状态
- 自动入群:报名成功后 3 秒内自动加入活动群
- 标签展示:正确渲染聚会标签和性别要求标签
- AA 费用提示:线下 AA 活动明确提示「实际费用以现场结算为准」
- 自动取消提示:开启自动取消的活动在须知中展示规则
- 退改政策展示:须知区正确展示退改政策文案
- 满员状态:当前人数达到上限时,按钮变为「已满员」且不可点击
