企业 Spreadsheet 前端

Odoo 企业版电子表格协作为什么不是“多人同时改同一份表”:websocket、revision、snapshot 与 cell thread 讲透

spreadsheet_edition 前端协作体验背后,依赖的不是浏览器自动同步,而是 revision 链、websocket 推送、快照冻结和单元格级讨论。

企业 前端
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 5 阅读

“多人同时编辑”四个字很容易把系统复杂度藏起来。Odoo 企业版电子表格也是这样。

主要参考:

  • enterprise/spreadsheet_edition/models/spreadsheet_revision.py
  • enterprise/spreadsheet_edition/models/ir_websocket.py
  • enterprise/spreadsheet_edition/models/spreadsheet_cell_thread.py
  • enterprise/spreadsheet_edition/controllers/main.py

一、协作不是浏览器自己会同步,而是 revision 在协调事实

电子表格协作的核心不是谁先打字,而是谁提交了哪一版修订、后端是否接受、别的会话如何得知。revision 存在的意义,就是把“正在编辑的状态”变成可比较、可回放、可广播的事实。

二、websocket 负责的是传播,不是裁决

实时通道负责尽快把变更广播到别的会话,但真正决定一版修改是否成立的,仍然是后端 revision 链和对应的持久化规则。

因此 websocket 解决的是“快看到”,revision 解决的是“到底哪版算数”。

三、snapshot 与 cell thread 为什么都重要

  • snapshot 解决“此刻看到的报表状态”要不要被冻结
  • cell thread 解决“讨论附着在哪个具体位置”

如果没有 snapshot,协作页面里的评论和引用会随着内容漂移;如果没有 cell thread,讨论就会退化成整张文档级 chatter,定位能力很差。

四、结论

企业版 Spreadsheet 的前端协作不是单一功能,而是 websocket、revision、snapshot 和 cell-level discussion 共同组成的交互体系。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。