PicoBot/skills/lark-okr/references/lark-okr-entities.md
ooodc a7883dbed9 refactor(todo): 重构待办事项管理逻辑及更新状态规则
- 移除 TodoItem 中的 priority、created_at 和 updated_at 字段
- 强制每个任务都必须有唯一 id,且由用户负责生成
- 修改合并模式逻辑,merge=true 下保留未提及的旧任务
- 支持已完成和已取消任务重新激活(状态改回 pending 或 in_progress)
- 禁止 in_progress 状态退回到 pending,必须标记为 completed 或 cancelled
- 优化状态转换校验,允许特定状态间合法切换
- 简化任务变更消息,移除详细的新增/更新/移除统计
- 更新文档和示例,明确 id 必须由用户生成和使用
- 修复和补充测试,增强状态转换和合并模式验证
- 调整任务时间戳生成逻辑,统一使用当前时间及索引
- 该变更提供更合理的任务状态机械及管理模式,提升稳定性和易用性
2026-06-13 09:22:33 +08:00

20 KiB
Raw Blame History

OKR 实体定义

本文档描述飞书 OKR API (/open-apis/okr/v2) 中涉及的核心实体及其字段定义。

实体关系概览

Cycle (用户周期)
  └── Objective (目标)
        ├── KeyResult (关键结果)
        │     └── Indicator (指标)
        │     └── list<Progress> (进展记录列表)
        └── Indicator (指标)
        └── list<Progress> (进展记录列表)

Alignment (对齐关系): Objective ↔ Objective
Category (分类): Objective 的分组标签

Owner (所有者)

所有者标识 OKR 实体的归属,目前仅支持用户类型。

字段 类型 必填 说明
owner_type string 所有者类型,通常为 "user"
user_id string 员工 ID类型由请求参数 user_id_type 决定(默认 open_id

Cycle (用户周期)

用户周期是 OKR 的顶层容器,代表一个时间段内的所有目标与关键结果。

字段 类型 必填 说明
id string 用户周期 ID
create_time string 创建时间
update_time string 更新时间
tenant_cycle_id string 租户周期 ID同一周期在不同用户下有不同的用户周期 ID但租户周期 ID 相同)
owner Owner 所有者
start_time string 周期开始时间。总是从某月1日开始
end_time string 周期结束时间。到某月最后一日结束
cycle_status integer 周期状态,见下表
score number 周期分数,范围 [0, 1],支持一位小数

常用术语

  • 当前周期: 指周期的 start_time/end_time 指周期的 start_time / end_time 所在的时间段与当前时间重叠的周期(即: start_time <= 当前时间 且 end_time >= 当前时间)。 注意:时间重叠是判断当前周期的首要且必须的硬性条件,绝对不能仅仅根据 cycle_status == 1 去判断。 如果有多个符合时间重叠标准的周期,再在这些包含当前时间的周期中过滤,保留周期状态为 default (0) 或 normal (1) 的周期。如果仍然有多个,则选择其中较新的一个。当用户提及“上一个周期”,“下一个周期”一类的表述时,通常是以当前周期为准计算。
  • 所有者: 绝大多数所有者都是用户少部分租户启用了“团队OKR”功能所有者可能是部门。用户身份下只能编辑所有者为当前用户的 OKR。

周期状态 (cycle_status)

常量名 说明
0 default 默认状态
1 normal 生效中
2 invalid 已失效(通常仍可填写)
3 hidden 已隐藏(不可见)

SHORTCUT okr +cycle-list lark-okr-cycle-list.md 获取用户的周期列表,可按时间筛选

API cycles.list


Objective (目标)

目标是 OKR 中的 "O",属于某个用户周期,可包含多个关键结果。

