1. 09. 核心模型
石墨文档中台-开发文档
  • 1. 适用范围
  • 00. 概述
    • 石墨文档中台能做什么?
    • 三种典型的业务接入场景
    • 石墨文档中台支持哪些格式?
  • 01. 快速开始
    • 基本概念
    • 场景一:10 分钟创建预览文件
    • 场景二:10 分钟创建协同编辑文件
  • 02. 鉴权与安全
    • 整体概述
    • 签名凭证 Token
    • 签名凭证 Signature
  • 03. 文件预览
    • 整体概述
    • 如何预热预览缓存
    • 如何防盗链
    • 常见问题处理
  • 04. 文件编辑
    • 整体概述
    • 协同文档权限设计
    • 协同文件保存与更新机制
    • 协同文件复制与删除
  • 05. 文件导入导出
    • 整体概述
    • 常见问题处理
  • 06. 石墨前端 API
    • 整体概述
    • 公共 API
      • 公共处理方法
      • 顶部栏定制 HeaderBars
    • 编辑器 API
      • 轻文档
      • 传统文档
      • 表格
      • 幻灯片
      • 表单
      • 应用表格
  • 07. 石墨后端 API
    • 整体概述
    • 错误码说明
    • 文件-预览 API
      • 访问预览文件
      • 创建文件预览缓存
    • 文件-协同编辑文件管理 API
      • 访问协同编辑文件
      • 创建协同文件
      • 创建协同文件副本
      • 删除协同文件
    • 文件-导入导出 API
      • 文件导入
        • 文件导入说明
        • 创建导入任务
        • 获取导入进度
        • 创建导入任务(旧版)
        • 获取导入进度(旧版)
      • 文件导出
        • 文件导出流程
        • 创建导出任务
        • 获取导出进度
    • 文件-表格文件(Excel) API
      • 表格接口参数说明
      • 获取表格内容
      • 获取表格中的评论数
      • 更新表格内容
      • 追加表格内容
      • 删除表格行
      • 新增表格工作表
    • 文件-文稿文件(Word) API
      • 文稿书签说明
      • 读取文稿书签内容
      • 替换文稿书签内容
    • 文件-文档文件(类 Markdown) API
      • 获取文档中的评论列表
    • 文件-应用表格文件(多维表格)API
      • 应用表格列及单元格值结构
      • 应用表格接口调用规则
      • 获取数据表列表
      • 创建数据表
      • 获取字段列表
      • 创建字段
      • 更新字段
      • 删除字段
      • 新增行
      • 获取单行
      • 更新行
      • 删除行
    • 文件-获取额外信息 API
      • 获取文件的纯文本内容
      • 文件纯文本字数统计
      • 获取文件的历史列表
      • 获取文件的版本列表
      • 获取文件内容中所有的 @ 人信息列表
      • 还原文件历史版本
    • 系统管理 API
      • 应用管理
        • 获取应用详情
        • 更新应用回调地址
      • 用户席位管理
        • 用户席位状态说明
        • 获取用户列表和席位状态
        • 激活用户席位​
        • 取消用户席位​
        • 批量设置用户席位
    • 其他 API
      • 上报事件
      • 创建行为历史
      • 推送文件内全部的用户
      • 推送用户全部的 websocket 连接
    • 获取行列表
  • 08. 回调接口(你的应用需实现的接口)
    • 整体概述
    • 文件信息
      • 文件权限说明
      • [重要] 获取文件元信息-协同文档
      • [重要] 获取文件元信息-预览文档
      • 获取当前用户的文件列表
      • 获取文件的协作者列表
      • 获取接入方指定文件的完整访问地址
      • 获取文件元信息-协同文档自动任务(admin)
      • 根据指定用户获取文件元信息-协同文档(admin)
    • 用户信息
      • 批量获取用户信息(admin)
      • [重要] 获取当前用户信息
      • 获取当前用户所在团队信息
      • 获取指定用户信息
      • 获取用户水印信息
      • 获取用户部门路径
      • 批量获取用户信息
    • 团队和部门
      • 特殊部门 ID 说明
      • 获取团队下的成员列表
      • 获取部门信息
      • 获取部门的下级部门节点
      • 获取部门下的成员分页列表
    • 搜索功能
      • 获取与文件相关的用户列表
      • 获取与文件相关的文件列表
      • 按关键字搜索文件和用户列表
    • 事件推送
      • 整体概述
      • 评论(Comment)
        • 轻文档
          • 添加评论
          • 删除评论
          • 结束评论
          • 对于评论的回复评论
        • 表格
          • 添加评论
          • 删除评论
          • 结束评论
          • 对于评论的回复评论
        • 传统文档
          • 对于评论的回复评论
          • 添加评论
          • 更新评论
          • 删除评论
        • 幻灯片
          • 添加评论
          • 删除评论
          • 结束评论
          • 对于评论的回复评论
        • 应用表格
          • 添加评论
          • 对于评论的回复评论
          • 删除评论
      • 讨论(Discussion)
        • 轻文档
          • 发送讨论消息
      • 提及(MentionAt @ 人)
        • 轻文档
          • 在评论中 at
          • 在讨论中 at
          • 在正文中 at
        • 表格
          • 在评论中 at
          • 在正文中 at
        • 传统文档
          • 在评论中 at
          • 在正文中 at
        • 应用表格
          • 在评论中 at
          • 在正文中 at
      • 日期提醒 (DateMention)
        • 轻文档
          • 创建
          • 修改
          • 删除
        • 表格
          • 创建
          • 修改
          • 删除
        • 传统文档
          • 创建
          • 修改
          • 删除
      • 文件内容更新 (FileContent)
        • 文件内容更新
      • 文档协作者协同状态变化 (Collaborator)
        • 文档协作者协同状态变化
      • 文件版本 (Revision)
        • 版本
      • 系统事件 (System)
        • 系统事件
      • 回调请求错误(实验性)
        • 回调请求错误
  • 09. 核心模型
    • 你的应用如何设计应用(app)模型?
    • 你的应用如何设计文件数据模型?
    • 你的应用如何设计通讯录模型?
    • 你的应用系统如何设计文件权限模型?
  • 10. 典型场景方案
    • 云盘场景
    • IM 场景
    • 示例代码仓库
  • 11. 常见问题
    • 访问接口提示 Signature
    • 文件预览或导入报错
    • 首次接入 SDK 报错
    • 文档预览如何做防盗链
    • 复制粘贴、全屏操作不正常
    • 如何实现文档模板功能
    • 文档内容何时保存
    • 移动端不支持 blob 协议导致预览失败
    • 如何实现文件重命名
    • 如何通过接口修改文档内容
    • @人员时如何直接跳转至对应锚点
  1. 09. 核心模型

