“多人同时编辑”四个字很容易把系统复杂度藏起来。Odoo 企业版电子表格也是这样。
主要参考:
enterprise/spreadsheet_edition/models/spreadsheet_revision.pyenterprise/spreadsheet_edition/models/ir_websocket.pyenterprise/spreadsheet_edition/models/spreadsheet_cell_thread.pyenterprise/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
评论区