Files
cmr-mini/doc/gameplay/多线程联调协作方式.md

352 lines
7.5 KiB
Markdown
Raw 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.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/` 下的正式文档
后续如果线程数量增加,或者联调链变复杂,优先仍然是:
- 先扩展协作文档约定
- 再决定是否引入更重的流程工具
而不是先把协作体系做复杂。