mdocs 中的「域」是最顶层的逻辑隔离单元。它的设计目标是:
域是存在于数据库逻辑上的虚拟概念,文档通过 domain_id 字段归属到某个域。
| 域类型 | 谁可以进入 | 文档 permission 档位 | 用途 |
|---|---|---|---|
| public(公开域) | 任何人(含未登录访客) | 仅 public_read(3)、public_write(4) | 开放协作,默认域 |
| restricted(受限域) | 域成员 与 创建者 为完整入口;仅被某篇文档 invite 的访客为受限入口(可见相关文档,不能凭此在域内任意新建文档) | 仅 domain_read(1)、domain_write(2) | 团队内部知识库 |
| private(个人域) | 仅域主(domain_id === visitor_id) | 0~4 全部档位均可 | 私人笔记本 |
域类型会约束域内文档可选的 permission 值——public 域不允许 private 档,restricted 域不允许 public 档。这是与之前版本的关键区别。
每篇文档有一个 permission 字段(0~4),定义谁能读、谁能写(在「能接触到该文档」的前提下):
| 数值 | 名称 | 谁可读 | 谁可写 |
|---|---|---|---|
| 0 | private | 仅 owner | 仅 owner |
| 1 | domain_read | 域成员 | 仅 owner |
| 2 | domain_write | 域成员 | 域成员 |
| 3 | public_read | 任何人 | 仅 owner |
| 4 | public_write | 任何人 | 任何人 |
| 域类型 | 允许的文档 permission | 说明 |
|---|---|---|
| public | 仅 public_read(3)、public_write(4) | 公开域内不允许出现「仅域成员」或「仅 owner」的文档 |
| restricted | 仅 domain_read(1)、domain_write(2) | 受限域内文档不暴露给域外任何人;非成员若需访问则靠 invite 叠加 |
| private | 全部 0~4 | 不设档位上限;private 域下文档也可以设为 public_write(4) 对外公开 |
| 域类型 | 新建文档默认 permission |
|---|---|
| private | private(0) |
| restricted | domain_read(1) |
| public | public_read(3) |
在五级权限之上,还有一个独立于档位的 invite 机制:owner 可以为任意一篇文档添加受邀者(read / edit),不受文档当前档位限制。
详见 文档级邀请。
domain_id 等于该访客的 visitor_iddomain_members 表维护多成员)private(0)侧栏树、域下列表会按域准入过滤;若某人持有文档 ID 直链,读权限主要由文档档位 + invite 决定——例如 restricted 域内一篇 domain_read 文档,对非域成员不可读(除非被 invite)。需要更强保密时,请用 private(0) 档。
~/.mdocs/files/docs/{domain_id}/),数据库通过 domain_id 进行查询过滤;跨域「移动」需更新数据库记录并移动磁盘文件操作说明(创建受限域、维护成员、套用模板):见 受限域成员与名单模板。
行为以 mdocs 应用代码与 SQLite schema 为准;随版本迭代本页会跟进。