轻易云
注册体验

飞书人员主数据同步方案实战:从飞书拉取人员到轻易云数据中枢

· 何海波· 集成方案库· 71 次浏览· 约 4 分钟读完
金蝶云星辰飞书飞书人员同步轻易云数据集成主数据缓存写入空操作金蝶云星辰职员映射组织架构同步

这个策略解决什么问题

飞书人员主数据需要稳定落库并对外提供联查能力。一次实际项目中,我们发现客户最头疼的不是把人员写进 ERP,而是怎么让采购订单、销售订单、报销单这些下游业务单据在「经办人」字段上稳定地拿到飞书人员 ID,再映射到金蝶云星辰职员编码。这条策略的核心正是:从飞书按部门递归拉取人员,写入轻易云数据集成平台的数据集线器,供下游策略通过 _findCollection 或 _mongoQuery 联查。

数据流向与字段映射

数据流向:飞书 → 轻易云集成平台数据中枢(集线器)。

源端调用 /open-apis/contact/v3/users/find_by_department 接口,按部门递归拉取人员;目标端为「写入空操作」,源端响应按 1:1 直接落库至集线器。

关键字段源端(飞书)目标端(集线器)映射类型说明
user_iduser_idcontent.user_idDIRECTmetadata.id,飞书企业内唯一
union_idunion_idcontent.union_idDIRECT跨应用唯一,推荐用于跨系统映射
namenamecontent.nameDIRECTmetadata.number,显示姓名
employee_noemployee_nocontent.employee_noDIRECT工号,常用于与金蝶职员编码对照
emailemailcontent.emailDIRECT个人邮箱
mobilemobilecontent.mobileDIRECT手机号
job_titlejob_titlecontent.job_titleDIRECT职位
statusstatuscontent.statusDIRECT账号状态对象
kd_number{{name}}content.kd_numberTRANSFORM扩展字段,为金蝶职员编码预留

其余字段(avatar、city、country、gender、join_time、open_id、work_station、enterprise_email 等)均按 DIRECT 原样落库。

在轻易云上如何配置

在轻易云数据集成平台上,这条策略的配置有几个典型要点:

Source 配置:api 选 /open-apis/contact/v3/users/find_by_department,effect 选 QUERY,method GET,id 字段取 user_id,number 字段取 name,idCheck 设为 true。请求参数中 department_id=0(从根部门开始)、page_size=50、user_id_type=union_id,dep_strategy 关联「获取飞书部门-OK」策略 ID,平台会自动递归拉取子部门人员。分页 key 配 has_more,数据路径 data.items。

Target 配置:api 选「写入空操作」,effect EXECUTE,request 和 response 都留空。这是轻易云一个很巧妙的机制——目标端不调外部接口,数据直接落库到平台集线器,按 strategy_id 持久化,供其他策略联查。

调度配置:Source 端 crontab 设为 3 2 * * *(每日凌晨 2:03 执行),Target 端 crontab 设为 1 1 1 1 1(占位,不实际触发)。

kd_number 扩展字段:默认取 {{name}},但生产环境一般会改成 _findCollection 从金蝶云星辰职员同步方案的集线器联查,或者用编码表做 COLLECTION 映射,把飞书 user_id/employee_no 稳定映射到星辰职员编码。

实施步骤

第一步:确认部门策略先就绪。「获取飞书人员」强依赖「获取飞书部门-OK」,因为递归人员拉取需要部门 ID 列表。先确认部门策略已稳定运行,集线器里有完整部门树。

第二步:配置并测试单部门拉取。先把 department_id 改成一个具体部门 ID(非 0),dep_strategy 留空,跑一次确认单部门人员拉取正常。这一步容易翻车的地方是飞书 App 的 contacts 权限范围——如果应用只授权了部分部门,根部门 0 拉出来是空的。

第三步:切换到根部门递归模式。把 department_id 改回 0,填入 dep_strategy 关联部门策略 ID,跑全量。观察分页是否走完(has_more 是否正确翻页),集线器落库条数与飞书后台人员数是否一致。

第四步:配置下游联查策略。在采购订单、销售订单等下游策略的人员字段上,用 _findCollection 从本策略集线器按 user_id 或 employee_no 查询,再映射到金蝶云星辰职员编码。

第五步:调度上线与监控告警。crontab 设为每日凌晨 2:03,错开下游业务单据同步窗口。配置集线器落库条数监控和接口成功率告警。

踩坑复盘

踩坑一:权限范围不全。飞书应用的 contacts 权限如果只勾选了部分部门,根部门 0 拉取会返回空数组。稳妥的做法是先在飞书开放平台确认应用可见范围,或者用具体部门 ID 逐个验证。

踩坑二:user_id_type 选错。如果选 open_id,则同一用户在不同应用下 open_id 不同,做跨应用映射会出问题。推荐用 union_id,跨应用唯一,便于和金蝶建立稳定映射关系。

踩坑三:kd_number 直接用 name 映射。生产环境用 {{name}} 作为金蝶职员标识,3 个月后出现重名或人事变动时就会对不上。稳妥的做法是把 kd_number 改为 _findCollection 联查金蝶云星辰职员方案,或维护一张编码映射表做 COLLECTION 映射。

踩坑四:部门策略未先跑就拉人员。部门集线器还没数据时,dep_strategy 递归会拿不到子部门列表,人员拉取不全。实施时务必让部门策略先稳定运行至少一个调度周期。

踩坑五:分页未走完就提前结束。has_more 为 true 时必须继续翻页,否则会丢数据。轻易云平台会自动处理,但人工验证时要确认总条数与飞书后台一致。

适用场景与不适用场景

适用场景:基础资料主数据缓存、跨系统人员编码映射(飞书 ↔ 金蝶职员)、下游业务单据的经办人/审批人字段联查、组织架构同步前的数据准备。

不适用场景:需要实时获取人员变更通知的场景(应改用飞书事件订阅)、需要写入外部业务系统的场景(本策略目标为空操作,不会调外部接口)、部门层级极深且递归性能不可接受的场景(应改为按业务线分批拉取)。

本文为原创内容,转载请注明出处:https://www.qeasy.cloud/insights/solutions/strat-kingdee-cloud-feishu-5933-ok-5b713f7d

评论