你的应用如何设计文件数据模型?

一、文件是什么?#

文件模型的核心是 “你的业务系统如何用一套稳定的文件标识和元信息,把业务文件映射到石墨能力上”。
在石墨文档中台里,文件首先是你业务系统中的一个内容实体,在你的业务系统中定义,每个文件拥有的唯一的 fileId(文件 ID) 。它是一个标注类型的的文档对象,可能是轻文档、专业文档、表格、幻灯片、表单、应用表格。
石墨之所以能正确理解这个文件,依赖的是你后端返回的文件基础信息,例如 fileId(文件 ID)、name(文件名)、type(文件类型) 和 permissions(文件权限)。
若处于预览场景,普通 Office 文件在石墨文档中台中也被视为“文件”,但它的 type 固定为 file,更接近一个可下载、可预览的资源,而不是一个可以协同编辑的石墨文档。

二、如何设并定义文件唯一 ID(fileId) ?#

fileId 是接入方定义的业务文件唯一 ID,你可以用数据库表中的唯一自增主键,或者用特定的 唯一 ID 算法 来生成。fileId 至少应该满足几个要求:
稳定性:同一个文件不能变更 fileId。
唯一性:不同文件不能共用一个 fileId。
可回查:你的业务系统后端必须能根据 fileId 找到真实文件记录信息和权限信息。
石墨文档中台和你的业务系统通过 fileId 来确认某个具体的文件。
你的业务系统负责定义文件是谁、属于哪个租户、谁能访问、当前是什么状态。
石墨文档中台负责根据文件类型提供协同编辑、在线预览、导入导出等能力。

