Files
cmr-mini/doc/gameplay/活动卡片列表最小产品方案.md

305 lines
5.7 KiB
Markdown
Raw Permalink 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.
# 活动卡片列表最小产品方案
> 文档版本v1.2
> 最后更新2026-04-03 19:26:23
## 1. 当前定位
当前阶段“活动卡片列表页”第一刀已落地,当前文档转为:
1. 第一刀范围说明
2. 当前最小字段口径
3. 当前联调回归重点
也就是说,这份文档当前是:
**第一刀已完成后的最小产品方案文档**
---
## 2. 当前阶段边界
### 2.1 当前已完成
- 独立活动列表页:`/pages/events/events`
- 最小筛选:`全部 / 体验`
- 最小卡片展示
- 列表跳转活动详情页
- 首页补“活动列表”独立入口
### 2.2 当前不做
- 不重构首页现有卡片入口
- 不设计复杂运营样式
- 不展开 `presentation schema`
- 不展开 `content bundle` 明细
- 不直接下发报名、签到、排行榜等复杂前台流程
---
## 3. 最小字段表
以下字段按“当前第一刀已使用的最小口径”划分。
### 3.1 必需字段
- `eventId`
- 活动唯一标识
- `title`
- 活动主标题
- `subtitle`
- 副标题或活动短说明
- `summary`
- 卡片摘要
- `status`
- 活动状态
- `timeWindow`
- 活动时间窗口摘要
- `ctaText`
- 主动作文案
### 3.2 推荐字段
- `coverUrl`
- 封面图
- `isDefaultExperience`
- 是否默认体验活动
- `eventType`
- 活动类型摘要
- `currentPresentation`
- 当前展示版本摘要
- `currentContentBundle`
- 当前内容包摘要
### 3.3 可选字段
- `locationName`
- 地点摘要
- `tagText`
- 轻标签
- `participantHint`
- 人群或参与提示
- `ruleHint`
- 规则提示
当前阶段不建议为了列表页再额外增加复杂字段。
---
## 4. 字段展示建议
### 4.1 卡片主信息
- 主标题:`title`
- 副标题:`subtitle`
- 摘要:`summary`
### 4.2 卡片状态信息
- 状态:`status`
- 时间:`timeWindow`
- 主动作:`ctaText`
### 4.3 卡片轻运营信息
- 封面:`coverUrl`
- 体验标识:`isDefaultExperience`
- 展示版本摘要:`currentPresentation`
- 内容包摘要:`currentContentBundle`
当前阶段只建议做“摘要显示”,不要做复杂 schema 级解释。
---
## 5. 缺字段降级策略
活动卡片列表属于前台浏览层,必须允许后端阶段性缺字段时仍可工作。
### 5.1 标题缺失
- `title` 缺失时:显示 `未命名活动`
### 5.2 副标题缺失
- `subtitle` 缺失时:整行不显示
### 5.3 摘要缺失
- `summary` 缺失时:显示 `当前暂无活动摘要`
### 5.4 状态缺失
- `status` 缺失时:显示 `状态待确认`
- 不影响点击进入详情页
### 5.5 时间窗口缺失
- `timeWindow` 缺失时:显示 `时间待公布`
### 5.6 CTA 缺失
- `ctaText` 缺失时:统一回退成 `查看详情`
### 5.7 封面缺失
- `coverUrl` 缺失时:使用默认卡片背景,不阻断渲染
### 5.8 `currentPresentation` 缺失
- 显示:`当前未声明展示版本`
### 5.9 `currentContentBundle` 缺失
- 显示:`当前未声明内容包版本`
### 5.10 体验标识缺失
- `isDefaultExperience` 缺失时:按普通活动处理
---
## 6. 最小页面结构建议
当前结构已按第一刀最小版本落地。
建议的最小结构如下:
```text
活动列表页
├─ 顶部说明区
│ ├─ 标题
│ ├─ 频道/地区摘要
│ └─ 当前状态说明
├─ 筛选区
│ ├─ 全部
│ ├─ 体验活动
│ ├─ 进行中
│ ├─ 即将开始
│ └─ 已结束
├─ 卡片列表区
│ ├─ 活动卡片
│ ├─ 活动卡片
│ └─ 活动卡片
└─ 空状态 / 错误状态
```
当前第一刀阶段保留这套最小结构,不扩复杂分组和复杂运营区。
---
## 7. 最小卡片状态建议
### 7.1 默认体验活动
- 标识:`体验`
- 主动作:`进入体验`
### 7.2 进行中
- 标识:`进行中`
- 主动作:`进入活动`
### 7.3 即将开始
- 标识:`即将开始`
- 主动作:`查看详情`
### 7.4 已结束
- 标识:`已结束`
- 主动作:`查看详情`
- `查看回顾`
---
## 8. 与当前架构的关系
活动卡片列表层只消费轻摘要,不直接消费后台复杂生产对象。
建议关系保持为:
```text
Event
-> EventRelease
-> currentPresentation / currentContentBundle / runtime 摘要
-> 活动卡片列表层
```
前端列表层当前只认:
- 活动摘要
- 当前状态
- 轻运营摘要
- 主动作文案
不要把:
- 原始 `EventPresentation schema`
- 原始 `ContentBundle` 明细
- backend 内部生产对象
直接推到卡片列表层。
---
## 9. 与活动详情页的分工
### 9.1 活动卡片列表层
负责:
- 浏览
- 粗筛
- 判断要不要进入活动详情页
### 9.2 活动详情页
负责:
- 活动介绍
- 展示版本摘要
- 内容包摘要
- 准备页入口
- 后续更深的运营信息
这样列表层可以一直保持轻。
---
## 10. 当前阶段输出物
当前第一刀的输出物已经包括:
1. 最小字段表
2. 缺字段降级规则
3. 最小页面结构落地
4. 列表页到详情页的最小跳转链
当前阶段不应继续包括:
- 列表页重构
- 卡片系统深度样式扩张
- 复杂运营专区方案
- 更多玩家侧新入口
---
## 11. 下一步建议
当前第一刀之后,下一步建议按下面顺序推进:
1. 先做联调回归与小范围修复
2. 后端继续收口字段稳定性和默认值
3. 前端确认分组和卡片信息层级是否顺手
4. 再决定是否进入第二刀产品扩展
---
## 12. 一句话结论
当前“活动卡片列表最小产品方案”已从准备阶段进入第一刀落地阶段:
**独立列表页 + 最小筛选 + 最小卡片字段 + 跳详情页链路**
接下来先做联调回归和小范围修复,不直接扩第二刀。