Appearance
社交活动发布模块 (Social & Professional Activities)
文档版本: V1.2 更新日期: 2024-05-20 状态: 评审中
0. 背景与目标 (Context & Goals)
问题陈述 (Problem Statement)
- 用户痛点:雪友在滑雪出行时难以找到水平相当的伙伴(拼车/拼房/搭子)或线下聚会局;教练和摄影师缺乏高效的获客与排期管理工具,常依赖微信群接龙,信息混乱且无履约保障。
- 商业价值:通过高频的组局与工具化服务(教学/跟拍),提升 APP 打开率与用户粘性,并为二期交易抽佣建立基础。
成功指标 (Success Metrics)
- 发布成功率:进入发布页到成功发布活动的转化率 > 60%。
- 履约率:发布活动中最终状态为
已结束的比例 > 40%。 - 客诉率:因自动取消或排期冲突导致的用户投诉 < 1%。
一、 角色与活动类型
| 发布身份 | 活动类型 | 核心意图 | 专属字段/功能 | 准入要求 |
|---|---|---|---|---|
| 普通雪友 | 约搭子 | 拼车、拼房、纯滑雪搭子 | - | - |
| 普通雪友 | 聚会 (Gathering) | 饭局、剧本杀、KTV | 聚会标签 (#火锅 #桌游)、性别限制 | - |
| 认证教练 | 教学拼课 | 找学员、拼野雪教学 | 多时段排期、教学类别、水平要求 | 需 教练 认证 |
| 认证摄影师 | 摄影跟拍 | 约拍、跟拍服务 | 多时段排期、交付周期、跟拍类型 | 需 摄影师 认证 |
注:俱乐部官方活动将由独立的"俱乐部管理后台"发布,不在本模块范围内。但在本模块中,雪友发起的活动可关联其所在的俱乐部,用于社群引流。
二、 核心场景流程
2.1 状态流转图 (Lifecycle)
从"生效"与"取消"维度管理生命周期。
mermaid
stateDiagram-v2
[*] --> 招募中: 发布活动
招募中 --> 已生效: 达到最低参与人数
招募中 --> 已取消: 触发自动取消规则 / 发起人主动取消
招募中 --> 已取消: 所有人退出
已生效 --> 已结束: 活动时间结束
已生效 --> 已取消: 发起人因故取消 (需赔付)
已结束 --> [*]
已取消 --> [*]
state 招募中 {
[*] --> 名额未满
名额未满 --> 名额已满: 报名人数达到上限
名额已满 --> 名额未满: 有人退出
}2.2 报名与超额处理流程
mermaid
flowchart TD
Start[用户点击报名] --> CheckLimit{名额已满?}
CheckLimit -- 未满 --> CheckPay{需支付?}
%% 正常报名流程
CheckPay -- 免费/线下AA --> Success[报名成功]
CheckPay -- 线上支付 --> Pay[发起支付]
Pay -- 成功 --> Success
%% 超额处理流程
CheckLimit -- 已满 --> CheckType{超额策略?}
CheckType -- 禁止超额 --> Reject[提示名额已满]
CheckType -- 允许等位 --> JoinWaitlist[支付并加入等位列表]
JoinWaitlist --> WaitNotify[提示当前排位]
CheckType -- 允许摇号 --> JoinPool[支付并加入抽签池]
JoinPool --> PoolNotify[等待开奖通知]
%% 补位逻辑 (异步)
Success --> JoinGroup[自动加入 IM 群组]
JoinGroup --> DeductInventory[扣减库存]
UserExit[有人退出] --> ReleaseInventory[释放库存]
ReleaseInventory --> CheckWaitlist{有等位者?}
CheckWaitlist -- 是 --> AutoMove[队首自动补位]
AutoMove --> Success三、 详细字段定义
3.1 基础设置 (通用)
| 字段名称 | 类型 | 必填 | 逻辑/约束 | 默认值 |
|---|---|---|---|---|
| 标题 | 文本 | 是 | 最多 30 字。 | - |
| 地点 | 地点 | 是 | 关联雪场 POI。 | - |
| 活动说明 | 富文本 | 否 | 支持文字与图片。 | - |
3.2 身份与类型专属设置
A. 雪友 - 聚会 (Gathering)
| 字段 | 类型 | 说明 |
|---|---|---|
| 聚会主题 | 标签选择 | #火锅 #烧烤 #桌游 #KTV #其他 |
| 性别要求 | 单选 | 不限 / 仅男 / 仅女 |
| 时间 | 单点时间 | e.g., 晚上 20:00 |
B. 教练/摄影师 - 职业排期 (Professional Scheduling)
支持多时段与周期性发布
| 字段 | 交互逻辑 | 说明 |
|---|---|---|
| 发布模式 | 切换 | 单日多时段 / 周期性重复 |
| 日期范围 | 日历选择 | e.g., 2023-12-01 至 2024-03-15 |
| 重复规则 | 多选标签 | 每天 / 工作日 / 周末 / 节假日 |
| 每日时段 | 动态列表 (List) | 可添加多个具体的服务时段。 e.g., 09:00-12:00, 13:30-16:30 |
3.3 费用与权益
| 字段名称 | 交互逻辑 | 细则 |
|---|---|---|
| 收费模式 | 切换标签 | 1. 免费活动 2. 线下AA (仅展示预估费用) 3. 线上支付 (真金白银交易, 平台托管) |
| 单价 | 数字输入 | 仅"线上支付"有效。精确到 0.01 元。 |
| 退改政策 | 下拉选择 | 1. 随时退 (活动开始前均可退) 2. 24小时前可退 (标准) 3. 不可退 (强约束) |
3.4 高级设置
| 区域 | 字段 | 交互/逻辑 |
|---|---|---|
| 人数控制 | 限制人数 | 整数输入, 最小 1, 最大 100. |
| 允许超额报名 | 开关。 开启时显示子选项: - 报名等位: 先到先得排队。 - 报名摇号: 随机抽取入选者。 | |
| 活动对象 | 准入范围 | 单选: 1. 所有用户 2. 仅限实名认证 3. 仅限俱乐部成员 |
| 生效风控 | 自动取消活动 | 开关。 开启时需填写规则: "活动开始前 [24] 小时内,若报名人数不足 [2] 人,由系统自动处理退款通知。" |
| 社群引流 | 关联俱乐部 | 选择发起人加入的俱乐部,活动将展示在俱乐部页。 |
| 即时通讯 | 群聊功能 | 默认开启。 活动发布成功后,系统自动创建 App 内 IM 群组,报名成功者自动入群。 |
| 活动管理 | 管理与我的发布 | 详见 管理与我的发布。 - 编辑:仅限无人报名时。 - 取消:进行中活动。 - 删除:已结束/已取消活动。 |
四、 复杂逻辑详解
4.1 自动取消 (Auto-Cancellation)
mermaid
flowchart TD
Timer("定时任务 (每分钟)") --> FindActs{查找活动}
FindActs --> Filter[筛选: 招募中 + 开启自动取消]
Filter --> CheckTime{"当前时间 ≥ (开始时间 - 设定阈值)?"}
CheckTime -- 否 --> Skip[跳过]
CheckTime -- 是 --> CheckCount{"当前人数 < 最低生效人数?"}
CheckCount -- 否 --> Lock["锁定活动: 不再触发自动取消"]
CheckCount -- 是 --> ExecCancel[执行取消]
ExecCancel --> UpdateStatus[状态变更为: 已取消]
UpdateStatus --> Refund[触发自动退款]
Refund --> Notify["发送取消通知 (短信/推送)"]五、 验收标准 (Acceptance Criteria)
- 聚会场景:确认选择"聚会"类型时,出现"聚会主题"标签云 (#火锅 等)。
- 排期场景:教练发布一个"12月全月,每周末,9点/13点"的活动,需在日历上正确生成约 8-10 天 x 2 时段 = 16-20 个独立的 sku 或活动实例。
- 群聊场景:报名成功后,检查"消息"列表应出现该活动的群聊。
- 自动取消:T-24h 且人数不足时,活动自动变更为 Cancelled。
六、 不做范围 (Out-of-Scope)
- 保险售卖:MVP 阶段暂不捆绑保险销售。
- 跨天排期:暂不支持单个 SKU 跨越 24 点(如通宵活动需拆分)。
