资料文档模块
资料文档模块在通用附件能力上提供完整的业务消费闭环,覆盖文档 CRUD、owner / admin 权限、附件绑定、移除、签名读取和软删除。
权限边界
- 普通用户默认拥有
document:create、document:read、document:update、document:delete,只能管理自己的文档。 admin拥有全部文档权限,可以管理所有文档。- 超级管理员通过
SpecialRolesEnum.SuperAdmin绕过 RBAC 和 owner 校验。
附件绑定
文档附件使用 bizType = document、bizId = document.id,不新增关联表。创建和更新文档时,attachmentIds 表示完整附件集合:
- 未传
attachmentIds:不修改附件。 - 传入空数组:软删除当前所有文档附件。
- 传入非空数组:新增项绑定到文档,不在集合中的旧附件软删除元数据。
文档保存、附件绑定和移除附件的软删除在同一个数据库事务中完成。附件校验失败时,文档写入会回滚。
访问与删除
- 文档附件默认私有;上传者可以通过通用附件更新接口修改
visibility。 - 公开附件可以直接读取;私有附件必须通过文档权限接口签发短时 URL。
- 已绑定文档的附件不能通过通用删除或头像绑定接口操作。
- 删除文档时,文档和当前绑定附件在同一事务中软删除元数据,不删除物理文件。
文档附件在附件管理中心只作为绑定业务展示和跳转目标。已绑定文档的附件不能在附件管理中心修改可见性或软删除,必须回到文档编辑流程处理。
详情页附件操作
文档详情页为每个附件提供复制链接、打开和下载。公开附件直接使用详情返回的绝对化 URL;私有附件先通过 GetDocumentAttachmentSignedUrl(documentId, attachmentId) 获取短时签名地址。下载请求在同一个签名 URL 上增加 download=1,由内容接口返回附件响应,不用 Bearer Token 发起浏览器导航请求。
取消保存产生的未绑定附件不在本文档模块中清理,由附件物理清理任务处理。