# F2F 工作交接

- 文档版本：v1.0
- 最后更新：2026-04-07 21:45:00
- 维护方：前端线程 -> 新线程

## 当前主线状态

### 1. 活动主链
- 活动列表第一刀已完成：
  - 独立活动列表页已接通
  - 支持 `全部 / 体验`
  - 可跳活动详情页
- 活动详情页用户化第一刀已完成：
  - `当前状态`
  - `赛道与版本`
  - CTA 文案更像用户视角
- 准备页用户化第一刀已完成：
  - `当前准备状态`
  - `活动版本摘要`
  - `本局对象预览`
  - 设备准备区
- 结果页 / 历史页活动链衔接已完成一轮小修：
  - 单局结果页支持 `返回活动`
  - 历史结果页支持 `查看单局结果 / 返回活动`

### 2. 地图体验主链
- 地图体验第一刀已完成：
  - 首页有 `地图体验` 入口
  - 地图列表页已接通
  - 地图详情页已接通
  - 地图下默认体验活动可跳现有活动详情主链
- 当前对象模型口径：
  - `Place`
  - `MapAsset`
  - `Event`
  - `defaultExperienceEvents[]`
- 默认体验活动支持：
  - 可挂可不挂
  - 可以不显示在正式活动列表

### 3. 游客模式主链
- 游客模式第一刀已接上：
  - 登录页支持 `游客体验`
  - 游客可进地图列表、地图详情、默认体验活动详情、准备页、公共 `launch`
  - 活动详情 / 准备页无登录态时自动走 `/public/...`
  - 游客结果页优先展示本地结果摘要，不强制跳登录
- 之前 `/public/events/{id}/launch` 有 backend 500 问题，已在协作文档里反馈过。
- 用户最新口头反馈：backend 改后“能进了”，但未再做完整闭环确认。

### 4. 准备页地图预览 V1
- 已完成并可用：
  - 低级别正式瓦片做底图
  - 白膜压背景
  - 只叠 KML 点位，不画腿线，不画数字
  - 点位群尽量充满预览窗口
- 多赛道：
  - 已支持切换赛道后联动预览
  - 当前实现是：
    - 底图与缩放优先走 manifest 正式地图配置
    - 多赛道点位联动优先消费 backend `play.preview`
- 单赛道：
  - 强制回到稳定的 manifest 预览链
- 之前为预览排查加的 backend 临时日志已清理。

### 5. 准备页进入地图链
- 已补齐：
  - 防连点
  - 进度反馈
  - 12 秒超时兜底
  - 返回准备页后清理残留“正在进入地图”视觉状态
- 相关文件：
  - `miniprogram/pages/event-prepare/event-prepare.ts`
  - `miniprogram/pages/event-prepare/event-prepare.wxml`
  - `miniprogram/pages/event-prepare/event-prepare.wxss`

### 6. 恢复与 ongoing
- 冷启动恢复弹窗已取消
- 统一走首页 `进行中的游戏` 区块：
  - `恢复`
  - `放弃`
- `放弃` 会走 `finish(cancelled)`，然后清本地恢复快照并刷新首页

## 最近重要修复

### 1. 单独项目 www 类型检查干扰
- 已在根 `tsconfig.json` 中排除 `www`
- 现在根项目 `npm run typecheck` 可以通过

### 2. 多赛道准备页选择区
- 前面出现过“活动是多赛道，但准备页没有赛道区”的问题
- 已确认根因主要在 backend 发布 release 缺少：
  - `play.assignmentMode`
  - `play.courseVariants`
- 前端做了用户体验兜底：
  - 只要能判断是多赛道活动，即使后端暂未返回可选赛道，也保留赛道区空态提示

### 3. 积分赛误进顺序赛
- 已确认根因在 backend 首页卡片入口配置，不是前端玩法解析
- 当前主链已收口

## 协作文档现状

### 1. 前端 -> 后端
- 文件：`f2b.md`
- 当前版本：v2.5
- 当前重点：
  - `F2B-019`：游客模式公共 `launch` 曾返回 500，backend 文档称已修，但建议新线程视情况确认是否真正闭环

### 2. 前端 -> 总控
- 文件：`f2t.md`
- 当前版本：v2.0
- 说明：
  - 内容已经偏旧，没有完整覆盖游客模式、地图体验、预览 V1、event-prepare 启动防抖等后续改动
  - 如新线程继续与总控同步，建议先更新此文件

## 当前建议优先级

### P0：先做一轮游客模式真回归
建议测试：
1. 登录页点 `游客体验`
2. 进入地图列表
3. 进入地图详情
4. 点默认体验活动
5. 进入活动详情 / 准备页 / 地图
6. 正常完成或主动退出
7. 确认结果页、返回链、退出链是否正常

如果游客主链仍有问题，优先看：
- backend `/public/...` 返回
- `f2b.md` 里的 `F2B-019`

### P1：更新总控协作文档
- 把以下内容同步进 `f2t.md`：
  - 地图体验第一刀
  - 游客模式第一刀
  - 准备页预览 V1
  - 进入地图防抖/进度/超时

### P2：继续后台/运维平台协同
当前已落文档，可继续给 backend / 总控参考：
- `doc/backend/后台游戏定制支持方案.md`
- `doc/backend/后端总体架构与当前执行清单.md`
- `doc/config/最大配置模板后台落地裁剪表.md`
- `doc/gameplay/地图列表与默认体验活动方案.md`
- `doc/gameplay/准备页地图预览方案.md`

## 建议优先阅读文档

### 新线程先看这 6 份
1. `f2f.md`
   - 当前交接总览
2. `f2b.md`
   - 前端写给后端的当前待确认/已确认事项
3. `f2t.md`
   - 前端写给总控的当前状态
4. `doc/gameplay/准备页地图预览方案.md`
   - 准备页预览的设计与边界
5. `doc/gameplay/地图列表与默认体验活动方案.md`
   - 地图体验入口与默认体验活动模型
6. `doc/backend/后端总体架构与当前执行清单.md`
   - 后台/发布/游戏定制的大方向

### 如果要继续做后台协同，再看这 3 份
1. `doc/backend/后台游戏定制支持方案.md`
2. `doc/config/最大配置模板后台落地裁剪表.md`
3. `doc/backend/后端第一阶段执行清单.md`

## 关键文件

### 活动/地图体验
- `miniprogram/pages/home/home.ts`
- `miniprogram/pages/events/events.ts`
- `miniprogram/pages/event/event.ts`
- `miniprogram/pages/event-prepare/event-prepare.ts`
- `miniprogram/pages/experience-maps/experience-maps.ts`
- `miniprogram/pages/experience-map/experience-map.ts`
- `miniprogram/pages/result/result.ts`
- `miniprogram/pages/results/results.ts`

### API / 启动 / 预览
- `miniprogram/utils/backendApi.ts`
- `miniprogram/utils/backendLaunchAdapter.ts`
- `miniprogram/utils/gameLaunch.ts`
- `miniprogram/utils/prepareMapPreview.ts`

### 恢复 / 会话 / 首页 ongoing
- `miniprogram/pages/index/index.ts`
- `miniprogram/pages/home/home.ts`
- `miniprogram/pages/map/map.ts`

## 当前验证结果
- `npm run test:runtime-smoke`：通过
- `npm run typecheck`：通过

## 交接结论
- 当前不是架构失控阶段，主链总体稳定
- 新线程优先不要扩新链
- 先把游客模式做一次完整真回归
- 再决定是继续收产品流，还是回到后台/总控协同线