字段 类型 必填 说明
id string 目标 ID
create_time string 创建时间毫秒时间戳shortcut 会将其解析为日期时间
update_time string 更新时间毫秒时间戳shortcut 会将其解析为日期时间
owner Owner 所有者
cycle_id string 所属用户周期 ID
position integer 排序序号,从 1 开始,范围 [1, 100]
content ContentBlock 目标内容(富文本),见 ContentBlock 定义
score number 目标分数,范围 [0, 1],支持一位小数
notes ContentBlock 目标备注(富文本),见 ContentBlock 定义
weight number 目标权重,范围 [0, 1],支持三位小数
deadline string 截止时间毫秒时间戳shortcut 会将其解析为日期时间
category_id string 所属分类 ID

SHORTCUT

  • okr +cycle-detail lark-okr-cycle-detail.md 获取某个用户周期下的全部目标和关键结果。时间相关的字段会以日期时间格式解析

API

  • cycle.objectives.list — 获取周期下的目标列表
  • objectives.get — 获取单个目标
  • cycle.objectives.create — 创建目标
  • objectives.delete — 删除目标
  • cycles.objectives_position — 更新周期下的目标排序
  • cycles.objectives_weight — 更新周期下的目标权重

KeyResult (关键结果)

关键结果是 OKR 中的 "KR",属于某个目标,描述目标的可衡量成果。

字段 类型 必填 说明
id string 关键结果 ID
create_time string 创建时间,毫秒时间戳
update_time string 修改时间,毫秒时间戳
owner Owner 所有者
objective_id string 所属目标 ID
position integer 排序序号,从 1 开始,范围 [1, 100]
content ContentBlock 关键结果内容(富文本),见 ContentBlock 定义
score number 关键结果分数,范围 [0, 1],支持一位小数
weight number 权重,范围 [0, 1],支持三位小数
deadline string 截止时间,毫秒时间戳

API

  • objective.key_results.list — 获取目标下的关键结果列表
  • key_results.get — 获取单个关键结果
  • key_results.patch — 更新关键结果
  • key_results.delete — 删除关键结果
  • objectives.key_results_position — 更新目标下的关键结果排序
  • objectives.key_results_weight — 更新目标下的关键结果权重

Progress (进展记录)

进展记录挂载在目标Objective或关键结果Key Result用于记录阶段性进展内容与进度百分比。每条进展记录包含富文本内容和可选的进度率。

字段 类型 必填 说明
progress_id string 进展记录 IDint64正整数
modify_time string 最后修改时间毫秒时间戳shortcut 会将其解析为日期时间
content ContentBlock 进展内容(富文本),见 ContentBlock 定义
progress_rate ProgressRate 进度率,包含百分比和状态

ProgressRate (进度率)

字段 类型 必填 说明
percent number 进度百分比,范围 [-99999999999, 99999999999]。百分比的取值通常在 0-100但允许超过此范围以表示超额完成或负增长等情况。挂载的目标或关键结果的量化指标不使用百分比单位时以这个字段更新当前值。系统内最多保留两位小数
status string 进度状态shortcut 返回可读字符串,见下表

进度状态 (progress_rate.status)

常量名 说明
normal 正常 进展正常
overdue 逾期 进展逾期
done 已完成 进展已完成

创建进展记录时的参数

创建进展记录时,除了 content 外,还需要指定这条进展记录挂载的对应目标或关键结果:

字段 类型 必填 说明
content ContentBlock 进展内容(富文本),见 ContentBlock 定义
target_id string 目标 ID 或关键结果 ID
target_type integer 目标类型:2=目标Objective3=关键结果KeyResult
progress_rate ProgressRate 进度率,可设置 percentstatus
source_title string 来源标题,用于在 OKR 界面中显示进展来源
source_url string 来源 URL用于在 OKR 界面中显示进展来源链接

SHORTCUT


Indicator (指标)

指标是目标和关键结果的量化度量,可独立挂载在 Objective 或 KeyResult 上。

字段 类型 必填 说明
id string 指标 ID
create_time string 创建时间,毫秒时间戳
update_time string 更新时间,毫秒时间戳
owner Owner 所有者
entity_type integer 所属实体类型:2=目标,3=关键结果
entity_id string 所属实体 ID
indicator_status integer 指标状态,见下表
status_calculate_type integer 状态计算方式,见下表
start_value number 起始值,范围 [-99999999999, 99999999999]
target_value number 目标值,范围 [-99999999999, 99999999999]
current_value number 当前值,范围 [-99999999999, 99999999999]
current_value_calculate_type integer 当前值计算方式,见下表
unit IndicatorUnit 指标单位

