# 多线程联调协作方式
> 文档版本：v1.1
> 最后更新：2026-04-03 11:15:00


## 目标

当前项目已经进入前后端联调阶段，并且存在多条并行工作线程：

- 前端线程
- 后端线程
- 总控线程

这份文档用于明确三条线程如何协作、各自负责什么，以及如何通过共享文档同步事实，而不是靠口头记忆维持项目状态。

---

## 1. 当前协作模型

当前采用的是：

- 一个代码仓库
- 多条并行线程
- 四份根目录协作文档
- 一名全局维护者负责总览和收口

对应关系：

- 前端线程：推进小程序页面、状态链、模拟器接入、地图与体验层
- 后端线程：推进接口、配置发布、会话生命周期、业务数据模型
- 总控线程：负责全局判断、主线推进、交叉影响评估、文档索引与阶段总结

---

## 2. 当前协作文档的职责

当前跨线程沟通主线改为 4 份文件：

- [t2b.md](D:/dev/cmr-mini/t2b.md)
- [b2t.md](D:/dev/cmr-mini/b2t.md)
- [t2f.md](D:/dev/cmr-mini/t2f.md)
- [f2t.md](D:/dev/cmr-mini/f2t.md)

旧的：

- [f2b.md](D:/dev/cmr-mini/f2b.md)
- [b2f.md](D:/dev/cmr-mini/b2f.md)

默认不再作为主线协作文档继续扩写，只保留历史参考价值。

### 2.1 `t2b.md`

由总控线程维护，写给后端线程，用于记录：

- 当前阶段后端应推进什么
- 本刀范围是什么
- 哪些对象和接口先做

### 2.2 `b2t.md`

由后端线程维护，写给总控线程，用于记录：

- 后端当前已完成什么
- 后端希望确认什么
- 下一步建议是什么

### 2.3 `t2f.md`

由总控线程维护，写给前端线程，用于记录：

- 当前阶段前端应推进什么
- 当前推荐接线顺序是什么
- 哪些字段和页面优先接入

### 2.4 `f2t.md`

由前端线程维护，写给总控线程，用于记录：

- 前端当前已完成什么
- 前端在哪些地方受阻
- 需要总控或后端确认什么

---

## 2.5 当前固定模板

为了避免两份协作文档再次变成长讨论稿，当前约定两边都采用统一结构：

- `待确认`
- `已确认`
- `阻塞`
- `已完成`
- `下一步`

并且每条尽量固定包含：

- 时间
- 提出方
- 当前事实
- 需要对方确认什么
- 当前状态

这样做的目的不是增加格式负担，而是保证：

- 三条线程都能快速扫描
- 总控线程能快速识别优先级
- 已确认事项不会反复讨论

---

## 3. 总控线程的职责

总控线程不替代前后端线程，而是负责：

- 维护全局主线
- 判断当前阶段的优先级
- 识别跨层影响
- 把重要结论收进正式文档
- 在代码、文档、配置之间建立一致性

### 3.1 总控线程要看的信息源

总控线程至少持续关注：

- [readme-develop.md](D:/dev/cmr-mini/readme-develop.md)
- [文档索引.md](D:/dev/cmr-mini/doc/文档索引.md)
- [t2b.md](D:/dev/cmr-mini/t2b.md)
- [b2t.md](D:/dev/cmr-mini/b2t.md)
- [t2f.md](D:/dev/cmr-mini/t2f.md)
- [f2t.md](D:/dev/cmr-mini/f2t.md)

以及当前代码事实：

- `miniprogram/`
- `backend/`
- `tools/mock-gps-sim/`

### 3.2 总控线程不应该做的事

总控线程不应该：

- 抢写前端线程的 [f2t.md](D:/dev/cmr-mini/f2t.md)
- 抢写后端线程的 [b2t.md](D:/dev/cmr-mini/b2t.md)
- 把临时讨论直接当作正式契约
- 在两边尚未确认时擅自“替双方拍板”

总控线程只维护：

- 全局状态
- 正式设计文档
- 阶段结论

### 3.3 当前总控线程的附加约束

总控线程需要持续做两件事：

- 读取并理解 [b2t.md](D:/dev/cmr-mini/b2t.md) 和 [f2t.md](D:/dev/cmr-mini/f2t.md) 的最新事实
- 把已经收敛的跨线程结论回写到 `doc/` 正式文档

也就是说，总控线程不是“第三份协作文档”，而是：

- 主线维护者
- 正式知识沉淀者
- 交叉影响判断者

---

