# 同行会 v0.2 完整页面与状态规格

本规格以第二版五屏方案为唯一视觉基调。19 个用户端路由覆盖 36 个产品状态；其中约 20 个关键用户页面应进入全量 ImageGen 视觉原型，5 个管理路由只遵守基础令牌和功能完整性。

## 总体流程

```text
公开浏览首页/成员/活动
  ├─ 查看公开活动详情 → 免费活动报名 → 按需手机号授权 → 确认报名 → 活动凭证
  ├─ 查看成员摘要 → 会员限制页 → 会员方案 → 按需资料/手机号 → 微信支付 → 自动确认 → 权益生效
  └─ 我的 → 完善资料/手机号、会员、活动票、订单售后、隐私与帮助
```

## 用户端路由

| 编号 | 路由 | 页面职责 | 关键状态 |
| --- | --- | --- | --- |
| U01 | `pages/index/index` | 本周计划、会员摘要、热门活动、新成员 | 冷启动骨架、普通用户、有效会员、网络降级 |
| U02 | `pages/explore/index` | 推荐/同城/新成员的单列资料浏览；每项容纳头像、城市、介绍和标签 | 有数据、同城资料不足、空结果、后台刷新失败；禁止把完整资料挤入双列半宽卡 |
| U03 | `pages/events/index` | 日期/列表、即将开始、我的活动 | 活动列表、我的空态、已报名、报名中 |
| U04 | `pages/profile/index` | 个人控制中心 | 未完善、普通用户、有效会员、管理员入口 |
| U05 | `pages/membership/index` | 权益和方案选择 | 普通用户、有效会员、支付中、方案空态 |
| U06 | `packages/member/access/index` | 手机号登录降级/恢复页；主流程优先使用当前页面 Bottom Sheet | 单一手机号动作、已完成、拒绝后返回 |
| U07 | `packages/member/profile-edit/index` | 头像、昵称、城市、介绍、兴趣 | 初始、编辑、校验错误、保存中、审核提示 |
| U08 | `packages/member/member-detail/index` | 成员公开详情 | 会员完整详情、非会员摘要+解锁、下线 |
| U09 | `packages/member/event-detail/index` | 活动完整信息 | 可报名、需手机号、需会员、已报名、截止/满员 |
| U10 | `packages/member/registration-confirm/index` | 报名前复核 | 免费、会员免费、提交中、失败 |
| U11 | `packages/member/registrations/index` | 我的活动票列表 | 有凭证、空态、已取消、已结束 |
| U12 | `packages/member/ticket/index` | 单张活动凭证 | 有效、已取消、已结束 |
| U13 | `packages/member/orders/index` | 订单与退款状态 | 待支付、确认中、已支付、退款中、已退款、空态 |
| U14 | `packages/member/order-detail/index` | 单笔订单详情和售后 | 自动确认、已支付、退款中、已退款、失败 |
| U15 | `packages/member/payment-result/index` | 支付后自动收敛 | 确认中、成功、失败/异常、超时但继续自动处理 |
| U16 | `packages/member/benefits/index` | 会员权益说明 | 普通用户 CTA、有效会员权益 |
| U17 | `packages/member/privacy/index` | 授权、隐私和注销 | 常规、注销二次确认、注销中 |
| U18 | `packages/member/help/index` | 常见问题与微信客服 | 常规、客服入口不可用提示 |
| U19 | `packages/member/about/index` | 品牌说明、规则、版本 | 常规 |

> 正常报名和购买不导航到 U06，而是在 U09/U05 当前页面展示 `phone-login-sheet`。U06 只为无法原地恢复的深链或兼容流程保留，不在冷启动出现，也不使用账号密码、短信验证码或双步骤解释。

## 管理端路由

| 编号 | 路由 | 页面职责 |
| --- | --- | --- |
| A01 | `packages/admin/dashboard/index` | 待办汇总 |
| A02 | `packages/admin/profiles/index` | 资料审核 |
| A03 | `packages/admin/events/index` | 活动增删改查和发布 |
| A04 | `packages/admin/orders/index` | 订单、退款和主动查询 |
| A05 | `packages/admin/audit/index` | 审计记录 |

管理端不参与高保真原型细化，但必须可操作、权限正确、无布局错误。

## 关键交互合同

### 延迟授权

1. 首次进入直接显示 U01，不显示登录/资料卡。
2. 点击公开成员、活动和会员介绍可以继续浏览。
3. 报名活动缺手机号时，在 U09 当前页弹出一个 Bottom Sheet：标题“登录后继续报名”、一行用途、按钮“微信手机号快捷登录”和协议链接。
4. 购买会员缺手机号时，在 U05 当前页复用同一组件并替换为订单用途；头像和昵称可以稍后完善。
5. 手机号授权成功后，服务端绑定当前可信 OpenID，关闭弹层并恢复原动作，不再要求一次显式“微信登录”。
6. 用户关闭或拒绝后停留在原页面，可继续浏览；不导航到解释页、不循环弹系统授权。

### 支付

1. U05 创建可信订单并调起微信支付。
2. 用户取消则停留 U05，不生成成功提示。
3. 客户端支付成功进入 U15；U15 主动查单，异步回调仍是并行事实来源。
4. 服务端确认后显示成功、权益期限和“查看会员权益”。
5. 短时未确认时持续自动重试并允许安全离开，不要求用户手动刷新。
6. U13/U14 每次显示 `PAYMENT_CREATED` 时执行有边界的主动查单。

### 活动报名

1. U09 展示活动，不因缺手机号或会员而报错。
2. 满足条件时进入 U10 复核时间、地点、费用和取消规则。
3. 提交成功进入 U12；再次提交必须幂等。
4. 取消在 U12/U11 二次确认，成功后状态立即写入缓存。

### 页面返回与加载

- U01–U04 返回时先显示缓存；禁止重新出现整页“正在加载”。
- 二级页已有缓存时直接呈现，后台刷新只更新数据。
- 首次冷读使用目的页形状的 skeleton。
- 网络失败保留旧内容；没有旧内容才显示错误恢复页。

## 数据归属

- 数据库：成员、活动、封面/头像、方案、订单、权益、报名和管理员待办。
- 代码：导航名称、字段标签、隐私说明、FAQ、明确的空态和错误恢复文案。
- 禁止硬编码成员、活动、订单、权益、人数、价格和成功状态。

## 原型交付

实现前，按根目录流程生成并确认全量 ImageGen 视觉原型：覆盖 U01–U19 中约 20 个最关键页面/状态，按连续用户流程组织，不必为重复 CRUD、普通 Loading 或结构相同的错误状态单独生图。每个页面规格必须能追溯到对应的批准原型；ImageGen 中不合理的导航、微信控件和状态逻辑在本规格中修正。

实现后，运行时验收必须为 U01–U19 的可达页面和至少 36 个状态生成截图索引；每张截图注明路由、状态、数据来源和是否需要真实设备。真实小程序截图属于运行证据和视觉对照，不得称为实现前的全量视觉原型，也不能替代第二次用户确认。
