#  时间轴介绍

时间轴是飞书人事系统提供的重要特性，它保存了某个对象一条数据的过去、当下、未来的所有信息。每次记录变动都会被识别，每次变动的时候有一个生效的时间点，并且都会生成一个单独的版本来记录这次变动。

以部门为例：
- 2024-1-1 创建了部门A，部门负责人为张三，ID为123
- 2024-1-15 将部门A部门负责人修改为李四，名称A改名为B，；
- 2024-2-1 操作了部门停用；
此时该部门会生成三条时间轴记录，如下：

| 部门ID | 版本ID | 部门名称 | 版本生效时间    | 版本失效时间     | 部门负责人 | 部门启用状态 | 操作                   |
| ---- | ---- | ---- | --------- | ---------- | ----- | ---- | -------------------- |
| 123  | 100    | A    | 2024-1-1  | 2024-1-15  | 张三    | 启用   | 创建了部门A，部门负责人为张三，ID为1 |
| 123  | 200    | ==B==    | 2024-1-15 | 2024-2-1   | ==李四==    | 启用   | 修改了部门负责人为李四          |
| 123  | 300    | B    | 2024-2-1  | 9999-12-31 | 李四    | ==停用==   | 部门A改名为部门B，并操作了部门停用   |
- 如果又对这条记录操作了2025-1-1 启用，则会产生第四条时间轴版本记录400，如下：

| 部门ID | 版本ID | 部门名称 | 版本生效时间    | 版本失效时间     | 部门负责人 | 部门启用状态 | 操作                   |
| ---- | ---- | ---- | --------- | ---------- | ----- | ---- | -------------------- |
| 123  | 100    | A    | 2024-1-1  | 2024-1-15  | 张三    | 启用   | 创建了部门A，部门负责人为张三，ID为1 |
| 123  | 200    | ==B==    | 2024-1-15 | 2024-2-1   | ==李四==    | 启用   | 修改了部门负责人为李四          |
| 123  | 300    | B    | 2024-2-1  | 2025-1-1   | 李四    | ==停用==   | 部门A改名为部门B，并操作了部门停用   |
| 123  | 400    | B    | 2025-1-1  | 9999-12-31 | 李四    | ==启用==   | 操作了2025-1-1 启用       |

# 常见问题

## Q：时间轴对象有哪些常见字段？
- 对象ID：对象唯一标识ID，例如部门ID、任职记录ID等
- 时间轴版本ID：每个时间轴版本的唯一标识ID
- 版本生效时间：每个时间轴版本生效的时间点
- 版本过期时间：每个时间轴版本过期的时间点

## Q：哪些对象支持时间轴功能？
目前支持时间轴的对象有：部门、地点、公司、成本中心、自定义组织、职务、序列、岗位、任职记录、外派记录

## Q：生效日期、失效日期最小单位是什么？
时间轴对象生效、失效日期最小单位到日

## Q：对象停用和删除是一个意思么？如何判断对象停用？
对象删除：被删除对象所有时间轴版本都会被删除，且相关查询接口都无法查询到该记录。
对象停用：指的对象某个对象停用，但是接口可查询到该记录（注意：对象停用可能不代表该对象永久停用，可能未来会出现一个版本再将对象启用）
可以通过查询对象的「启用状态」字段，判断该部门是否停用。

## Q：时间轴对象支持哪些操作类型？
- 对象创建：一条时间轴对象从无到有的过程，比如创建一个新的部门，指定它的生效时间后，它就存在了。
- 对象删除：Delete 全部版本，相当于删除了整个记录的全部历史
- 版本新建：创建一条新的时间轴版本记录
- 版本更正：修改某条时间轴版本记录
- 版本撤销：删除某条时间轴版本记录

注意：大部分开放平台API为了简化时间轴概念，提供了更易用的更新接口，对外可以屏蔽类似版本操作细节。

## Q：我没有时间轴需求，只想知道当下对象是什么内容，并实时同步到系统，如何操作？
大部分对象提供了「当前对象变更」的事件接口，可以通过订阅该接口事件+查询接口同步到系统中。

例如：可以通过订阅[【事件】创建部门](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/events/created)[【事件】更新部门](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/events/updated)[【事件】删除部门](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/events/deleted) 接口，配合 [批量查询部门](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get)获取到所有当前部门最新变更内容。

另外,「根据时间窗口查询变更对象」的查询接口也在建设中，有消息会进一步通知。

## Q：什么时候会触发变更？
- 当前版本特定的字段的修改会触发变更（详情请见文档 [时间轴对象触发变更字段](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/change-field-combing-caused-by-timeline-objects))
- 未来生效的版本到生效时间才会触发变更
- 历史版本的修改，只有在【当前使用版本生效时间，当前时间】这段时间之间插入一个历史版本，并且与当前使用版本字段信息不一致才会触发变更