三、如何确定文件的使用场景?#

文件模型里最容易混淆的,是“协同编辑文件” 和 “预览文件”。它们虽然都可能通过 fileId 进入石墨,但生命周期和返回结构不同。

1. 预览文件#

如果你只是希望能通过石墨文档中台来实现对本地文件的预览,并不需要对这个文件进行编辑,那么这个文件就是 预览文件。
这类文件的核心是文件源地址可下载、格式可识别、权限允许预览。
你的业务系统保留源文件,例如 .docx、.xlsx、.pptx、.pdf。
石墨文档中台负责下载源文件并生成预览页,不直接进入协同编辑。
文件元信息回调接口返回的石墨文档类型 type 字段值只能是 file。
文件元信息回调接口还需要返回 permissions、creatorId、createdAt、updatedAt、downloadUrl、ext 等字段 。

2. 协同编辑文件#

如果你希望能通过石墨文档中台创建一个空的可以随时编辑的文件,或者希望可以把本地的文件导入到石墨文档中台后,通过石墨文档中台来进行编辑。那么这个文件就是 协同编辑文件。
通过请求石墨文档中台的 POST /sdk/v2/api/files 接口来创建。
文件内容由石墨协同编辑器承载,适合多人实时编辑。
文件元信息回调返回石墨文档类型 type 字段值可选值是 document、documentPro、spreadsheet、presentation、table。
文件元信息回调接口还需要返回 permissions、creatorId、createdAt、updatedAt 等字段。

四、如何定义文件信息回调接口的具体实现?#

文件信息回调接口(GET {endpoint_url}/files/{fileId}) 是文件模型最关键的回调之一。石墨文档会向你的业务系统请求这个接口来查询文件的必要信息,包括:
这个 fileId 对应的文件是否存在?
这是协同编辑文件还是预览文件?
当前用户是否有权读取、编辑、评论、导出这个文件?
文件标题、创建者、更新时间等展示信息是什么?
如果是预览文件,源文件下载地址和扩展名是什么?

你的业务系统需要维护哪些文件信息?#

石墨请求你的业务系统的 [文件信息回调接口](GET {endpoint_url}/files/{fileId})时,你的业务系统需要返回如下字段:

需要定义石墨文档中台需要的文件【基础字段】:#

name: 标题
type: 类型
creatorId: 创建者
createdAt: 创建时间
updatedAt: 更新时间
permissions: 文件权限信息
石墨文档中台强依赖上述字段,你需要根据实际业务场景进行定义,石墨中台会通过 [文件信息回调接口](GET {endpoint_url}/files/{fileId})请求你的业务系统获取到这些数据。

需要定义你的业务系统的文件【内部扩展字段】:#

你的业务系统可能需要定义如下的扩展字段:
tenant: 所属租户。
team: 所属团队。
project: 所属业务空间或项目。
source: 文件来源信息。它是石墨协同文档、外部源文件,还是某个任务流程产物。石墨文档中台不依赖此字段,你的业务系统根据实际需求定义和使用。
其他字段可根据你的业务实际需求灵活补充。
石墨文档中台不依赖这些字段,你的业务系统可以根据你的实际需求来定义和使用。

五、其他需要关注的要点#

业务文件 ID 需要全局唯一。
预览文件如果有版本,建议把版本信息纳入文件记录或 fileId 设计,避免预览缓存和实际文件版本不一致。
不要让协同编辑文件和预览文件共用同一个 fileId,否则回调接口返回结构会互相冲突。
如果是你的业务系统支持多租户,建议保证 fileId 能稳定映射到唯一租户,避免跨租户取错文件。
石墨文档中台没有文件列表概念,文件列表等数据仍然在你的业务系统中自由维护。
石墨文档中台只把 fileId 作为和你的业务系统识别文件的 key,不维护它和租户、权限、文件类型之间的映射关系,这些关系仍然在你的业务系统自由维护。
修改于 2026-06-22 02:43:30
上一页
你的应用如何设计应用(app)模型?
下一页
你的应用如何设计通讯录模型?
Built with