修改指南

  • 进度值: 一般指 current_value,单位未提及时通常用百分制计算。
  • 当用户要求量化的更新 OKR 进度时,一般指的就是修改对应 OKR 的 Indicator。
  • OKR 在未设置量化指标时Indicator 的内容为空。如果用户未做特别说明更新进度时可以默认将进度以百分制设置初始值0目标值100unit 参见下文设置为 0/PERCENT

指标状态 (indicator_status)

说明
-1 未定义
0 正常
1 有风险
2 已延期

状态计算方式 (status_calculate_type)

说明 适用范围
0 手动更新 目标、关键结果
1 基于进度和当前时间自动更新 目标、关键结果
2 基于风险最高的关键结果状态更新 仅目标

当前值计算方式 (current_value_calculate_type)

说明 适用范围
0 手动更新 目标、关键结果
1 基于关键结果进度自动更新 仅目标
2 基于拆解的关键结果进度更新 仅关键结果

IndicatorUnit (指标单位)

字段 类型 必填 说明
unit_type integer 单位类型:0=公共,1=自定义
unit_value string 单位值。公共类型可选:PERCENT(百分比)、NONE(无单位)、YUAN(元)、DOLLAR(美元);自定义类型字符长度不超过 5

API

  • key_result.indicators.list — 获取关键结果的指标
  • objective.indicators.list — 获取目标的指标
  • indicators.patch — 更新指标

Alignment (对齐关系)

对齐关系描述两个目标之间的上下对齐。

字段 类型 必填 说明
id string 对齐 ID
create_time string 创建时间,毫秒时间戳
update_time string 更新时间,毫秒时间戳
from_owner Owner 发起对齐的所有者
to_owner Owner 被对齐的所有者
from_entity_type integer 发起对齐的实体类型,固定为 2(目标)
from_entity_id string 发起对齐的实体 ID
to_entity_type integer 被对齐的实体类型,固定为 2(目标)
to_entity_id string 被对齐的实体 ID

API

  • alignments.get — 获取对齐关系
  • alignments.delete — 删除对齐关系
  • objective.alignments.list — 批量获取目标下的对齐关系
  • objective.alignments.create — 创建对齐关系

Category (分类)

分类用于对目标进行分组标记(如"个人 OKR"、"团队 OKR"、"承诺 OKR")等。具体的分类根据租户设置而定。

字段 类型 必填 说明
id string 分类 ID
create_time string 创建时间,毫秒时间戳
update_time string 更新时间,毫秒时间戳
category_type string 分类类型:"person"=个人,"team"=团队
enabled boolean 是否启用
color string 颜色标识:bluepurplewathetturquoiseindigoorange
name CategoryName 多语言名称

CategoryName (分类名称)

字段 类型 必填 说明
zh string 中文名
en string 英文名
ja string 日文名

API categories.list — 批量获取租户设置的分类列表


通用请求参数

以下参数在多数 OKR API 中通用:

参数 位置 必填 默认值 说明
user_id_type query "open_id" 用户 ID 类型:open_id | union_id | user_id
department_id_type query "open_department_id" 部门 ID 类型:open_department_id | department_id
page_size query 10 分页大小,最大 100
page_token query "" 分页键,首页传空串

权限 Scope 说明

Scope 权限类型 说明
okr:okr.content:readonly 读取 OKR 内容
okr:okr.content:writeonly 写入/删除 OKR 内容
okr:okr.period:readonly 读取 OKR 周期
okr:okr.progress:readonly 读取进展记录
okr:okr.progress:writeonly 创建/更新进展记录
okr:okr.progress:delete 删除进展记录
okr:okr.progress.file:upload 上传进展记录图片附件
okr:okr.setting:read 读取 OKR 设置

所有 OKR API 均支持 usertenant(应用)两种 access token 类型。

参考