---

## 4. 推荐协作顺序

当前建议三条线程按下面这条链协作：

```text
前端/后端各自推进
-> 总控通过 t2b / t2f 下发阶段性要求
-> 前后端通过 b2t / f2t 回写事实与阻塞
-> 总控线程读取四份协作文档
-> 判断是否需要：
   - 调整主线优先级
   - 更新正式方案文档
   - 修正索引与阶段总结
-> 再继续推进代码
```

也就是说：

- `t2b / b2t / t2f / f2t` 是协作事实层
- `doc/` 是正式知识层
- 代码是最终实现层

---

## 5. 文档分层原则

为了避免信息再次散掉，建议始终遵守下面的分层：

### 5.1 协作文档

位于仓库根目录：

- [t2b.md](D:/dev/cmr-mini/t2b.md)
- [b2t.md](D:/dev/cmr-mini/b2t.md)
- [t2f.md](D:/dev/cmr-mini/t2f.md)
- [f2t.md](D:/dev/cmr-mini/f2t.md)

特点：

- 强时效
- 以联调事实为主
- 可频繁修改
- 不要求体系化
- 采用统一固定结构
- 不承担正式设计说明职责

### 5.2 正式文档

位于 `doc/`：

- 配置
- 玩法
- 动画
- 体验
- 渲染
- 调试
- 网关

特点：

- 结构化
- 可长期维护
- 只收已经收敛的结论

### 5.3 代码与配置

最终行为以代码和线上配置为准。

如果出现：

- 协作文档和正式文档不一致
- 正式文档和代码不一致

优先级应该是：

```text
代码 / 运行结果
> 正式文档
> 协作文档
```

然后由总控线程负责把文档补齐。

---

## 6. 当前适合这种方式的原因

这个项目已经同时存在多条主线：

- 小程序前台
- 后端业务接口
- 配置发布链
- 模拟器
- H5 详情页
- 规则和运行时

如果所有讨论都只堆在一个线程里，会出现：

- 信息丢失
- 职责不清
- 已确认结论反复讨论
- 线程之间互相覆盖

采用当前这种方式的好处是：

- 前端线程可以只关心前端接入和用户体验
- 后端线程可以只关心接口和业务语义
- 总控线程能持续维护全局一致性

---

## 7. 当前项目的推荐工作法

### 7.1 前端线程

优先维护：

- 页面
- 宿主层
- 模拟器接入
- 交互和体验

并把当前事实、阻塞和待确认事项回写到 [f2t.md](D:/dev/cmr-mini/f2t.md)。

### 7.2 后端线程

优先维护：

- API
- 会话语义
- release / manifest / config 发布链
- workbench / dev tools

并把当前事实、完成项和待确认事项回写到 [b2t.md](D:/dev/cmr-mini/b2t.md)。

### 7.3 总控线程

优先维护：

- 全局文档索引
- 阶段总结
- 主线优先级
- 正式架构文档
- 跨层决策

---

## 8. 一句话约定

当前项目的协作方式正式定为：

> 总控线程通过 [t2b.md](D:/dev/cmr-mini/t2b.md) / [t2f.md](D:/dev/cmr-mini/t2f.md) 下发阶段要求，前后端线程通过 [b2t.md](D:/dev/cmr-mini/b2t.md) / [f2t.md](D:/dev/cmr-mini/f2t.md) 回写事实，总控线程再维护全局主线、正式文档和阶段结论。

这样做的目标不是增加文书工作，而是：

- 让并行开发不串线
- 让重要结论沉淀下来
- 让总控线程始终知道项目全貌

---

## 9. 当前执行状态

截至当前阶段，这套方式已经进入实际执行状态：

- 总控线程维护：
  - [t2b.md](D:/dev/cmr-mini/t2b.md)
  - [t2f.md](D:/dev/cmr-mini/t2f.md)
- 执行线程回写：
  - [b2t.md](D:/dev/cmr-mini/b2t.md)
  - [f2t.md](D:/dev/cmr-mini/f2t.md)
- 旧的 [f2b.md](D:/dev/cmr-mini/f2b.md) / [b2f.md](D:/dev/cmr-mini/b2f.md) 仅保留历史参考
- 总控线程负责维护 [文档索引.md](D:/dev/cmr-mini/doc/文档索引.md) 和 `doc/` 下的正式文档

后续如果线程数量增加，或者联调链变复杂，优先仍然是：

- 先扩展协作文档约定
- 再决定是否引入更重的流程工具

而不是先把协作体系做复杂。


